{"version":3,"file":"static/js/main.c43fe152.js","mappings":"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CE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINmzE,IAAK,CACHx6B,IAAK,EACL34C,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,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AaA,EAAe,WAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,WAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,WACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,UAAY,WACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,WAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,WACnEA,EAAe,WAAY,YAAaA,EAAe,WAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,YACnEA,EAAe,UAAY,YAAaA,EAAe,UAAY,WACnEA,EAAe,UAAY,WAAaA,EAAe,UAAY,YACnEA,EAAe,WAAY,WAAaA,EAAe,WAA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,QAAU,EACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,MACV,SAAU,EACV,SAAU,IACV,OAAS,SACT,QAAU,SACV,QAAU,EACV,QAAU,SACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,IACV,QAAU,EACV,QAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAW,SACX,SAAW,MACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,OAEf,CACI,EAAK,WACL,MAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,KACT,OAAS,KACT,OAAS,WACT,MAAQ,WACR,MAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,WACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,QACT,QAAS,WACT,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,EACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,QACV,QAAU,WACV,QAAU,QACV,QAAU,GACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,EACV,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,WACV,QAAU,GACV,QAAU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","sources":["sensordecoders/BREEZE-v1.1Uplink.js","sensordecoders/CHICKADEE-v2.3Uplink.js","sensordecoders/COMFORT-VIVID-v2.2Uplink.js","sensordecoders/COMFORT-VIVID-v3.1Uplink.js","sensordecoders/COMFORT-VIVID-v4.0Uplink.js","sensordecoders/COMFORT-VIVID-v4.2Uplink.js","sensordecoders/COMFORT-VIVID-v4.3Uplink.js","sensordecoders/Industrial-Transceiver-1wire-v1.11Uplink.js","sensordecoders/Industrial-Transceiver-v2.1Uplink.js","sensordecoders/KIWI-CLOVER-v2.0Uplink.js","sensordecoders/MEMO-(demo)Uplink.js","sensordecoders/ORCA-v0.14Uplink.js","sensordecoders/ORCA-v1.0Uplink.js","sensordecoders/SEAL-v1Uplink.js","sensordecoders/SPARROW-PELICAN-v2.8Uplink.js","sensordecoders/SPARROW-PELICAN-v3.1Uplink.js","sensordecoders/STORK-v2.0Uplink.js","sensordecoders/STORK-v2.1Uplink.js","sensordecoders/STORK-v2.2Uplink.js","sensordecoders/TUNDRA-v2.1Uplink.js","sensordecoders/_default-decoder.js","sensordecoders/eBeat-v1.0Uplink.js","sensordecoders/eBeat-v1.xUplink.js","sensordecoders/eDoctor-v0.15Uplink.js","sensordecoders/eDoctor-v1.2Uplink.js","sensordecoders/eDoctor-v1Uplink.js","sensorencoders/BREEZE-v1.1Downlink.js","sensorencoders/CHICKADEE-v2.3Downlink.js","sensorencoders/COMFORT-VIVID-v2.2Downlink.js","sensorencoders/COMFORT-VIVID-v3.1Downlink.js","sensorencoders/COMFORT-VIVID-v4.0Downlink.js","sensorencoders/COMFORT-VIVID-v4.2Downlink.js","sensorencoders/COMFORT-VIVID-v4.3Downlink.js","sensorencoders/Industrial-Transceiver-1wire-v1.11Downlink.js","sensorencoders/Industrial-Transceiver-v2.1Downlink.js","sensorencoders/KIWI-CLOVER-v2.0Downlink.js","sensorencoders/MEMO-(demo)Downlink.js","sensorencoders/ORCA-v0.14Downlink.js","sensorencoders/ORCA-v1.0Downlink.js","sensorencoders/SEAL-v1Downlink.js","sensorencoders/SPARROW-PELICAN-v2.8Downlink.js","sensorencoders/SPARROW-PELICAN-v3.1Downlink.js","sensorencoders/STORK-v2.0Downlink.js","sensorencoders/STORK-v2.1Downlink.js","sensorencoders/STORK-v2.2Downlink.js","sensorencoders/TUNDRA-v2.1Downlink.js","sensorencoders/eBeat-v1.0Downlink.js","sensorencoders/eBeat-v1.xDownlink.js","sensorencoders/eDoctor-v0.15Downlink.js","sensorencoders/eDoctor-v1.2Downlink.js","sensorencoders/eDoctor-v1Downlink.js","../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/@emotion/cache/node_modules/stylis/src/Utility.js","../node_modules/@emotion/cache/node_modules/stylis/src/Tokenizer.js","../node_modules/@emotion/cache/node_modules/stylis/src/Enum.js","../node_modules/@emotion/cache/node_modules/stylis/src/Serializer.js","../node_modules/@emotion/cache/node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/@emotion/cache/node_modules/stylis/src/Middleware.js","../node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@mui/icons-material/AccessTime.js","../node_modules/@mui/icons-material/ArrowForwardIos.js","../node_modules/@mui/icons-material/Info.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/DefaultPropsProvider/DefaultPropsProvider.js","../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../node_modules/@mui/material/SvgIcon/SvgIcon.js","../node_modules/@mui/material/node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../node_modules/@mui/material/node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js","../node_modules/@mui/material/node_modules/@mui/styled-engine/index.js","../node_modules/@mui/material/node_modules/@mui/system/colorManipulator.js","../node_modules/@mui/material/node_modules/@mui/system/createStyled.js","../node_modules/@mui/material/node_modules/@mui/system/esm/DefaultPropsProvider/DefaultPropsProvider.js","../node_modules/@mui/material/node_modules/@mui/system/esm/breakpoints.js","../node_modules/@mui/material/node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/material/node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../node_modules/@mui/material/node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/material/node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/material/node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/material/node_modules/@mui/system/esm/merge.js","../node_modules/@mui/material/node_modules/@mui/system/esm/spacing.js","../node_modules/@mui/material/node_modules/@mui/system/esm/memoize.js","../node_modules/@mui/material/node_modules/@mui/system/esm/style.js","../node_modules/@mui/material/node_modules/@mui/system/esm/compose.js","../node_modules/@mui/material/node_modules/@mui/system/esm/borders.js","../node_modules/@mui/material/node_modules/@mui/system/esm/cssGrid.js","../node_modules/@mui/material/node_modules/@mui/system/esm/palette.js","../node_modules/@mui/material/node_modules/@mui/system/esm/sizing.js","../node_modules/@mui/material/node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/material/node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/material/node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/material/node_modules/@mui/system/useThemeWithoutDefault.js","../node_modules/@mui/material/styles/createMixins.js","../node_modules/@mui/material/colors/common.js","../node_modules/@mui/material/colors/grey.js","../node_modules/@mui/material/colors/purple.js","../node_modules/@mui/material/colors/red.js","../node_modules/@mui/material/colors/orange.js","../node_modules/@mui/material/colors/blue.js","../node_modules/@mui/material/colors/lightBlue.js","../node_modules/@mui/material/colors/green.js","../node_modules/@mui/material/styles/createPalette.js","../node_modules/@mui/material/styles/createTypography.js","../node_modules/@mui/material/styles/shadows.js","../node_modules/@mui/material/styles/zIndex.js","../node_modules/@mui/material/styles/createTheme.js","../node_modules/@mui/material/styles/createTransitions.js","../node_modules/@mui/material/styles/defaultTheme.js","../node_modules/@mui/material/styles/identifier.js","../node_modules/@mui/material/styles/rootShouldForwardProp.js","../node_modules/@mui/material/styles/slotShouldForwardProp.js","../node_modules/@mui/material/styles/styled.js","../node_modules/@mui/material/utils/capitalize.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/debounce.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement/isMuiElement.js","../node_modules/@mui/material/utils/ownerDocument.js","../node_modules/@mui/material/utils/ownerWindow.js","../node_modules/@mui/material/utils/useControlled.js","../node_modules/@mui/material/utils/useEnhancedEffect.js","../node_modules/@mui/material/utils/useEventCallback.js","../node_modules/@mui/material/utils/useForkRef.js","../node_modules/@mui/material/utils/useId.js","../node_modules/@mui/utils/esm/useIsFocusVisible/useIsFocusVisible.js","../node_modules/@mui/material/utils/useIsFocusVisible.js","../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/@mui/utils/esm/clamp/clamp.js","../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../node_modules/@mui/utils/esm/createChainedFunction/createChainedFunction.js","../node_modules/@mui/utils/esm/debounce/debounce.js","../node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../node_modules/@mui/utils/esm/getDisplayName/getDisplayName.js","../node_modules/@mui/utils/esm/ownerDocument/ownerDocument.js","../node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js","../node_modules/@mui/utils/esm/resolveProps/resolveProps.js","../node_modules/@mui/utils/esm/setRef/setRef.js","../node_modules/@mui/utils/esm/useControlled/useControlled.js","../node_modules/@mui/utils/esm/useEnhancedEffect/useEnhancedEffect.js","../node_modules/@mui/utils/esm/useEventCallback/useEventCallback.js","../node_modules/@mui/utils/esm/useForkRef/useForkRef.js","../node_modules/@mui/utils/esm/useId/useId.js","../node_modules/@mui/utils/esm/useLazyRef/useLazyRef.js","../node_modules/@mui/utils/esm/useOnMount/useOnMount.js","../node_modules/@mui/utils/esm/useTimeout/useTimeout.js","../node_modules/asn1.js/lib/asn1.js","../node_modules/asn1.js/lib/asn1/api.js","../node_modules/asn1.js/lib/asn1/base/buffer.js","../node_modules/asn1.js/lib/asn1/base/index.js","../node_modules/asn1.js/lib/asn1/base/node.js","../node_modules/asn1.js/lib/asn1/base/reporter.js","../node_modules/asn1.js/lib/asn1/constants/der.js","../node_modules/asn1.js/lib/asn1/constants/index.js","../node_modules/asn1.js/lib/asn1/decoders/der.js","../node_modules/asn1.js/lib/asn1/decoders/index.js","../node_modules/asn1.js/lib/asn1/decoders/pem.js","../node_modules/asn1.js/lib/asn1/encoders/der.js","../node_modules/asn1.js/lib/asn1/encoders/index.js","../node_modules/asn1.js/lib/asn1/encoders/pem.js","../node_modules/asn1.js/node_modules/bn.js/lib/bn.js","../node_modules/base64-js/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/brorand/index.js","../node_modules/browserify-aes/aes.js","../node_modules/browserify-aes/authCipher.js","../node_modules/browserify-aes/browser.js","../node_modules/browserify-aes/decrypter.js","../node_modules/browserify-aes/encrypter.js","../node_modules/browserify-aes/ghash.js","../node_modules/browserify-aes/incr32.js","../node_modules/browserify-aes/modes/cbc.js","../node_modules/browserify-aes/modes/cfb.js","../node_modules/browserify-aes/modes/cfb1.js","../node_modules/browserify-aes/modes/cfb8.js","../node_modules/browserify-aes/modes/ctr.js","../node_modules/browserify-aes/modes/ecb.js","../node_modules/browserify-aes/modes/index.js","../node_modules/browserify-aes/modes/ofb.js","../node_modules/browserify-aes/streamCipher.js","../node_modules/browserify-cipher/browser.js","../node_modules/browserify-des/index.js","../node_modules/browserify-des/modes.js","../node_modules/browserify-rsa/index.js","../node_modules/browserify-sign/algos.js","../node_modules/browserify-sign/browser/index.js","../node_modules/browserify-sign/browser/sign.js","../node_modules/browserify-sign/browser/verify.js","../node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","../node_modules/buffer-xor/index.js","../node_modules/buffer/index.js","../node_modules/cipher-base/index.js","../node_modules/create-ecdh/browser.js","../node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","../node_modules/create-hash/browser.js","../node_modules/create-hash/md5.js","../node_modules/create-hmac/browser.js","../node_modules/create-hmac/legacy.js","../node_modules/crypto-browserify/index.js","../node_modules/date-fns/_lib/format/longFormatters/index.js","../node_modules/des.js/lib/des.js","../node_modules/des.js/lib/des/cbc.js","../node_modules/des.js/lib/des/cipher.js","../node_modules/des.js/lib/des/des.js","../node_modules/des.js/lib/des/ede.js","../node_modules/des.js/lib/des/utils.js","../node_modules/diffie-hellman/browser.js","../node_modules/diffie-hellman/lib/dh.js","../node_modules/diffie-hellman/lib/generatePrime.js","../node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","../node_modules/elliptic/lib/elliptic.js","../node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/elliptic/lib/elliptic/curve/edwards.js","../node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/elliptic/lib/elliptic/curve/mont.js","../node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/elliptic/lib/elliptic/curves.js","../node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/elliptic/lib/elliptic/eddsa/index.js","../node_modules/elliptic/lib/elliptic/eddsa/key.js","../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../node_modules/elliptic/lib/elliptic/utils.js","../node_modules/elliptic/node_modules/bn.js/lib/bn.js","../node_modules/events/events.js","../node_modules/evp_bytestokey/index.js","../node_modules/hash-base/index.js","../node_modules/hash-base/node_modules/readable-stream/errors-browser.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/hash-base/node_modules/readable-stream/readable-browser.js","../node_modules/hash.js/lib/hash.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/utils.js","../node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/ieee754/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/lodash.debounce/index.js","../node_modules/lodash.merge/index.js","../node_modules/lora-packet/node_modules/aes-cmac/lib/AesCmac.js","../node_modules/lora-packet/node_modules/aes-cmac/lib/BufferTools.js","../node_modules/lora-packet/node_modules/crypto-js/aes.js","../node_modules/lora-packet/node_modules/crypto-js/cipher-core.js","../node_modules/lora-packet/node_modules/crypto-js/core.js","../node_modules/lora-packet/node_modules/crypto-js/enc-base64.js","../node_modules/lora-packet/node_modules/crypto-js/enc-base64url.js","../node_modules/lora-packet/node_modules/crypto-js/enc-utf16.js","../node_modules/lora-packet/node_modules/crypto-js/evpkdf.js","../node_modules/lora-packet/node_modules/crypto-js/format-hex.js","../node_modules/lora-packet/node_modules/crypto-js/hmac.js","../node_modules/lora-packet/node_modules/crypto-js/index.js","../node_modules/lora-packet/node_modules/crypto-js/lib-typedarrays.js","../node_modules/lora-packet/node_modules/crypto-js/md5.js","../node_modules/lora-packet/node_modules/crypto-js/mode-cfb.js","../node_modules/lora-packet/node_modules/crypto-js/mode-ctr-gladman.js","../node_modules/lora-packet/node_modules/crypto-js/mode-ctr.js","../node_modules/lora-packet/node_modules/crypto-js/mode-ecb.js","../node_modules/lora-packet/node_modules/crypto-js/mode-ofb.js","../node_modules/lora-packet/node_modules/crypto-js/pad-ansix923.js","../node_modules/lora-packet/node_modules/crypto-js/pad-iso10126.js","../node_modules/lora-packet/node_modules/crypto-js/pad-iso97971.js","../node_modules/lora-packet/node_modules/crypto-js/pad-nopadding.js","../node_modules/lora-packet/node_modules/crypto-js/pad-zeropadding.js","../node_modules/lora-packet/node_modules/crypto-js/pbkdf2.js","../node_modules/lora-packet/node_modules/crypto-js/rabbit-legacy.js","../node_modules/lora-packet/node_modules/crypto-js/rabbit.js","../node_modules/lora-packet/node_modules/crypto-js/rc4.js","../node_modules/lora-packet/node_modules/crypto-js/ripemd160.js","../node_modules/lora-packet/node_modules/crypto-js/sha1.js","../node_modules/lora-packet/node_modules/crypto-js/sha224.js","../node_modules/lora-packet/node_modules/crypto-js/sha256.js","../node_modules/lora-packet/node_modules/crypto-js/sha3.js","../node_modules/lora-packet/node_modules/crypto-js/sha384.js","../node_modules/lora-packet/node_modules/crypto-js/sha512.js","../node_modules/lora-packet/node_modules/crypto-js/tripledes.js","../node_modules/lora-packet/node_modules/crypto-js/x64-core.js","../node_modules/lora-packet/src/lib.ts","../node_modules/lora-packet/src/lib/LoraPacket.ts","../node_modules/lora-packet/src/lib/crypto.ts","../node_modules/lora-packet/src/lib/mic.ts","../node_modules/lora-packet/src/lib/util.ts","../node_modules/md5.js/index.js","../node_modules/miller-rabin/lib/mr.js","../node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","../node_modules/minimalistic-assert/index.js","../node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/papaparse/papaparse.min.js","../node_modules/parse-asn1/asn1.js","../node_modules/parse-asn1/certificate.js","../node_modules/parse-asn1/fixProc.js","../node_modules/parse-asn1/index.js","../node_modules/pbkdf2/browser.js","../node_modules/pbkdf2/lib/async.js","../node_modules/pbkdf2/lib/default-encoding.js","../node_modules/pbkdf2/lib/precondition.js","../node_modules/pbkdf2/lib/sync-browser.js","../node_modules/pbkdf2/lib/to-buffer.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/public-encrypt/browser.js","../node_modules/public-encrypt/mgf.js","../node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","../node_modules/public-encrypt/privateDecrypt.js","../node_modules/public-encrypt/publicEncrypt.js","../node_modules/public-encrypt/withPublic.js","../node_modules/public-encrypt/xor.js","../node_modules/randombytes/browser.js","../node_modules/randomfill/browser.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/ripemd160/index.js","../node_modules/safe-buffer/index.js","../node_modules/safer-buffer/safer.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/sha.js/hash.js","../node_modules/sha.js/index.js","../node_modules/sha.js/sha.js","../node_modules/sha.js/sha1.js","../node_modules/sha.js/sha224.js","../node_modules/sha.js/sha256.js","../node_modules/sha.js/sha384.js","../node_modules/sha.js/sha512.js","../node_modules/stream-browserify/index.js","../node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/util-deprecate/browser.js","sensordecoders|sync|/.js$","sensorencoders|sync|/.js$","sensormodels|sync|/.json$","../src|sync|/^/.//sensordecoders.*$","../src|sync|/^/.//sensorencoders.*$","../src|sync|/^/.//sensormodels.*$","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/clsx/dist/clsx.mjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@remix-run/router/history.ts","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts","../node_modules/react-router/lib/use-sync-external-store-shim/index.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/index.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/@mui/material/node_modules/@mui/private-theming/useTheme/ThemeContext.js","../node_modules/@mui/material/node_modules/@mui/private-theming/useTheme/useTheme.js","../node_modules/@mui/material/node_modules/@mui/private-theming/ThemeProvider/nested.js","../node_modules/@mui/material/node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","../node_modules/@mui/material/node_modules/@mui/system/esm/useThemeWithoutDefault.js","../node_modules/@mui/material/node_modules/@mui/system/esm/RtlProvider/index.js","../node_modules/@mui/material/node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","../node_modules/@mui/material/styles/ThemeProvider.js","../node_modules/@mui/material/node_modules/@mui/system/esm/useTheme.js","../node_modules/@mui/material/node_modules/@mui/system/esm/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/CssBaseline/CssBaseline.js","palette.js","context/AuthContext.jsx","../node_modules/@mui/material/styles/getOverlayAlpha.js","../node_modules/@mui/material/Paper/paperClasses.js","../node_modules/@mui/material/Paper/Paper.js","../node_modules/@mui/material/AppBar/appBarClasses.js","../node_modules/@mui/material/AppBar/AppBar.js","../node_modules/@mui/material/Toolbar/toolbarClasses.js","../node_modules/@mui/material/Toolbar/Toolbar.js","../node_modules/@mui/material/Typography/typographyClasses.js","../node_modules/@mui/material/Typography/Typography.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@mui/material/ButtonBase/Ripple.js","../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../node_modules/@mui/material/ButtonBase/TouchRipple.js","../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../node_modules/@mui/material/ButtonBase/ButtonBase.js","../node_modules/@mui/material/Button/buttonClasses.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js","../node_modules/@mui/material/Button/Button.js","components/Header/Header.jsx","../node_modules/@mui/utils/esm/isHostComponent/isHostComponent.js","../node_modules/@mui/utils/esm/appendOwnerState/appendOwnerState.js","../node_modules/@mui/utils/esm/extractEventHandlers/extractEventHandlers.js","../node_modules/@mui/utils/esm/omitEventHandlers/omitEventHandlers.js","../node_modules/@mui/utils/esm/mergeSlotProps/mergeSlotProps.js","../node_modules/@mui/utils/esm/resolveComponentProps/resolveComponentProps.js","../node_modules/@mui/utils/esm/useSlotProps/useSlotProps.js","../node_modules/@mui/material/Snackbar/useSnackbar.js","../node_modules/@mui/material/ClickAwayListener/ClickAwayListener.js","../node_modules/@mui/material/styles/useTheme.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@mui/material/transitions/utils.js","../node_modules/@mui/material/Grow/Grow.js","../node_modules/@mui/material/SnackbarContent/snackbarContentClasses.js","../node_modules/@mui/material/SnackbarContent/SnackbarContent.js","../node_modules/@mui/material/Snackbar/snackbarClasses.js","../node_modules/@mui/material/Snackbar/Snackbar.js","../node_modules/@mui/material/utils/useSlot.js","../node_modules/@mui/material/Alert/alertClasses.js","../node_modules/@mui/material/IconButton/iconButtonClasses.js","../node_modules/@mui/material/IconButton/IconButton.js","../node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js","../node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js","../node_modules/@mui/material/internal/svg-icons/ErrorOutline.js","../node_modules/@mui/material/internal/svg-icons/InfoOutlined.js","../node_modules/@mui/material/internal/svg-icons/Close.js","../node_modules/@mui/material/Alert/Alert.js","context/NotificationContext.jsx","components/Notification/index.jsx","components/layout/MainLayout.jsx","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@mui/material/node_modules/@mui/system/esm/createBox.js","../node_modules/@mui/material/Box/boxClasses.js","../node_modules/@mui/material/Box/Box.js","../node_modules/@mui/material/InputBase/utils.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/formControlClasses.js","../node_modules/@mui/material/FormControl/FormControl.js","../node_modules/@mui/material/List/ListContext.js","../node_modules/@mui/material/Divider/dividerClasses.js","../node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","../node_modules/@mui/material/ListItemText/listItemTextClasses.js","../node_modules/@mui/material/MenuItem/menuItemClasses.js","../node_modules/@mui/material/MenuItem/MenuItem.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@mui/material/List/listClasses.js","../node_modules/@mui/material/List/List.js","../node_modules/@mui/utils/esm/getScrollbarSize/getScrollbarSize.js","../node_modules/@mui/material/utils/getScrollbarSize.js","../node_modules/@mui/material/MenuList/MenuList.js","../node_modules/@mui/material/Unstable_TrapFocus/FocusTrap.js","../node_modules/@mui/material/Portal/Portal.js","../node_modules/@mui/material/Fade/Fade.js","../node_modules/@mui/material/Backdrop/backdropClasses.js","../node_modules/@mui/material/Backdrop/Backdrop.js","../node_modules/@mui/material/Modal/ModalManager.js","../node_modules/@mui/material/Modal/useModal.js","../node_modules/@mui/material/Modal/modalClasses.js","../node_modules/@mui/material/Modal/Modal.js","../node_modules/@mui/material/Popover/popoverClasses.js","../node_modules/@mui/material/Popover/Popover.js","../node_modules/@mui/material/Menu/menuClasses.js","../node_modules/@mui/material/Menu/Menu.js","../node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","../node_modules/@mui/material/NativeSelect/NativeSelectInput.js","../node_modules/@mui/material/Select/selectClasses.js","../node_modules/@mui/material/Select/SelectInput.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","../node_modules/@mui/material/TextareaAutosize/TextareaAutosize.js","../node_modules/@mui/material/InputBase/inputBaseClasses.js","../node_modules/@mui/material/InputBase/InputBase.js","../node_modules/@mui/material/Input/inputClasses.js","../node_modules/@mui/material/Input/Input.js","../node_modules/@mui/material/FilledInput/filledInputClasses.js","../node_modules/@mui/material/FilledInput/FilledInput.js","../node_modules/@mui/material/OutlinedInput/NotchedOutline.js","../node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","../node_modules/@mui/material/OutlinedInput/OutlinedInput.js","../node_modules/@mui/material/Select/Select.js","../node_modules/@mui/utils/esm/usePreviousProps/usePreviousProps.js","../node_modules/@mui/material/useAutocomplete/useAutocomplete.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@mui/material/Popper/popperClasses.js","../node_modules/@mui/material/Popper/BasePopper.js","../node_modules/@mui/material/Popper/Popper.js","../node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","../node_modules/@mui/material/ListSubheader/ListSubheader.js","../node_modules/@mui/material/internal/svg-icons/Cancel.js","../node_modules/@mui/material/Chip/chipClasses.js","../node_modules/@mui/material/Chip/Chip.js","../node_modules/@mui/material/Autocomplete/autocompleteClasses.js","../node_modules/@mui/material/Autocomplete/Autocomplete.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/InputLabel/InputLabel.js","../node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","../node_modules/@mui/material/FormHelperText/FormHelperText.js","../node_modules/@mui/material/TextField/textFieldClasses.js","../node_modules/@mui/material/TextField/TextField.js","../node_modules/@mui/material/Card/cardClasses.js","../node_modules/@mui/material/Card/Card.js","../node_modules/@mui/material/Table/TableContext.js","../node_modules/@mui/material/Table/tableClasses.js","../node_modules/@mui/material/Table/Table.js","components/common/StyledComponents/index.jsx","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","components/Worker/ns.js","components/LoginPage/LoginPage.jsx","components/NotFoundPage/index.jsx","components/Worker/filemanager.js","../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../node_modules/@mui/material/InputAdornment/InputAdornment.js","../node_modules/@mui/material/Divider/Divider.js","../node_modules/@mui/material/ListItem/listItemClasses.js","../node_modules/@mui/material/ListItemButton/listItemButtonClasses.js","../node_modules/@mui/material/ListItemSecondaryAction/listItemSecondaryActionClasses.js","../node_modules/@mui/material/ListItemSecondaryAction/ListItemSecondaryAction.js","../node_modules/@mui/material/ListItem/ListItem.js","../node_modules/@mui/material/ListItemButton/ListItemButton.js","../node_modules/@mui/material/ListItemText/ListItemText.js","../node_modules/@mui/material/Slide/Slide.js","../node_modules/@mui/material/Drawer/drawerClasses.js","../node_modules/@mui/material/Drawer/Drawer.js","components/common/CustomDrawer/index.jsx","utils.js","constants/types.constant.js","constants/region.constant.js","components/Worker/statistics.js","useWebSocket.js","../node_modules/@mui/material/TableContainer/tableContainerClasses.js","../node_modules/@mui/material/TableContainer/TableContainer.js","../node_modules/@mui/material/Table/Tablelvl2Context.js","../node_modules/@mui/material/TableHead/tableHeadClasses.js","../node_modules/@mui/material/TableHead/TableHead.js","../node_modules/@mui/material/TableRow/tableRowClasses.js","../node_modules/@mui/material/TableRow/TableRow.js","../node_modules/@mui/material/TableCell/tableCellClasses.js","../node_modules/@mui/material/TableCell/TableCell.js","../node_modules/@mui/material/Tooltip/tooltipClasses.js","../node_modules/@mui/material/Tooltip/Tooltip.js","../node_modules/@mui/material/TableBody/tableBodyClasses.js","../node_modules/@mui/material/TableBody/TableBody.js","../node_modules/@mui/material/TableFooter/tableFooterClasses.js","../node_modules/@mui/material/TableFooter/TableFooter.js","../node_modules/@mui/material/CardMedia/cardMediaClasses.js","../node_modules/@mui/material/CardMedia/CardMedia.js","../node_modules/@mui/material/CardHeader/cardHeaderClasses.js","../node_modules/@mui/material/CardHeader/CardHeader.js","../node_modules/@mui/material/CardContent/cardContentClasses.js","../node_modules/@mui/material/CardContent/CardContent.js","../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../node_modules/@mui/material/CircularProgress/CircularProgress.js","../node_modules/@mui/utils/esm/scrollLeft/scrollLeft.js","../node_modules/@mui/material/internal/animate.js","../node_modules/@mui/material/Tabs/ScrollbarSize.js","../node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js","../node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js","../node_modules/@mui/material/TabScrollButton/tabScrollButtonClasses.js","../node_modules/@mui/material/TabScrollButton/TabScrollButton.js","../node_modules/@mui/material/Tabs/tabsClasses.js","../node_modules/@mui/material/Tabs/Tabs.js","../node_modules/@mui/material/Tab/tabClasses.js","../node_modules/@mui/material/Tab/Tab.js","components/common/CodeBox/index.jsx","loraDecrypt.js","../node_modules/@mui/material/node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../node_modules/@mui/material/node_modules/@mui/system/esm/useMediaQuery/useMediaQuery.js","../node_modules/@mui/material/node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../node_modules/@mui/material/styles/useThemeProps.js","../node_modules/@mui/utils/esm/refType/refType.js","../node_modules/@mui/x-date-pickers/internals/utils/views.js","../node_modules/@mui/x-date-pickers/internals/utils/date-utils.js","../node_modules/@mui/x-date-pickers/internals/utils/time-utils.js","../node_modules/@mui/x-date-pickers/internals/utils/getDefaultReferenceDate.js","../node_modules/@mui/x-date-pickers/internals/hooks/useField/useField.utils.js","../node_modules/@mui/x-date-pickers/internals/utils/valueManagers.js","../node_modules/@mui/x-date-pickers/LocalizationProvider/LocalizationProvider.js","../node_modules/@mui/x-date-pickers/locales/utils/getPickersLocalization.js","../node_modules/@mui/x-date-pickers/locales/enUS.js","../node_modules/@mui/x-date-pickers/internals/hooks/useUtils.js","../node_modules/@mui/x-date-pickers/internals/components/pickersToolbarClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickersToolbar.js","../node_modules/@mui/x-date-pickers/hooks/usePickersTranslations.js","../node_modules/@mui/x-date-pickers/DatePicker/datePickerToolbarClasses.js","../node_modules/@mui/x-date-pickers/DatePicker/DatePickerToolbar.js","../node_modules/@mui/x-date-pickers/DatePicker/shared.js","../node_modules/@mui/x-date-pickers/validation/extractValidationProps.js","../node_modules/@mui/x-date-pickers/validation/validateDate.js","../node_modules/@mui/x-date-pickers/internals/components/pickersPopperClasses.js","../node_modules/@mui/x-date-pickers/internals/utils/utils.js","../node_modules/@mui/x-date-pickers/internals/hooks/useDefaultReduceAnimations.js","../node_modules/@mui/x-date-pickers/internals/components/PickersPopper.js","../node_modules/@mui/x-date-pickers/validation/useValidation.js","../node_modules/@mui/x-date-pickers/internals/hooks/useValueWithTimezone.js","../node_modules/@mui/x-date-pickers/internals/hooks/usePicker/usePickerValue.js","../node_modules/@mui/x-date-pickers/internals/hooks/useOpenState.js","../node_modules/@mui/x-date-pickers/internals/hooks/useViews.js","../node_modules/@mui/x-date-pickers/internals/hooks/usePicker/usePickerViews.js","../node_modules/@mui/system/esm/RtlProvider/index.js","../node_modules/@mui/x-date-pickers/internals/hooks/useIsLandscape.js","../node_modules/@mui/x-date-pickers/internals/hooks/usePicker/usePicker.js","../node_modules/@mui/x-date-pickers/internals/hooks/usePicker/usePickerLayoutProps.js","../node_modules/@mui/x-date-pickers/internals/hooks/usePicker/usePickerOwnerState.js","../node_modules/@mui/x-date-pickers/PickersLayout/pickersLayoutClasses.js","../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../node_modules/@mui/material/DialogActions/DialogActions.js","../node_modules/@mui/x-date-pickers/PickersActionBar/PickersActionBar.js","../node_modules/@mui/x-date-pickers/internals/constants/dimensions.js","../node_modules/@mui/x-date-pickers/PickersShortcuts/PickersShortcuts.js","../node_modules/@mui/x-date-pickers/PickersLayout/usePickerLayout.js","../node_modules/@mui/x-date-pickers/PickersLayout/PickersLayout.js","../node_modules/@mui/x-date-pickers/internals/components/PickersProvider.js","../node_modules/@mui/x-date-pickers/internals/hooks/useDesktopPicker/useDesktopPicker.js","../node_modules/@mui/x-date-pickers/icons/index.js","../node_modules/@mui/x-date-pickers/internals/hooks/useField/buildSectionsFromFormat.js","../node_modules/@mui/x-date-pickers/internals/hooks/useField/useFieldState.js","../node_modules/@mui/x-date-pickers/internals/hooks/useField/useFieldCharacterEditing.js","../node_modules/@mui/x-date-pickers/internals/hooks/useField/useFieldV7TextField.js","../node_modules/@mui/x-date-pickers/internals/hooks/useField/useFieldV6TextField.js","../node_modules/@mui/x-date-pickers/internals/hooks/useField/useField.js","../node_modules/@mui/x-date-pickers/hooks/useSplitFieldProps.js","../node_modules/@mui/x-date-pickers/DateField/useDateField.js","../node_modules/@mui/x-date-pickers/internals/hooks/defaultizedFieldProps.js","../node_modules/@mui/x-date-pickers/hooks/useClearableField.js","../node_modules/@mui/x-date-pickers/PickersTextField/pickersTextFieldClasses.js","../node_modules/@mui/x-date-pickers/PickersTextField/PickersInputBase/pickersInputBaseClasses.js","../node_modules/@mui/x-date-pickers/PickersTextField/PickersOutlinedInput/pickersOutlinedInputClasses.js","../node_modules/@mui/x-date-pickers/PickersTextField/PickersOutlinedInput/Outline.js","../node_modules/@mui/utils/esm/visuallyHidden/visuallyHidden.js","../node_modules/@mui/x-date-pickers/PickersSectionList/pickersSectionListClasses.js","../node_modules/@mui/x-date-pickers/PickersSectionList/PickersSectionList.js","../node_modules/@mui/x-date-pickers/PickersTextField/PickersInputBase/PickersInputBase.js","../node_modules/@mui/x-date-pickers/PickersTextField/PickersOutlinedInput/PickersOutlinedInput.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../node_modules/@mui/system/esm/createBreakpoints/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/breakpoints/breakpoints.js","../node_modules/@mui/system/esm/cssContainerQueries/cssContainerQueries.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/@mui/system/node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/@mui/system/esm/style/style.js","../node_modules/@mui/system/esm/merge/merge.js","../node_modules/@mui/system/esm/spacing/spacing.js","../node_modules/@mui/system/esm/memoize/memoize.js","../node_modules/@mui/system/esm/compose/compose.js","../node_modules/@mui/system/esm/borders/borders.js","../node_modules/@mui/system/esm/cssGrid/cssGrid.js","../node_modules/@mui/system/esm/palette/palette.js","../node_modules/@mui/system/esm/sizing/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/createStyled/createStyled.js","../node_modules/@mui/x-date-pickers/PickersTextField/PickersFilledInput/pickersFilledInputClasses.js","../node_modules/@mui/x-date-pickers/PickersTextField/PickersFilledInput/PickersFilledInput.js","../node_modules/@mui/x-date-pickers/PickersTextField/PickersInput/pickersInputClasses.js","../node_modules/@mui/x-date-pickers/PickersTextField/PickersInput/PickersInput.js","../node_modules/@mui/x-date-pickers/PickersTextField/PickersTextField.js","../node_modules/@mui/x-date-pickers/internals/utils/convertFieldResponseIntoMuiTextFieldProps.js","../node_modules/@mui/x-date-pickers/DateField/DateField.js","../node_modules/@mui/x-date-pickers/DateCalendar/useIsDateDisabled.js","../node_modules/@mui/x-date-pickers/DateCalendar/useCalendarState.js","../node_modules/@mui/x-date-pickers/DateCalendar/pickersFadeTransitionGroupClasses.js","../node_modules/@mui/x-date-pickers/DateCalendar/PickersFadeTransitionGroup.js","../node_modules/@mui/material/node_modules/@mui/system/esm/colorManipulator.js","../node_modules/@mui/x-date-pickers/PickersDay/pickersDayClasses.js","../node_modules/@mui/x-date-pickers/PickersDay/PickersDay.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/@mui/x-date-pickers/DateCalendar/pickersSlideTransitionClasses.js","../node_modules/@mui/x-date-pickers/DateCalendar/PickersSlideTransition.js","../node_modules/@mui/x-date-pickers/DateCalendar/dayCalendarClasses.js","../node_modules/@mui/x-date-pickers/DateCalendar/DayCalendar.js","../node_modules/@mui/x-date-pickers/MonthCalendar/pickersMonthClasses.js","../node_modules/@mui/x-date-pickers/MonthCalendar/PickersMonth.js","../node_modules/@mui/x-date-pickers/MonthCalendar/monthCalendarClasses.js","../node_modules/@mui/x-date-pickers/MonthCalendar/MonthCalendar.js","../node_modules/@mui/x-date-pickers/YearCalendar/pickersYearClasses.js","../node_modules/@mui/x-date-pickers/YearCalendar/PickersYear.js","../node_modules/@mui/x-date-pickers/YearCalendar/yearCalendarClasses.js","../node_modules/@mui/x-date-pickers/YearCalendar/YearCalendar.js","../node_modules/@mui/x-date-pickers/internals/components/PickersArrowSwitcher/pickersArrowSwitcherClasses.js","../node_modules/@mui/x-date-pickers/internals/components/PickersArrowSwitcher/PickersArrowSwitcher.js","../node_modules/@mui/x-date-pickers/PickersCalendarHeader/pickersCalendarHeaderClasses.js","../node_modules/@mui/x-date-pickers/PickersCalendarHeader/PickersCalendarHeader.js","../node_modules/@mui/x-date-pickers/internals/hooks/date-helpers-hooks.js","../node_modules/@mui/x-date-pickers/internals/components/PickerViewRoot/PickerViewRoot.js","../node_modules/@mui/x-date-pickers/DateCalendar/dateCalendarClasses.js","../node_modules/@mui/x-date-pickers/DateCalendar/DateCalendar.js","../node_modules/@mui/x-date-pickers/dateViewRenderers/dateViewRenderers.js","../node_modules/@mui/x-date-pickers/DesktopDatePicker/DesktopDatePicker.js","../node_modules/@mui/material/DialogContent/dialogContentClasses.js","../node_modules/@mui/material/DialogTitle/dialogTitleClasses.js","../node_modules/@mui/material/DialogContent/DialogContent.js","../node_modules/@mui/material/Dialog/dialogClasses.js","../node_modules/@mui/material/Dialog/DialogContext.js","../node_modules/@mui/material/Dialog/Dialog.js","../node_modules/@mui/x-date-pickers/internals/components/PickersModalDialog.js","../node_modules/@mui/x-date-pickers/internals/hooks/useMobilePicker/useMobilePicker.js","../node_modules/@mui/x-date-pickers/MobileDatePicker/MobileDatePicker.js","../node_modules/@mui/x-date-pickers/DatePicker/DatePicker.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/date-fns/esm/addDays/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/addMinutes/index.js","../node_modules/date-fns/esm/addHours/index.js","../node_modules/date-fns/esm/addMonths/index.js","../node_modules/date-fns/esm/endOfDay/index.js","../node_modules/date-fns/esm/_lib/defaultOptions/index.js","../node_modules/date-fns/esm/endOfYear/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/_lib/defaultLocale/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/date-fns/esm/getDaysInMonth/index.js","../node_modules/date-fns/esm/startOfWeek/index.js","../node_modules/date-fns/esm/startOfWeekYear/index.js","../node_modules/date-fns/esm/getWeekYear/index.js","../node_modules/date-fns/esm/getWeek/index.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/isBefore/index.js","../node_modules/date-fns/esm/startOfDay/index.js","../node_modules/date-fns/esm/startOfHour/index.js","../node_modules/date-fns/esm/_lib/assign/index.js","../node_modules/date-fns/esm/parse/_lib/Setter.js","../node_modules/date-fns/esm/parse/_lib/Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","../node_modules/date-fns/esm/constants/index.js","../node_modules/date-fns/esm/parse/_lib/constants.js","../node_modules/date-fns/esm/parse/_lib/utils.js","../node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","../node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../node_modules/date-fns/esm/parse/index.js","../node_modules/@mui/x-date-pickers/AdapterDateFnsBase/AdapterDateFnsBase.js","../node_modules/@mui/x-date-pickers/AdapterDateFns/AdapterDateFns.js","../node_modules/date-fns/esm/isEqual/index.js","../node_modules/date-fns/esm/isSameYear/index.js","../node_modules/date-fns/esm/isSameMonth/index.js","../node_modules/date-fns/esm/isSameDay/index.js","../node_modules/date-fns/esm/isSameHour/index.js","../node_modules/date-fns/esm/isWithinInterval/index.js","../node_modules/date-fns/esm/startOfYear/index.js","../node_modules/date-fns/esm/startOfMonth/index.js","../node_modules/date-fns/esm/endOfMonth/index.js","../node_modules/date-fns/esm/endOfWeek/index.js","../node_modules/date-fns/esm/addYears/index.js","../node_modules/date-fns/esm/addWeeks/index.js","../node_modules/date-fns/esm/addSeconds/index.js","../node_modules/date-fns/esm/getYear/index.js","../node_modules/date-fns/esm/getMonth/index.js","../node_modules/date-fns/esm/getDate/index.js","../node_modules/date-fns/esm/getHours/index.js","../node_modules/date-fns/esm/getMinutes/index.js","../node_modules/date-fns/esm/getSeconds/index.js","../node_modules/date-fns/esm/getMilliseconds/index.js","../node_modules/date-fns/esm/setYear/index.js","../node_modules/date-fns/esm/setMonth/index.js","../node_modules/date-fns/esm/setDate/index.js","../node_modules/date-fns/esm/setHours/index.js","../node_modules/date-fns/esm/setMinutes/index.js","../node_modules/date-fns/esm/setSeconds/index.js","../node_modules/date-fns/esm/setMilliseconds/index.js","components/Tabs/Uplink.jsx","components/Input/ParameterInput.jsx","../node_modules/@mui/material/Grid/GridContext.js","../node_modules/@mui/material/Grid/gridClasses.js","../node_modules/@mui/material/Grid/Grid.js","../node_modules/@mui/material/internal/switchBaseClasses.js","../node_modules/@mui/material/internal/SwitchBase.js","../node_modules/@mui/material/Switch/switchClasses.js","../node_modules/@mui/material/Switch/Switch.js","../node_modules/@mui/material/FormGroup/formGroupClasses.js","../node_modules/@mui/material/FormGroup/FormGroup.js","../node_modules/@mui/material/RadioGroup/radioGroupClasses.js","../node_modules/@mui/material/RadioGroup/RadioGroupContext.js","../node_modules/@mui/material/RadioGroup/RadioGroup.js","../node_modules/@mui/material/node_modules/@mui/system/esm/createStyled.js","../node_modules/@mui/material/node_modules/@mui/system/esm/styled.js","../node_modules/@mui/material/node_modules/@mui/system/esm/Stack/createStack.js","../node_modules/@mui/material/Stack/Stack.js","../node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js","../node_modules/@mui/material/FormControlLabel/FormControlLabel.js","../node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","../node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","../node_modules/@mui/material/Radio/RadioButtonIcon.js","../node_modules/@mui/material/Radio/radioClasses.js","../node_modules/@mui/material/Radio/Radio.js","../node_modules/@mui/material/RadioGroup/useRadioGroup.js","components/Input/ParameterRWButton.jsx","../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@mui/material/Checkbox/checkboxClasses.js","../node_modules/@mui/material/Checkbox/Checkbox.js","../node_modules/@mui/material/Collapse/collapseClasses.js","../node_modules/@mui/material/Collapse/Collapse.js","components/Input/ParameterDescription.jsx","../node_modules/@mui/material/Stepper/stepperClasses.js","../node_modules/@mui/material/Stepper/StepperContext.js","../node_modules/@mui/material/Step/StepContext.js","../node_modules/@mui/material/StepConnector/stepConnectorClasses.js","../node_modules/@mui/material/StepConnector/StepConnector.js","../node_modules/@mui/material/Stepper/Stepper.js","../node_modules/@mui/material/Step/stepClasses.js","../node_modules/@mui/material/Step/Step.js","../node_modules/@mui/material/internal/svg-icons/CheckCircle.js","../node_modules/@mui/material/internal/svg-icons/Warning.js","../node_modules/@mui/material/StepIcon/stepIconClasses.js","../node_modules/@mui/material/StepIcon/StepIcon.js","../node_modules/@mui/material/StepLabel/stepLabelClasses.js","../node_modules/@mui/material/StepLabel/StepLabel.js","components/Input/DownlinkGeneratorSettings.jsx","components/Input/DownlinkGenerator.jsx","components/Tabs/DownlinkQueue.jsx","components/Tabs/Downlink.jsx","../node_modules/@mui/material/Link/linkClasses.js","../node_modules/@mui/material/Link/getTextDecoration.js","../node_modules/@mui/material/Link/Link.js","components/Statistics/StatisticCard.jsx","../node_modules/@mui/material/DialogTitle/DialogTitle.js","../node_modules/@mui/material/ListItemIcon/ListItemIcon.js","components/Statistics/InfoListItem.jsx","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@kurkle/color/dist/color.esm.js","../node_modules/chart.js/src/helpers/helpers.core.ts","../node_modules/chart.js/src/helpers/helpers.math.ts","../node_modules/chart.js/src/helpers/helpers.collection.ts","../node_modules/chart.js/src/helpers/helpers.extras.ts","../node_modules/chart.js/src/helpers/helpers.easing.ts","../node_modules/chart.js/src/helpers/helpers.color.ts","../node_modules/chart.js/src/core/core.animations.defaults.js","../node_modules/chart.js/src/helpers/helpers.intl.ts","../node_modules/chart.js/src/core/core.ticks.js","../node_modules/chart.js/src/core/core.defaults.js","../node_modules/chart.js/src/core/core.layouts.defaults.js","../node_modules/chart.js/src/core/core.scale.defaults.js","../node_modules/chart.js/src/helpers/helpers.canvas.ts","../node_modules/chart.js/src/helpers/helpers.options.ts","../node_modules/chart.js/src/helpers/helpers.config.ts","../node_modules/chart.js/src/helpers/helpers.curve.ts","../node_modules/chart.js/src/helpers/helpers.dom.ts","../node_modules/chart.js/src/helpers/helpers.interpolation.ts","../node_modules/chart.js/src/helpers/helpers.rtl.ts","../node_modules/chart.js/src/helpers/helpers.segment.js","../node_modules/chart.js/src/core/core.animator.js","../node_modules/chart.js/src/core/core.animation.js","../node_modules/chart.js/src/core/core.animations.js","../node_modules/chart.js/src/core/core.datasetController.js","../node_modules/chart.js/src/controllers/controller.bar.js","../node_modules/chart.js/src/controllers/controller.bubble.js","../node_modules/chart.js/src/controllers/controller.doughnut.js","../node_modules/chart.js/src/controllers/controller.line.js","../node_modules/chart.js/src/controllers/controller.polarArea.js","../node_modules/chart.js/src/controllers/controller.pie.js","../node_modules/chart.js/src/controllers/controller.radar.js","../node_modules/chart.js/src/controllers/controller.scatter.js","../node_modules/chart.js/src/core/core.adapters.ts","../node_modules/chart.js/src/core/core.interaction.js","../node_modules/chart.js/src/core/core.layouts.js","../node_modules/chart.js/src/platform/platform.base.js","../node_modules/chart.js/src/platform/platform.basic.js","../node_modules/chart.js/src/platform/platform.dom.js","../node_modules/chart.js/src/platform/index.js","../node_modules/chart.js/src/core/core.element.ts","../node_modules/chart.js/src/core/core.scale.autoskip.js","../node_modules/chart.js/src/core/core.scale.js","../node_modules/chart.js/src/core/core.typedRegistry.js","../node_modules/chart.js/src/core/core.registry.js","../node_modules/chart.js/src/core/core.plugins.js","../node_modules/chart.js/src/core/core.config.js","../node_modules/chart.js/src/core/core.controller.js","../node_modules/chart.js/src/elements/element.arc.ts","../node_modules/chart.js/src/elements/element.line.js","../node_modules/chart.js/src/elements/element.point.ts","../node_modules/chart.js/src/elements/element.bar.js","../node_modules/chart.js/src/plugins/plugin.colors.ts","../node_modules/chart.js/src/plugins/plugin.decimation.js","../node_modules/chart.js/src/plugins/plugin.filler/filler.segment.js","../node_modules/chart.js/src/plugins/plugin.filler/filler.helper.js","../node_modules/chart.js/src/plugins/plugin.filler/filler.options.js","../node_modules/chart.js/src/plugins/plugin.filler/filler.target.stack.js","../node_modules/chart.js/src/plugins/plugin.filler/simpleArc.js","../node_modules/chart.js/src/plugins/plugin.filler/filler.target.js","../node_modules/chart.js/src/plugins/plugin.filler/filler.drawing.js","../node_modules/chart.js/src/plugins/plugin.filler/index.js","../node_modules/chart.js/src/plugins/plugin.legend.js","../node_modules/chart.js/src/plugins/plugin.title.js","../node_modules/chart.js/src/plugins/plugin.subtitle.js","../node_modules/chart.js/src/plugins/plugin.tooltip.js","../node_modules/chart.js/src/scales/scale.category.js","../node_modules/chart.js/src/scales/scale.linearbase.js","../node_modules/chart.js/src/scales/scale.linear.js","../node_modules/chart.js/src/scales/scale.logarithmic.js","../node_modules/chart.js/src/scales/scale.radialLinear.js","../node_modules/chart.js/src/scales/scale.time.js","../node_modules/chart.js/src/scales/scale.timeseries.js","../node_modules/chart.js/src/index.ts","../node_modules/chart.js/auto/auto.js","../node_modules/react-chartjs-2/src/utils.ts","../node_modules/react-chartjs-2/src/chart.tsx","../node_modules/react-chartjs-2/src/typedCharts.tsx","components/Statistics/StatisticPanel.jsx","components/Tabs/Statistics.jsx","components/Tabs/NSDecoder.jsx","components/Tabs/ManualUplink.jsx","components/Tabs/ManualDownlink.jsx","components/Tabs/ManualStatistics.jsx","components/Tabs/ManualDecoder.jsx","components/Navigator/PrivateRoute.jsx","components/Navigator/Navigator.jsx","context/NotificationProvider.jsx","../node_modules/jwt-decode/lib/atob.js","../node_modules/jwt-decode/lib/base64_url_decode.js","../node_modules/jwt-decode/lib/index.js","context/AuthContextProvider.jsx","index.jsx"],"sourcesContent":["module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_address'] = decode_field(arg, 4, 31, 0, \"hexstring\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['network_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_ul_type'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_ul_type'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_ul_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['loramac_default_tx_pwr'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['loramac_default_dr'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['loramac_rx2_dr'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['loramac_rx2_freq'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x19],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['loramac_net_id_msb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x1A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['loramac_net_id_lsb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_temp'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_rh'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_co2'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x27],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_pressure'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_motion_pir'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ble_display_whitelisting_enabled'] = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2B],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_display_language'] = \"English\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_display_language'] = \"French\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_display_language'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sampling_parameters')) {\n\t\t\t\t\tdecoded_data['sampling_parameters'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['sampling_parameters']['co2_sample_period'] = decode_field(arg, 3, 23, 8, \"unsigned\");\n\t\t\t\tdecoded_data['sampling_parameters']['co2_num_subsamples'] = decode_field(arg, 3, 7, 0, \"unsigned\");\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x31],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('threshold_control')) {\n\t\t\t\t\tdecoded_data['threshold_control'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['threshold_control']['co2_threshold_level'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x32],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('iir_filter_control')) {\n\t\t\t\t\tdecoded_data['iir_filter_control'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_static_iir_recall_factor'] = \"1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_static_iir_recall_factor'] = \"2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_static_iir_recall_factor'] = \"3\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_static_iir_recall_factor'] = \"4\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_static_iir_recall_factor'] = \"5\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_static_iir_recall_factor'] = \"6\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_static_iir_recall_factor'] = \"7\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_static_iir_recall_factor'] = \"8\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 9:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_static_iir_recall_factor'] = \"9\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_static_iir_recall_factor'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_dynamic_iir_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_dynamic_iir_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['iir_filter_control']['co2_dynamic_iir_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('calibration_control')) {\n\t\t\t\t\tdecoded_data['calibration_control'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 4, 31, 24, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['calibration_control']['co2_calibration_type'] = \"ABC Calibration\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['calibration_control']['co2_calibration_type'] = \"Target Calibration\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['calibration_control']['co2_calibration_type'] = \"Background Calibration\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['calibration_control']['co2_calibration_type'] = \"Zero Calibration\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['calibration_control']['co2_calibration_type'] = \"No Calibration\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['calibration_control']['co2_calibration_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['calibration_control']['co2_calibration_period'] = decode_field(arg, 4, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['calibration_control']['co2_calibration_target'] = decode_field(arg, 4, 15, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('report_options')) {\n\t\t\t\t\tdecoded_data['report_options'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_options']['co2_raw_reported'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_options']['co2_raw_reported'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_options']['co2_raw_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_options']['co2_pressure_compensated_reported'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_options']['co2_pressure_compensated_reported'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_options']['co2_pressure_compensated_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x38],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pressure_iir_recall_factor'] = decode_field(arg, 1, 4, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x39],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temp_rh_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temp_rh_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3B],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('temp_thresholds')) {\n\t\t\t\t\tdecoded_data['temp_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['temp_thresholds']['temp_threshold_low'] = (decode_field(arg, 2, 7, 0, \"signed\")).toFixed(1);\n\t\t\t\tdecoded_data['temp_thresholds']['temp_threshold_high'] = (decode_field(arg, 2, 15, 8, \"signed\")).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3C],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('rh_threshold')) {\n\t\t\t\t\tdecoded_data['rh_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['rh_threshold']['rh_threshold_low'] = (decode_field(arg, 2, 7, 0, \"unsigned\")).toFixed(1);\n\t\t\t\tdecoded_data['rh_threshold']['rh_threshold_high'] = (decode_field(arg, 2, 15, 8, \"unsigned\")).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3E],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('battery_report_options')) {\n\t\t\t\t\tdecoded_data['battery_report_options'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_voltage_reported'] = \"Not Reported\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_voltage_reported'] = \"Reported\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_voltage_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_capacity_sensor_reported'] = \"Not Reported\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_capacity_sensor_reported'] = \"Reported\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_capacity_sensor_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_capacity_display_reported'] = \"Not Reported\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_capacity_display_reported'] = \"Reported\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_capacity_display_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mode')) {\n\t\t\t\t\tdecoded_data['mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mode']['pir_motion_count_reported'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mode']['pir_motion_count_reported'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mode']['pir_motion_count_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mode']['pir_motion_state_reported'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mode']['pir_motion_state_reported'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mode']['pir_motion_state_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mode']['pir_event_based_reporting_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mode']['pir_event_based_reporting_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mode']['pir_event_based_reporting_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mode']['sensor_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mode']['sensor_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mode']['sensor_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('hold_off_intervals')) {\n\t\t\t\t\tdecoded_data['hold_off_intervals'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['hold_off_intervals']['post_turn_on_hold_off'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['hold_off_intervals']['post_disturbance_hold_off'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x66],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['drm_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['drm_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['drm_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['drm_request_update_period'] = decode_field(arg, 1, 7, 4, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x68],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('active_hours')) {\n\t\t\t\t\tdecoded_data['active_hours'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['active_hours']['drm_active_start_hr'] = decode_field(arg, 3, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['active_hours']['drm_active_end_hr'] = decode_field(arg, 3, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 3, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_sunday'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_sunday'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_sunday'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 3, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_monday'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_monday'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_monday'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 3, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_tuesday'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_tuesday'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_tuesday'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 3, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_wednesday'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_wednesday'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_wednesday'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 3, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_thursday'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_thursday'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_thursday'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 3, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_friday'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_friday'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_friday'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 3, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_saturday'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_saturday'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['active_hours']['drm_active_on_saturday'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x69],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['seconds_per_core_tick_inactive'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('co2_sampling_parameters')) {\n\t\t\t\t\tdecoded_data['co2_sampling_parameters'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['co2_sampling_parameters']['co2_sample_period_inactive'] = decode_field(arg, 3, 23, 8, \"unsigned\");\n\t\t\t\tdecoded_data['co2_sampling_parameters']['co2_num_subsample_inactive'] = decode_field(arg, 3, 7, 0, \"unsigned\");\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6F],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('format_options')) {\n\t\t\t\t\tdecoded_data['format_options'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['format_options']['response_format'] = \"Invalid write response format\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['format_options']['response_format'] = \"4-byte CRC\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['format_options']['response_format'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_major_version'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_minor_version'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_major_version'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_minor_version'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"DN915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xBA],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['battery_voltage'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xD3],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rem_batt_capacity_sensor'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11, 0xD3],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rem_batt_capacity_display'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0B, 0xE4],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['co2_pressure_compensated'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0E, 0xE4],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['co2_raw'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0C, 0x73],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['barometric_pressure'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0A, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"None\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"Detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['motion_event_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04, 0x68],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['relative_humidity'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_state'] = \"Dark\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['light_state'] = \"Bright\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['light_intensity'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 20) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0xD7, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['initial_time_rqst_id'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xD7, 0x01],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['existing_time_rqst_id'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x85],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['sensor_local_timestamp'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xD7],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['local_timestamp'] = decode_field(arg, 5, 31, 0, \"unsigned\");\n\t\t\t\tdecoded_data['local_timestamp_rqst_id'] = decode_field(arg, 5, 39, 32, \"hexstring\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xD3],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['battery_lifetime_pct'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xBD],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['battery_lifetime_dys'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x95],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('geolocation_cycle_failed')) {\n\t\t\t\t\tdecoded_data['geolocation_cycle_failed'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['lpgnss_scan'] = \"Scan failed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['lpgnss_scan'] = \"Scan successful/not done\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['lpgnss_scan'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['wifi_scan'] = \"Scan failed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['wifi_scan'] = \"Scan successful/not done\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['wifi_scan'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['ble_scan'] = \"Scan failed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['ble_scan'] = \"Scan successful/not done\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['ble_scan'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['duty_cycle_UL'] = \"Duty Cycle Restrictions\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['duty_cycle_UL'] = \"No Duty Cycle Restriction Impacts\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['duty_cycle_UL'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['gnss_scan'] = \"Scan failed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['gnss_scan'] = \"Scan successful/not done\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['gnss_scan'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"No motion\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Motion detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['gnss_fix'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_vector')) {\n\t\t\t\t\tdecoded_data['acceleration_vector'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['acceleration_vector']['xaxis'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['yaxis'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['zaxis'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x85],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('utc_timestamp')) {\n\t\t\t\t\tdecoded_data['utc_timestamp'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['utc_timestamp']['year_utc'] = decode_field(arg, 4, 31, 26, \"unsigned\");\n\t\t\t\tdecoded_data['utc_timestamp']['month_utc'] = decode_field(arg, 4, 25, 22, \"unsigned\");\n\t\t\t\tdecoded_data['utc_timestamp']['day_utc'] = decode_field(arg, 4, 21, 17, \"unsigned\");\n\t\t\t\tdecoded_data['utc_timestamp']['hour_utc'] = decode_field(arg, 4, 16, 12, \"unsigned\");\n\t\t\t\tdecoded_data['utc_timestamp']['minute_utc'] = decode_field(arg, 4, 11, 6, \"unsigned\");\n\t\t\t\tdecoded_data['utc_timestamp']['second_utc'] = decode_field(arg, 4, 5, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x88],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('coordinates')) {\n\t\t\t\t\tdecoded_data['coordinates'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['coordinates']['latitude_coords'] = (decode_field(arg, 8, 63, 40, \"signed\") * 1.07E-05).toFixed(7);\n\t\t\t\tdecoded_data['coordinates']['longitude_coords'] = (decode_field(arg, 8, 39, 16, \"signed\") * 2.15E-05).toFixed(7);\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x92],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ground_speed'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.27778).toFixed(3);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 16) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0D, 0x3C],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['num_satellites'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x64],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['avg_satellite_snr'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x63],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('min_max_satellite_snr')) {\n\t\t\t\t\tdecoded_data['min_max_satellite_snr'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['min_max_satellite_snr']['max_satellite_snr'] = (decode_field(arg, 4, 31, 16, \"signed\") * 0.1).toFixed(1);\n\t\t\t\tdecoded_data['min_max_satellite_snr']['min_satellite_snr'] = (decode_field(arg, 4, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x0F],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['log_num'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x95],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['fix_type'] = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x96],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['time_to_fix'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x97],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('gnss_fix_accuracy')) {\n\t\t\t\t\tdecoded_data['gnss_fix_accuracy'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['gnss_fix_accuracy']['gnss_vertical_accuracy'] = decode_field(arg, 4, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['gnss_fix_accuracy']['gnss_horizontal_accuracy'] = decode_field(arg, 4, 15, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x98],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ground_speed_accuracy'] = (decode_field(arg, 4, 31, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x99],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['num_of_fixes'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 25) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('basic_report')) {\n\t\t\t\t\tdecoded_data['basic_report'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 7;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_0'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(7);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['basic_report'] = data;\n\t\t\t\t\treturn loop*7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB0],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_report_0')) {\n\t\t\t\t\tdecoded_data['filter_report_0'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_1'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_0'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB1],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_report_1')) {\n\t\t\t\t\tdecoded_data['filter_report_1'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_2'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_1'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB2],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_report_2')) {\n\t\t\t\t\tdecoded_data['filter_report_2'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_3'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_2'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB3],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_report_3')) {\n\t\t\t\t\tdecoded_data['filter_report_3'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_4'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_3'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_geolocation_update_stillness'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_geolocation_update_mobility'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_geolocation_update_emergency'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_ambient_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('geolocation_strategy')) {\n\t\t\t\t\tdecoded_data['geolocation_strategy'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_1'] = \"BLE\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_1'] = \"WIFI\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_1'] = \"LPGNSS\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2'] = \"Not defined\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2'] = \"BLE\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2'] = \"WIFI\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2'] = \"LPGNSS\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3'] = \"Not defined\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3'] = \"BLE\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3'] = \"WIFI\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3'] = \"LPGNSS\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic'] = \"A\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic'] = \"B\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic'] = \"C\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic'] = \"D\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x32],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('lpgnss_diagnostics_tx')) {\n\t\t\t\t\tdecoded_data['lpgnss_diagnostics_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['lpgnss_diagnostics_tx']['num_satellites_lpgnss'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['lpgnss_diagnostics_tx']['num_satellites_lpgnss'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['lpgnss_diagnostics_tx']['num_satellites_lpgnss'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['lpgnss_diagnostics_tx']['avg_satellite_snr_lpgnss'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['lpgnss_diagnostics_tx']['avg_satellite_snr_lpgnss'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['lpgnss_diagnostics_tx']['avg_satellite_snr_lpgnss'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['lpgnss_diagnostics_tx']['min_max_satellite_snr_lpgnss'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['lpgnss_diagnostics_tx']['min_max_satellite_snr_lpgnss'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['lpgnss_diagnostics_tx']['min_max_satellite_snr_lpgnss'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('clock_sync')) {\n\t\t\t\t\tdecoded_data['clock_sync'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['clock_sync']['interval'] = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\tdecoded_data['clock_sync']['invalid_delay_multiplier'] = decode_field(arg, 1, 6, 4, \"unsigned\");\n\t\t\t\tdecoded_data['clock_sync']['service'] = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['almanac_update_request_backoff'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x35],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['almanac_update_check_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x36],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('assist_coordinates_type')) {\n\t\t\t\t\tdecoded_data['assist_coordinates_type'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['assist_coordinates_type']['latitude_gnss'] = decode_field(arg, 8, 63, 40, \"unsigned\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x37],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_constellation_option'] = \"GPS\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_constellation_option'] = \"BeiDou\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['gnss_constellation_option'] = \"GPS and BeiDou\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_constellation_option'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('gnss_diagnostics_tx')) {\n\t\t\t\t\tdecoded_data['gnss_diagnostics_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['num_satellites_gnss'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['num_satellites_gnss'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['num_satellites_gnss'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['avg_satellite_snr_gnss'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['avg_satellite_snr_gnss'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['avg_satellite_snr_gnss'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['fix_type_gnss'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['fix_type_gnss'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['fix_type_gnss'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['time_to_fix_gnss'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['time_to_fix_gnss'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['time_to_fix_gnss'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['log_num_gnss'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['log_num_gnss'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['log_num_gnss'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['acc_and_num_fixes_report_gnss'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['acc_and_num_fixes_report_gnss'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['acc_and_num_fixes_report_gnss'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_mode')) {\n\t\t\t\t\tdecoded_data['accelerometer_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['poweron'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['poweron'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['poweron'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['zaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['zaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['zaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['yaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['yaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['yaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['xaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['xaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['xaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_sensitivity')) {\n\t\t\t\t\tdecoded_data['accelerometer_sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"2g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"4g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"8g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"16g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x44],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x45],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x46],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_event_tx')) {\n\t\t\t\t\tdecoded_data['acceleration_event_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_assist'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_assist'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_assist'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_alarms'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_alarms'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_alarms'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('battery_tx')) {\n\t\t\t\t\tdecoded_data['battery_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_mode')) {\n\t\t\t\t\tdecoded_data['ble_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['ble_mode']['num_reported_devices'] = decode_field(arg, 1, 6, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_scan_duration')) {\n\t\t\t\t\tdecoded_data['ble_scan_duration'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_scan_duration']['periodic'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ble_scan_interval'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ble_scan_window'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_range_0')) {\n\t\t\t\t\tdecoded_data['filter_range_0'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['filter_range_0']['oui_0'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['filter_range_0']['lap_start_0'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['filter_range_0']['lap_end_0'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x55],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_range_1')) {\n\t\t\t\t\tdecoded_data['filter_range_1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['filter_range_1']['oui_1'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['filter_range_1']['lap_start_1'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['filter_range_1']['lap_end_1'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x56],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_range_2')) {\n\t\t\t\t\tdecoded_data['filter_range_2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['filter_range_2']['oui_2'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['filter_range_2']['lap_start_2'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['filter_range_2']['lap_end_2'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x57],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_range_3')) {\n\t\t\t\t\tdecoded_data['filter_range_3'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['filter_range_3']['oui_3'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['filter_range_3']['lap_start_3'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['filter_range_3']['lap_end_3'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x58],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x59],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['min_advertising_interval'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5B],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"0 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-0.85 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-1.8 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-3.15 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-4 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-4.95 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-5.9 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-6.9 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-7.8 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 9:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-8.85 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 10:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-9.9 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 11:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-12.05 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 12:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-14.1 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-16.5 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 14:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-20.85 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 15:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-40 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5C],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('advertising_packet_format')) {\n\t\t\t\t\tdecoded_data['advertising_packet_format'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['ibeacon'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['ibeacon'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['ibeacon'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_uid'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_uid'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_uid'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_tlm'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_tlm'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_tlm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5F],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mac_address'] = decode_field(arg, 6, 47, 0, \"hexstring\");\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x60],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temp_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x61],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temp_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x62],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temp_threshold_high'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['temp_threshold_low'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x63],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"hexstring\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"DN915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x73],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_metadata')) {\n\t\t\t\t\tdecoded_data['ble_metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_metadata']['stack_ver_major'] = decode_field(arg, 6, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['ble_metadata']['stack_ver_minor'] = decode_field(arg, 6, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['ble_metadata']['stack_ver_revision'] = decode_field(arg, 6, 7, 0, \"unsigned\");\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_address'] = decode_field(arg, 4, 31, 0, \"hexstring\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['network_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['rx2_dr_number'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x19],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['loramac_net_id_msb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x1A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['loramac_net_id_lsb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['core'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['per_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['per_relative_humidity'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['per_digital_input'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['per_light'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['per_acceleration'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x27],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['per_pir'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x29],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['per_external_connector'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mode')) {\n\t\t\t\t\tdecoded_data['mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mode']['read_rising_edge'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mode']['read_rising_edge'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mode']['read_rising_edge'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mode']['read_falling_edge'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mode']['read_falling_edge'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mode']['read_falling_edge'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2B],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['reed_switch_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2C],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('reed_values_to_transmit')) {\n\t\t\t\t\tdecoded_data['reed_values_to_transmit'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_values_to_transmit']['report_state'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_values_to_transmit']['report_state'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_values_to_transmit']['report_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_values_to_transmit']['report_count'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_values_to_transmit']['report_count'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_values_to_transmit']['report_count'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('external_mode')) {\n\t\t\t\t\tdecoded_data['external_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_mode']['rising_edge'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_mode']['rising_edge'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_mode']['rising_edge'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_mode']['falling_edge'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_mode']['falling_edge'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_mode']['falling_edge'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_mode']['analog'] = \"Digital\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_mode']['analog'] = \"Analog\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_mode']['analog'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2E],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['external_connector_count_thresh'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2F],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('external_values_to_transmit')) {\n\t\t\t\t\tdecoded_data['external_values_to_transmit'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit']['state'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit']['state'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit']['state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit']['report_count_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit']['report_count_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit']['report_count_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_alarm_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x31],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x32],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('values_to_transmit')) {\n\t\t\t\t\tdecoded_data['values_to_transmit'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('event_debounce_time')) {\n\t\t\t\t\tdecoded_data['event_debounce_time'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['event_debounce_time']['impact_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_mode')) {\n\t\t\t\t\tdecoded_data['acceleration_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['impact_alarm_threshold_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['impact_alarm_threshold_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['impact_alarm_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['event_threshold_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['event_threshold_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['event_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['x_axis'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['x_axis'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['x_axis'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['y_axis'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['y_axis'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['y_axis'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['z_axis'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['z_axis'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['z_axis'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['power'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['power'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['power'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x35],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sensitivity')) {\n\t\t\t\t\tdecoded_data['sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"+/-2 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"+/-4 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"+/-8 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"+/-16 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x36],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['alarm_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x37],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['alarm_event_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x38],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['alarm_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x39],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ambient_temp_rh_sample')) {\n\t\t\t\t\tdecoded_data['ambient_temp_rh_sample'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ambient_temp_rh_sample']['temprh_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ambient_temp_rh_sample')) {\n\t\t\t\t\tdecoded_data['ambient_temp_rh_sample'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ambient_temp_rh_sample']['temprh_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3B],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('temperature_threshold')) {\n\t\t\t\t\tdecoded_data['temperature_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['temperature_threshold']['temp_high_threshold'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['temperature_threshold']['temp_low_threshold'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3C],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('temperature_threshold')) {\n\t\t\t\t\tdecoded_data['temperature_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['temperature_threshold']['temp_threshold_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['temperature_threshold']['temp_threshold_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['temperature_threshold']['temp_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('rh_threshold')) {\n\t\t\t\t\tdecoded_data['rh_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['rh_threshold']['rh_high'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['rh_threshold']['rh_low'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3E],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('rh_threshold')) {\n\t\t\t\t\tdecoded_data['rh_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['rh_threshold']['rh_threshold_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['rh_threshold']['rh_threshold_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['rh_threshold']['rh_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mcu_temp_sample')) {\n\t\t\t\t\tdecoded_data['mcu_temp_sample'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['mcu_temp_sample']['mcu_temp_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mcu_temp_sample')) {\n\t\t\t\t\tdecoded_data['mcu_temp_sample'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['mcu_temp_sample']['mcu_temp_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mcu_temp_threshold')) {\n\t\t\t\t\tdecoded_data['mcu_temp_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['mcu_temp_threshold']['mcu_temp_high'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['mcu_temp_threshold']['mcu_temp_low'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mcu_temp_threshold')) {\n\t\t\t\t\tdecoded_data['mcu_temp_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mcu_temp_threshold']['mcu_temp_threshold_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mcu_temp_threshold']['mcu_temp_threshold_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mcu_temp_threshold']['mcu_temp_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x44],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('analog_in_sample_period')) {\n\t\t\t\t\tdecoded_data['analog_in_sample_period'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['analog_in_sample_period']['analog_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x45],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('analog_in_sample_period')) {\n\t\t\t\t\tdecoded_data['analog_in_sample_period'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['analog_in_sample_period']['analog_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x46],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('analog_threshold')) {\n\t\t\t\t\tdecoded_data['analog_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['analog_threshold']['analog_high'] = (decode_field(arg, 4, 31, 16, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['analog_threshold']['analog_low'] = (decode_field(arg, 4, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('analog_threshold')) {\n\t\t\t\t\tdecoded_data['analog_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['analog_threshold']['analog_threshold_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['analog_threshold']['analog_threshold_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['analog_threshold']['analog_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x47],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['light_sample_period'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x48],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('light_thresholds')) {\n\t\t\t\t\tdecoded_data['light_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_thresholds']['light_threshold_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['light_thresholds']['light_threshold_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_thresholds']['light_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['light_thresholds']['light_threshold_control'] = decode_field(arg, 1, 5, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x49],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('light_values_to_transmit')) {\n\t\t\t\t\tdecoded_data['light_values_to_transmit'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['light_tx_intensity_reported'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['light_tx_intensity_reported'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['light_tx_intensity_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['light_state'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['light_state'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['light_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['period_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('pir_mode')) {\n\t\t\t\t\tdecoded_data['pir_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_event_tx'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_event_tx'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_event_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_motion_state'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_motion_state'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_motion_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_motion_count'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_motion_count'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_motion_count'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('hold_off_int')) {\n\t\t\t\t\tdecoded_data['hold_off_int'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['hold_off_int']['post_turnon_hold_off'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['hold_off_int']['post_disturbance_hold_off'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5A],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sample_period'] = \"16 sec\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sample_period'] = \"32 sec\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sample_period'] = \"64 sec\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['sample_period'] = \"128 sec\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sample_period'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5B],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['threshold'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5C],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sensor_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensor_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensor_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5D],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['dry_calibration'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x60],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sample_analysis_mode')) {\n\t\t\t\t\tdecoded_data['sample_analysis_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sample_analysis_mode']['analysis_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sample_analysis_mode']['analysis_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sample_analysis_mode']['analysis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['sample_analysis_mode']['cic_enabled'] = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x61],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('hpf_config')) {\n\t\t\t\t\tdecoded_data['hpf_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['hpf_config']['cutoff_freq'] = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hpf_config']['hpf_on_sample'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hpf_config']['hpf_on_sample'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hpf_config']['hpf_on_sample'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hpf_config']['hpf_on_accel_interrupts'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hpf_config']['hpf_on_accel_interrupts'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hpf_config']['hpf_on_accel_interrupts'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hpf_config']['hpf_on_accel_output'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hpf_config']['hpf_on_accel_output'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hpf_config']['hpf_on_accel_output'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x62],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('cic_filter_config')) {\n\t\t\t\t\tdecoded_data['cic_filter_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['cic_filter_config']['d'] = decode_field(arg, 3, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['cic_filter_config']['r'] = decode_field(arg, 3, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['cic_filter_config']['m'] = decode_field(arg, 3, 7, 0, \"unsigned\");\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x63],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ml_config')) {\n\t\t\t\t\tdecoded_data['ml_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ml_config']['nonzero_MLs'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['ml_config']['ml_upper_limit'] = decode_field(arg, 7, 47, 32, \"unsigned\");\n\t\t\t\tdecoded_data['ml_config']['ml_lower_limit'] = decode_field(arg, 7, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['ml_config']['ml_step'] = decode_field(arg, 7, 15, 0, \"unsigned\");\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x64],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ml1_dlim_config')) {\n\t\t\t\t\tdecoded_data['ml1_dlim_config'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 14, 111, 104, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ml1_dlim_config']['num_dlims'] = \"0\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ml1_dlim_config']['num_dlims'] = \"1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['ml1_dlim_config']['num_dlims'] = \"2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['ml1_dlim_config']['num_dlims'] = \"3\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ml1_dlim_config']['num_dlims'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['ml1_dlim_config']['dlim0_0'] = decode_field(arg, 14, 103, 88, \"unsigned\");\n\t\t\t\tdecoded_data['ml1_dlim_config']['dlim_step_0'] = decode_field(arg, 14, 87, 72, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 14, 71, 64, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ml1_dlim_config']['threshold_enable_0'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ml1_dlim_config']['threshold_enable_0'] = \"Enabled on Duration Total\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['ml1_dlim_config']['threshold_enable_0'] = \"Enabled on Count\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ml1_dlim_config']['threshold_enable_0'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['ml1_dlim_config']['AE10_threshold'] = decode_field(arg, 14, 63, 48, \"unsigned\");\n\t\t\t\tdecoded_data['ml1_dlim_config']['AE11_threshold'] = decode_field(arg, 14, 47, 32, \"unsigned\");\n\t\t\t\tdecoded_data['ml1_dlim_config']['AE12_threshold'] = decode_field(arg, 14, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['ml1_dlim_config']['AE13_threshold'] = decode_field(arg, 14, 15, 0, \"unsigned\");\n\t\t\t\treturn 14;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x65],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ml2_dlim_config')) {\n\t\t\t\t\tdecoded_data['ml2_dlim_config'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 14, 111, 104, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ml2_dlim_config']['num_of_dlims'] = \"0\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ml2_dlim_config']['num_of_dlims'] = \"1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['ml2_dlim_config']['num_of_dlims'] = \"2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['ml2_dlim_config']['num_of_dlims'] = \"3\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ml2_dlim_config']['num_of_dlims'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['ml2_dlim_config']['dlim0_1'] = decode_field(arg, 14, 103, 88, \"unsigned\");\n\t\t\t\tdecoded_data['ml2_dlim_config']['dlim_step_1'] = decode_field(arg, 14, 87, 72, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 14, 71, 64, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ml2_dlim_config']['threshold_enabled_1'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ml2_dlim_config']['threshold_enabled_1'] = \"Enabled on Duration Total\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['ml2_dlim_config']['threshold_enabled_1'] = \"Enabled on Count\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ml2_dlim_config']['threshold_enabled_1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['ml2_dlim_config']['AE20_threshold'] = decode_field(arg, 14, 63, 48, \"unsigned\");\n\t\t\t\tdecoded_data['ml2_dlim_config']['AE21_threshold'] = decode_field(arg, 14, 47, 32, \"unsigned\");\n\t\t\t\tdecoded_data['ml2_dlim_config']['AE22_threshold'] = decode_field(arg, 14, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['ml2_dlim_config']['AE23_threshold'] = decode_field(arg, 14, 15, 0, \"unsigned\");\n\t\t\t\treturn 14;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x68],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sample_analysis')) {\n\t\t\t\t\tdecoded_data['sample_analysis'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_total_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_total_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_total_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_min_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_min_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_min_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_max_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_max_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_max_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_range_Enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_range_Enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_range_Enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_mean_Enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_mean_Enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_mean_Enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_median_Enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_median_Enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_median_Enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_SD_Enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_SD_Enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_SD_Enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_count_Enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_count_Enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sample_analysis']['AE_duration_count_Enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_major_version'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_minor_version'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_major_version'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_minor_version'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"DN915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xFF],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['battery_voltage'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.01).toFixed(2);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_state'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['reed_state'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x08, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['reed_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0C, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_magnitude'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x07, 0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration')) {\n\t\t\t\t\tdecoded_data['acceleration'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['acceleration']['x'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration']['y'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration']['z'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0E, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_connector_state'] = \"Low(short-circuit)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['external_connector_state'] = \"High(open-circuit)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_connector_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0F, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['external_connector_counter'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['external_connector_analog_mv'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0B, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ambient_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04, 0x68],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['relative_humidity'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Dark\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Bright\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['light_intensity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0A, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"None\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"Detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['motion_event_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x09, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['moisture'] = \"Dry\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['moisture'] = \"Wet\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['moisture'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_address'] = decode_field(arg, 4, 31, 0, \"hexstring\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['network_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number_rx2'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x19],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['loramac_net_id_msb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x1A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['loramac_net_id_lsb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_ambient_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_relative_humidity'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_reed_switch'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_light'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x27],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_pir'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x29],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_external_connector'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mode')) {\n\t\t\t\t\tdecoded_data['mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mode']['rising_edge_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mode']['rising_edge_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mode']['rising_edge_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mode']['falling_edge_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mode']['falling_edge_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mode']['falling_edge_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2B],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['reed_switch_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2C],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('reed_values_to_transmit')) {\n\t\t\t\t\tdecoded_data['reed_values_to_transmit'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_values_to_transmit']['report_state_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_values_to_transmit']['report_state_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_values_to_transmit']['report_state_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_values_to_transmit']['report_count_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_values_to_transmit']['report_count_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_values_to_transmit']['report_count_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('external_mode')) {\n\t\t\t\t\tdecoded_data['external_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_mode']['rising_edge_enabled_ex'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_mode']['rising_edge_enabled_ex'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_mode']['rising_edge_enabled_ex'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_mode']['falling_edge_enabled_ex'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_mode']['falling_edge_enabled_ex'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_mode']['falling_edge_enabled_ex'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_mode']['mode'] = \"Digital\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_mode']['mode'] = \"Analog\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_mode']['mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2E],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['external_connector_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2F],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('external_values_to_transmit')) {\n\t\t\t\t\tdecoded_data['external_values_to_transmit'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit']['report_state_enabled_ex'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit']['report_state_enabled_ex'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit']['report_state_enabled_ex'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit']['report_count_enabled_ex'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit']['report_count_enabled_ex'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit']['report_count_enabled_ex'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['external_values_to_transmit']['count_type'] = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_event_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x31],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x32],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('values_to_transmit')) {\n\t\t\t\t\tdecoded_data['values_to_transmit'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_impact_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_mode')) {\n\t\t\t\t\tdecoded_data['acceleration_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['impact_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['impact_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['impact_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['xaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['xaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['xaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['yaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['yaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['yaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['zaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['zaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['zaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['poweron'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['poweron'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['poweron'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x35],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sensitivity')) {\n\t\t\t\t\tdecoded_data['sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"+/- 2 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"+/-4 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"+/-8 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"+/-16 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x36],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_alarm_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x37],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_alarm_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x38],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_alarm_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x39],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_relative_humidity_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_relative_humidity_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3B],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('temperature_threshold')) {\n\t\t\t\t\tdecoded_data['temperature_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['temperature_threshold']['high_temp_threshold'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['temperature_threshold']['low_temp_threshold'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3C],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ambient_temperature_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ambient_temperature_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ambient_temperature_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('rh_threshold')) {\n\t\t\t\t\tdecoded_data['rh_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['rh_threshold']['high_rh_threshold'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['rh_threshold']['low_rh_threshold'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3E],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['relative_humidity_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['relative_humidity_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['relative_humidity_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mcu_temp_threshold')) {\n\t\t\t\t\tdecoded_data['mcu_temp_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['mcu_temp_threshold']['high_mcu_temp_threshold'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['mcu_temp_threshold']['low_mcu_temp_threshold'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x44],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['analog_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x45],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['analog_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x46],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('analog_threshold')) {\n\t\t\t\t\tdecoded_data['analog_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['analog_threshold']['high_analog_threshold'] = (decode_field(arg, 4, 31, 16, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['analog_threshold']['low_analog_threshold'] = (decode_field(arg, 4, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['analog_input_threshold_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['analog_input_threshold_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['analog_input_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x47],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['light_sample_period'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x48],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('light_thresholds')) {\n\t\t\t\t\tdecoded_data['light_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_thresholds']['threshold'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['light_thresholds']['threshold'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_thresholds']['threshold'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['light_thresholds']['threshold_enabled'] = decode_field(arg, 1, 5, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x49],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('light_values_to_transmit')) {\n\t\t\t\t\tdecoded_data['light_values_to_transmit'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['state_reported'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['state_reported'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['state_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['intensity_reported'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['intensity_reported'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['intensity_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('pir_mode')) {\n\t\t\t\t\tdecoded_data['pir_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['motion_count_reported'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['motion_count_reported'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['motion_count_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['motion_state_reported'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['motion_state_reported'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['motion_state_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['event_transmission_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['event_transmission_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['event_transmission_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['transducer_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['transducer_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['transducer_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('hold_off_int')) {\n\t\t\t\t\tdecoded_data['hold_off_int'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['hold_off_int']['post_turn_on'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['hold_off_int']['post_disturbance'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6F],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['resp_to_dl_command_format'] = \"Invalid-write response format\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['resp_to_dl_command_format'] = \"4-byte CRC\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['resp_to_dl_command_format'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_major_version'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_minor_version'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_major_version'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_minor_version'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"DN915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xBA],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['battery_voltage'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hall_effect_state'] = \"Magnet Present\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['hall_effect_state'] = \"Magnet Absent\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hall_effect_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x08, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['hall_effect_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0C, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Impact Alarm Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Impact Alarm Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_magnitude'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x07, 0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration')) {\n\t\t\t\t\tdecoded_data['acceleration'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['acceleration']['xaxis'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration']['yaxis'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration']['zaxis'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0E, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['extconnector_state'] = \"Low(short-circuit)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['extconnector_state'] = \"High(open-circuit)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['extconnector_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0F, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_total_count'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_analog'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0B, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ambient_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04, 0x68],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['relative_humidity'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Dark\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Bright\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['light_intensity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0A, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"None\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"Detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['motion_event_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 5) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x40, 0x06],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('reset_diagnostics')) {\n\t\t\t\t\tdecoded_data['reset_diagnostics'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 5, 39, 32, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Push-button reset\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"DL command rest\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Independent watchdog reset\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Power loss reset\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['reset_diagnostics']['power_loss_reset_count'] = decode_field(arg, 5, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['reset_diagnostics']['watchdog_reset_count'] = decode_field(arg, 5, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['reset_diagnostics']['dl_reset_count'] = decode_field(arg, 5, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['reset_diagnostics']['button_reset_count'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = { decodeUplink: decodeUplink };\nfunction decodeUplink(input) {\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif (input.fPort === 101) {\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile (arg.length > 0) {\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif (num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor (var i = 0; i < num_invalid_writes; i++) {\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\n\tif (input.fPort === 100) {\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [0x10],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"ABP\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"OTAA\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x11],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x12],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x13],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\t\tdecoded_data['loramac_rx2']['dr_number_rx2'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 5;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x20],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x21],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['tick_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x22],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['tick_per_ambient_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x23],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['tick_per_relative_humidity'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x24],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['tick_per_hall_effect'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x25],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['tick_per_ambient_light'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x26],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['tick_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x27],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['tick_per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x28],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['tick_per_pir'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x29],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['tick_per_external_connector_a'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x55],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['tick_per_external_connector_b'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x5C],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('battery_report_opts')) {\n\t\t\t\t\t\tdecoded_data['battery_report_opts'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_voltage_report'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_voltage_report'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_voltage_report'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_lifetime_pct_report'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_lifetime_pct_report'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_lifetime_pct_report'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x2A],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('mode')) {\n\t\t\t\t\t\tdecoded_data['mode'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['mode']['rising_edge_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['mode']['rising_edge_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['mode']['rising_edge_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['mode']['falling_edge_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['mode']['falling_edge_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['mode']['falling_edge_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x2B],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['hall_effect_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x2C],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('hall_effect_report_opts')) {\n\t\t\t\t\t\tdecoded_data['hall_effect_report_opts'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['hall_effect_report_opts']['report_state_enabled'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['hall_effect_report_opts']['report_state_enabled'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['hall_effect_report_opts']['report_state_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['hall_effect_report_opts']['report_count_enabled'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['hall_effect_report_opts']['report_count_enabled'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['hall_effect_report_opts']['report_count_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x2D],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('external_a_mode')) {\n\t\t\t\t\t\tdecoded_data['external_a_mode'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['external_a_mode']['rising_edge_enabled_ex_a'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['external_a_mode']['rising_edge_enabled_ex_a'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['external_a_mode']['rising_edge_enabled_ex_a'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['external_a_mode']['falling_edge_enabled_ex_a'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['external_a_mode']['falling_edge_enabled_ex_a'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['external_a_mode']['falling_edge_enabled_ex_a'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['external_a_mode']['mode_a'] = \"Digital\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['external_a_mode']['mode_a'] = \"Analog\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['external_a_mode']['mode_a'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x4D],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('external_b_mode')) {\n\t\t\t\t\t\tdecoded_data['external_b_mode'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['external_b_mode']['rising_edge_enabled_ex_b'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['external_b_mode']['rising_edge_enabled_ex_b'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['external_b_mode']['rising_edge_enabled_ex_b'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['external_b_mode']['falling_edge_enabled_ex_b'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['external_b_mode']['falling_edge_enabled_ex_b'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['external_b_mode']['falling_edge_enabled_ex_b'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x2E],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['external_connector_a_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x56],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['external_connector_b_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x2F],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('external_values_to_transmit_a')) {\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_state_enabled_ex_a'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_state_enabled_ex_a'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_state_enabled_ex_a'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_count_enabled_ex_a'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_count_enabled_ex_a'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_count_enabled_ex_a'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['count_type_a'] = \"Relative\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['count_type_a'] = \"Total\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['count_type_a'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x4F],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('external_values_to_transmit_b')) {\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_state_enabled_ex_b'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_state_enabled_ex_b'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_state_enabled_ex_b'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_count_enabled_ex_b'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_count_enabled_ex_b'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_count_enabled_ex_b'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['count_type_b'] = \"Relative\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['count_type_b'] = \"Total\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['count_type_b'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x57],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['digital_output_mode'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['digital_output_mode'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['digital_output_mode'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x58],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['ssr_state'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['ssr_state'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['ssr_state'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x59],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ssr_energization_duration'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x44],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['analog_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x45],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['analog_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x46],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('analog_threshold')) {\n\t\t\t\t\t\tdecoded_data['analog_threshold'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['analog_threshold']['high_analog_threshold'] = (decode_field(arg, 4, 31, 16, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\t\tdecoded_data['analog_threshold']['low_analog_threshold'] = (decode_field(arg, 4, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x4A],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['analog_input_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['analog_input_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['analog_input_threshold_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x50],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['pir_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x51],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['pir_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x52],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['pir_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x53],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('pir_mode')) {\n\t\t\t\t\t\tdecoded_data['pir_mode'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['pir_mode']['motion_count_reported'] = \"Disabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['pir_mode']['motion_count_reported'] = \"Enabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['pir_mode']['motion_count_reported'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['pir_mode']['motion_state_reported'] = \"Disabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['pir_mode']['motion_state_reported'] = \"Enabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['pir_mode']['motion_state_reported'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['pir_mode']['event_transmission_enabled'] = \"Disabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['pir_mode']['event_transmission_enabled'] = \"Enabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['pir_mode']['event_transmission_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['pir_mode']['transducer_enabled'] = \"Disabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['pir_mode']['transducer_enabled'] = \"Enabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['pir_mode']['transducer_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x54],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('hold_off_int')) {\n\t\t\t\t\t\tdecoded_data['hold_off_int'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['hold_off_int']['post_turn_on'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\t\tdecoded_data['hold_off_int']['post_disturbance'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x34],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('acceleration_mode')) {\n\t\t\t\t\t\tdecoded_data['acceleration_mode'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['impact_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['impact_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['impact_threshold_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_threshold_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 3, 2, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_power_mode'] = \"Low power\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_power_mode'] = \"Normal\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_power_mode'] = \"High Resolution\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_power_mode'] = \"Invalid\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_power_mode'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['xaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['xaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['xaxis_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['yaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['yaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['yaxis_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['zaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['zaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['zaxis_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['poweron'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['poweron'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_mode']['poweron'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x35],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('sensitivity')) {\n\t\t\t\t\t\tdecoded_data['sensitivity'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 6:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 7:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"+/- 2 g\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"+/-4 g\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"+/-8 g\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"+/-16 g\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x30],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['impact_event_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x32],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('values_to_transmit')) {\n\t\t\t\t\t\tdecoded_data['values_to_transmit'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x36],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['impact_alarm_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x37],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['impact_alarm_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x38],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['impact_alarm_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x31],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['acceleration_event_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x33],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['acceleration_impact_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x39],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['temperature_relative_humidity_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x3A],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['temperature_relative_humidity_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x3B],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('temperature_threshold')) {\n\t\t\t\t\t\tdecoded_data['temperature_threshold'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['temperature_threshold']['high_temp_threshold'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\t\tdecoded_data['temperature_threshold']['low_temp_threshold'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x3C],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['ambient_temperature_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['ambient_temperature_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['ambient_temperature_threshold_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x3D],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('rh_threshold')) {\n\t\t\t\t\t\tdecoded_data['rh_threshold'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['rh_threshold']['high_rh_threshold'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\t\tdecoded_data['rh_threshold']['low_rh_threshold'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x3E],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['relative_humidity_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['relative_humidity_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['relative_humidity_threshold_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x40],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['mcu_temperature_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x41],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['mcu_temperature_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x42],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('mcu_temp_threshold')) {\n\t\t\t\t\t\tdecoded_data['mcu_temp_threshold'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['mcu_temp_threshold']['high_mcu_temp_threshold'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\t\tdecoded_data['mcu_temp_threshold']['low_mcu_temp_threshold'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x43],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enabled'] = \"Disabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enabled'] = \"Enabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x47],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['light_sample_period'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x48],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('light_thresholds')) {\n\t\t\t\t\t\tdecoded_data['light_thresholds'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['light_thresholds']['threshold'] = \"Disabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['light_thresholds']['threshold'] = \"Enabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['light_thresholds']['threshold'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['light_thresholds']['threshold_enabled'] = decode_field(arg, 1, 5, 0, \"unsigned\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x49],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('light_values_to_transmit')) {\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['state_reported'] = \"Disabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['state_reported'] = \"Enabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['state_reported'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['intensity_reported'] = \"Disabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['intensity_reported'] = \"Enabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['intensity_reported'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x71],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['metadata']['app_major_version'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\t\tdecoded_data['metadata']['app_minor_version'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\t\tdecoded_data['metadata']['app_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\t\tdecoded_data['metadata']['loramac_major_version'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\t\tdecoded_data['metadata']['loramac_minor_version'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\t\tdecoded_data['metadata']['loramac_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"EU868\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"US915\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AS923\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AU915\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"IN865\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"CN470\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 6:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"KR920\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 7:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"RU864\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 8:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"DN915\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 7;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x6F],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['resp_to_dl_command_format'] = \"Invalid-write response format\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['resp_to_dl_command_format'] = \"4-byte CRC\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['resp_to_dl_command_format'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t];\n\t}\n\tif (input.fPort === 10) {\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [0x00, 0xBA],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['battery_voltage'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x00, 0xD3],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['rem_batt_capacity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x01, 0x00],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['hall_effect_state'] = \"Magnet Present (Low)\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 255:\n\t\t\t\t\t\t\t\tdecoded_data['hall_effect_state'] = \"Magnet Absent (High)\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['hall_effect_state'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x08, 0x04],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['hall_effect_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x11, 0x02],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ext_conn_a_analog'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x0E, 0x00],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['ext_conn_a_digital'] = \"Short-Circuited\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 255:\n\t\t\t\t\t\t\t\tdecoded_data['ext_conn_a_digital'] = \"Open-Circuited\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['ext_conn_a_digital'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x1E, 0x00],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['ext_conn_b_digital'] = \"Short-Circuited\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 255:\n\t\t\t\t\t\t\t\tdecoded_data['ext_conn_b_digital'] = \"Open-Circuited\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['ext_conn_b_digital'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x0F, 0x04],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ext_conn_a_rel_digital_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x1F, 0x04],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ext_conn_b_rel_digital_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x12, 0x04],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ext_conn_a_tot_digital_count'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x22, 0x04],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ext_conn_b_rel_tot_count'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x0A, 0x00],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"None\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 255:\n\t\t\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"Detected\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x0D, 0x04],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['motion_event_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x0C, 0x00],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Impact Alarm Inactive\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 255:\n\t\t\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Impact Alarm Active\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x05, 0x02],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['impact_magnitude'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x07, 0x71],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('acceleration')) {\n\t\t\t\t\t\tdecoded_data['acceleration'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['acceleration']['xaxis'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\t\tdecoded_data['acceleration']['yaxis'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\t\tdecoded_data['acceleration']['zaxis'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\t\treturn 6;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x03, 0x67],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ambient_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x04, 0x68],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['relative_humidity'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x0B, 0x67],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['mcu_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x02, 0x00],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['light_detected'] = \"Dark\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 255:\n\t\t\t\t\t\t\t\tdecoded_data['light_detected'] = \"Bright\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['light_detected'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x10, 0x02],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['light_intensity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t];\n\t}\n\tif (input.fPort === 5) {\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [0x40, 0x06],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('reset_diagnostics')) {\n\t\t\t\t\t\tdecoded_data['reset_diagnostics'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 5, 39, 32, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Push-button reset\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"SW reset (incl. DL request)\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Independent watchdog reset\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 16:\n\t\t\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Power loss reset\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 128:\n\t\t\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Other resets\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['reset_diagnostics']['power_loss_reset_count'] = decode_field(arg, 5, 31, 24, \"unsigned\");\n\t\t\t\t\tdecoded_data['reset_diagnostics']['watchdog_reset_count'] = decode_field(arg, 5, 23, 16, \"unsigned\");\n\t\t\t\t\tdecoded_data['reset_diagnostics']['dl_reset_count'] = decode_field(arg, 5, 15, 8, \"unsigned\");\n\t\t\t\t\tdecoded_data['reset_diagnostics']['button_reset_count'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 5;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x40, 0x07],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('sensor_error_diagnostics')) {\n\t\t\t\t\t\tdecoded_data['sensor_error_diagnostics'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['sensor_error_diagnostics']['barometer_failure'] = decode_field(arg, 3, 15, 8, \"unsigned\");\n\t\t\t\t\tdecoded_data['sensor_error_diagnostics']['i2c_failure'] = decode_field(arg, 3, 15, 8, \"unsigned\");\n\t\t\t\t\treturn 3;\n\t\t\t\t}\n\t\t\t},\n\t\t];\n\t}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif (totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk) {\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n\t// Converts array of bytes to 8 bit array\n\tfunction convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n\tvar output = {\n\t\t\"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n\t};\n\n\treturn output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number_rx2'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_ambient_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_relative_humidity'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_hall_effect'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_ambient_light'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x27],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_pir'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x55],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_external_connector_a'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x29],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_external_connector_b'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5C],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('battery_report_opts')) {\n\t\t\t\t\tdecoded_data['battery_report_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_voltage_report'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_voltage_report'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_voltage_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_lifetime_pct_report'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_lifetime_pct_report'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_lifetime_pct_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mode')) {\n\t\t\t\t\tdecoded_data['mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mode']['rising_edge_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mode']['rising_edge_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mode']['rising_edge_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mode']['falling_edge_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mode']['falling_edge_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mode']['falling_edge_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2B],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['hall_effect_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x49],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('light_values_to_transmit')) {\n\t\t\t\t\tdecoded_data['light_values_to_transmit'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['report_state_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['report_state_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['report_state_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['report_intensity_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['report_intensity_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['report_intensity_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2C],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('hall_effect_report_opts')) {\n\t\t\t\t\tdecoded_data['hall_effect_report_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hall_effect_report_opts']['report_count_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hall_effect_report_opts']['report_count_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hall_effect_report_opts']['report_count_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('external_a_mode')) {\n\t\t\t\t\tdecoded_data['external_a_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_a_mode']['rising_edge_enabled_ex_a'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_a_mode']['rising_edge_enabled_ex_a'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_a_mode']['rising_edge_enabled_ex_a'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_a_mode']['falling_edge_enabled_ex_a'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_a_mode']['falling_edge_enabled_ex_a'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_a_mode']['falling_edge_enabled_ex_a'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['connection_mode'] = \"Digital\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['connection_mode'] = \"Analog\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['connection_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('external_b_mode')) {\n\t\t\t\t\tdecoded_data['external_b_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['rising_edge_enabled_ex_b'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['rising_edge_enabled_ex_b'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['rising_edge_enabled_ex_b'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['falling_edge_enabled_ex_b'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['falling_edge_enabled_ex_b'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['falling_edge_enabled_ex_b'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x56],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['external_connector_a_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2E],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['external_connector_b_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4F],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('external_values_to_transmit_a')) {\n\t\t\t\t\tdecoded_data['external_values_to_transmit_a'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_state_enabled_ex_a'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_state_enabled_ex_a'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_state_enabled_ex_a'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_count_enabled_ex_a'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_count_enabled_ex_a'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_count_enabled_ex_a'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['count_type_a'] = \"Relative\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['count_type_a'] = \"Total\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['count_type_a'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2F],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('external_values_to_transmit_b')) {\n\t\t\t\t\tdecoded_data['external_values_to_transmit_b'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_state_enabled_ex_b'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_state_enabled_ex_b'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_state_enabled_ex_b'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_count_enabled_ex_b'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_count_enabled_ex_b'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_count_enabled_ex_b'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['count_type_b'] = \"Relative\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['count_type_b'] = \"Total\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['count_type_b'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x57],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['digital_output_mode'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['digital_output_mode'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['digital_output_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x58],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ssr_state'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ssr_state'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ssr_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x59],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ssr_energization_duration'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x44],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['analog_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x45],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['analog_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x46],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('analog_threshold')) {\n\t\t\t\t\tdecoded_data['analog_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['analog_threshold']['high_analog_threshold'] = (decode_field(arg, 4, 31, 16, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['analog_threshold']['low_analog_threshold'] = (decode_field(arg, 4, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['analog_input_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['analog_input_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['analog_input_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('pir_mode')) {\n\t\t\t\t\tdecoded_data['pir_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['motion_count_reported'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['motion_count_reported'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['motion_count_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['motion_state_reported'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['motion_state_reported'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['motion_state_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['event_transmission_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['event_transmission_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['event_transmission_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['transducer_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['transducer_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['transducer_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('hold_off_int')) {\n\t\t\t\t\tdecoded_data['hold_off_int'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['hold_off_int']['post_turn_on'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['hold_off_int']['post_disturbance'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4E],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_sensitivity'] = decode_field(arg, 3, 23, 0, \"unsigned\");\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3F],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('fov_object_temp_mode')) {\n\t\t\t\t\tdecoded_data['fov_object_temp_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fov_object_temp_mode']['pir_fov_object_temp'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fov_object_temp_mode']['pir_fov_object_temp'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fov_object_temp_mode']['pir_fov_object_temp'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4C],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['fov_object_temp_high'] = decode_field(arg, 3, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['fov_object_temp_low'] = decode_field(arg, 3, 7, 0, \"signed\");\n\t\t\t\tvar val = decode_field(arg, 3, 23, 23, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fov_object_temp_thresholds_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fov_object_temp_thresholds_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fov_object_temp_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_mode')) {\n\t\t\t\t\tdecoded_data['acceleration_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['impact_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['impact_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['impact_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_power_mode'] = \"Low power\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_power_mode'] = \"Normal\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_power_mode'] = \"High Resolution\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_power_mode'] = \"Invalid\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['acceleration_power_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['xaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['xaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['xaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['yaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['yaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['yaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['zaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['zaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['zaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['poweron'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['poweron'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_mode']['poweron'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x35],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sensitivity')) {\n\t\t\t\t\tdecoded_data['sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_sample_rate'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"+/- 2 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"+/-4 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"+/-8 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"+/-16 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensitivity']['accelerometer_measurement_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_event_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x32],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('values_to_transmit')) {\n\t\t\t\t\tdecoded_data['values_to_transmit'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x36],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_alarm_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x37],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_alarm_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x38],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_alarm_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x31],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_debounce_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x39],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temp_rh_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_rh_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3B],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('temperature_threshold')) {\n\t\t\t\t\tdecoded_data['temperature_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['temperature_threshold']['temp_threshold_high'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['temperature_threshold']['temp_threshold_low'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3C],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('rh_threshold')) {\n\t\t\t\t\tdecoded_data['rh_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['rh_threshold']['rh_threshold_high'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['rh_threshold']['rh_threshold_low'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3E],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mcu_temp_threshold')) {\n\t\t\t\t\tdecoded_data['mcu_temp_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['mcu_temp_threshold']['high_mcu_temp_threshold'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['mcu_temp_threshold']['low_mcu_temp_threshold'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x47],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['light_sample_period'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x48],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('light_thresholds')) {\n\t\t\t\t\tdecoded_data['light_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_thresholds']['threshold'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['light_thresholds']['threshold'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_thresholds']['threshold'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('AE2_thresholds')) {\n\t\t\t\t\tdecoded_data['AE2_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['AE2_thresholds']['threshold_enabled'] = decode_field(arg, 9, 71, 64, \"unsigned\");\n\t\t\t\tdecoded_data['AE2_thresholds']['ae20_threshold'] = decode_field(arg, 9, 63, 48, \"unsigned\");\n\t\t\t\tdecoded_data['AE2_thresholds']['ae21_threshold'] = decode_field(arg, 9, 47, 32, \"unsigned\");\n\t\t\t\tdecoded_data['AE2_thresholds']['ae22_threshold'] = decode_field(arg, 9, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['AE2_thresholds']['ae23_threshold'] = decode_field(arg, 9, 15, 0, \"unsigned\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x60],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sample_analysis_mode')) {\n\t\t\t\t\tdecoded_data['sample_analysis_mode'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['sample_analysis_mode']['iir_recall_factor'] = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sample_analysis_mode']['analysis_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sample_analysis_mode']['analysis_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sample_analysis_mode']['analysis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x61],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('hpf_mode')) {\n\t\t\t\t\tdecoded_data['hpf_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_outputs'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_outputs'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_outputs'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_interrupts'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_interrupts'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_interrupts'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_sample_analysis'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_sample_analysis'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_sample_analysis'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['hpf_mode']['cutoff'] = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x62],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_stop_threshold'] = (decode_field(arg, 4, 31, 16, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_event_report_duration_min'] = decode_field(arg, 4, 15, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x63],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ml_config')) {\n\t\t\t\t\tdecoded_data['ml_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ml_config']['num'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['ml_config']['ml1upper'] = (decode_field(arg, 7, 47, 32, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['ml_config']['ml1lower'] = (decode_field(arg, 7, 31, 16, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['ml_config']['ml_step'] = (decode_field(arg, 7, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x65],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ml2_dlim_config')) {\n\t\t\t\t\tdecoded_data['ml2_dlim_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ml2_dlim_config']['num_dims'] = decode_field(arg, 5, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['ml2_dlim_config']['dlim0'] = decode_field(arg, 5, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['ml2_dlim_config']['dlim_step'] = decode_field(arg, 5, 15, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x66],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('AE1_thresholds')) {\n\t\t\t\t\tdecoded_data['AE1_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['AE1_thresholds']['thresholds_enabled'] = decode_field(arg, 9, 71, 64, \"unsigned\");\n\t\t\t\tdecoded_data['AE1_thresholds']['ae10_threshold'] = decode_field(arg, 9, 63, 48, \"unsigned\");\n\t\t\t\tdecoded_data['AE1_thresholds']['ae11_threshold'] = decode_field(arg, 9, 47, 32, \"unsigned\");\n\t\t\t\tdecoded_data['AE1_thresholds']['ae12_threshold '] = decode_field(arg, 9, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['AE1_thresholds']['ae13_threshold'] = decode_field(arg, 9, 15, 0, \"unsigned\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x68],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_analysis_tx')) {\n\t\t\t\t\tdecoded_data['accelerometer_analysis_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_total_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_total_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_total_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_min_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_min_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_min_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_max_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_max_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_max_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_sd_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_sd_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_sd_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['accelerometer_analysis_tx']['count_enabled'] = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_init_retries'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6C],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['cdda_event_mode'] = \"Data sent on Port 10 (Legacy)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['cdda_event_mode'] = \"Data sent on Port 11/12\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['cdda_event_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6D],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['cdda_critical_event_options'] = decode_field(arg, 2, 12, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6E],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['cdda_retransmission'] = decode_field(arg, 3, 23, 0, \"unsigned\");\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6F],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['resp_to_dl_command_format'] = \"Invalid-write response format\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['resp_to_dl_command_format'] = \"4-byte CRC\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['resp_to_dl_command_format'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['modem_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['modem_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['modem_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"DN915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xBA],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['battery_voltage'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xD3],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rem_batt_capacity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hall_effect_state'] = \"Magnet Present (Low)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['hall_effect_state'] = \"Magnet Absent (High)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hall_effect_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x08, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['hall_effect_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0E, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['extconnector_a_state'] = \"Short-Circuited\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['extconnector_a_state'] = \"Open-Circuited\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['extconnector_a_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['extconnector_b_state'] = \"Short-Circuited\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['extconnector_b_state'] = \"Open-Circuited\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['extconnector_b_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_b_analog'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x1F, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_a_relative_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0F, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_b_relative_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_a_total_count'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_b_total_count'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['extconnectors_output_state'] = \"SSR non-conducting (Low)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['extconnectors_output_state'] = \"SSR conducting (High)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['extconnectors_output_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_init_state'] = \"Initialization Successful\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['pir_init_state'] = \"Initialization Unsuccessful\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_init_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0A, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"None\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"Detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['motion_event_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['motion_event_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x06, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_object_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0C, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Impact Alarm Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Impact Alarm Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_magnitude'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x07, 0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration')) {\n\t\t\t\t\tdecoded_data['acceleration'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['acceleration']['xaxis'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration']['yaxis'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration']['zaxis'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ambient_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04, 0x68],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['relative_humidity'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0B, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Dark\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Bright\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['light_intensity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 5) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x40, 0x06],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('reset_diagnostics')) {\n\t\t\t\t\tdecoded_data['reset_diagnostics'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 5, 39, 32, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Push-button reset\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"SW reset (incl. DL request)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Independent watchdog reset\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Power loss reset\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 128:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Other resets\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['reset_diagnostics']['power_loss_reset_count'] = decode_field(arg, 5, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['reset_diagnostics']['watchdog_reset_count'] = decode_field(arg, 5, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['reset_diagnostics']['sw_reset_count'] = decode_field(arg, 5, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['reset_diagnostics']['button_reset_count'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40, 0x07],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sensor_error_diagnostics')) {\n\t\t\t\t\tdecoded_data['sensor_error_diagnostics'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['sensor_error_diagnostics']['barometer_failure'] = decode_field(arg, 3, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['sensor_error_diagnostics']['i2c_failure'] = decode_field(arg, 3, 15, 8, \"unsigned\");\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number_rx2'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_ambient_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_relative_humidity'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_hall_effect'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_ambient_light'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x27],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_pir'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x55],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_external_connector_a'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x29],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_external_connector_b'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5C],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('battery_report_opts')) {\n\t\t\t\t\tdecoded_data['battery_report_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_voltage_report'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_voltage_report'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_voltage_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_lifetime_pct_report'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_lifetime_pct_report'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_report_opts']['battery_lifetime_pct_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('hall_effect_mode')) {\n\t\t\t\t\tdecoded_data['hall_effect_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hall_effect_mode']['rising_edge_enabled_hall'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hall_effect_mode']['rising_edge_enabled_hall'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hall_effect_mode']['rising_edge_enabled_hall'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hall_effect_mode']['falling_edge_enabled_hall'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hall_effect_mode']['falling_edge_enabled_hall'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hall_effect_mode']['falling_edge_enabled_hall'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2B],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['hall_effect_count_threshold'] = decode_field(arg, 2, 13, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2C],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('hall_effect_report_options')) {\n\t\t\t\t\tdecoded_data['hall_effect_report_options'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hall_effect_report_options']['report_state_enabled_hall'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hall_effect_report_options']['report_state_enabled_hall'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hall_effect_report_options']['report_state_enabled_hall'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hall_effect_report_options']['report_count_enabled_hall'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hall_effect_report_options']['report_count_enabled_hall'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hall_effect_report_options']['report_count_enabled_hall'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('external_a_mode')) {\n\t\t\t\t\tdecoded_data['external_a_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_a_mode']['rising_edge_enabled_ex_a'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_a_mode']['rising_edge_enabled_ex_a'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_a_mode']['rising_edge_enabled_ex_a'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_a_mode']['falling_edge_enabled_ex_a'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_a_mode']['falling_edge_enabled_ex_a'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_a_mode']['falling_edge_enabled_ex_a'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('external_b_mode')) {\n\t\t\t\t\tdecoded_data['external_b_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['rising_edge_enabled_ex_b'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['rising_edge_enabled_ex_b'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['rising_edge_enabled_ex_b'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['falling_edge_enabled_ex_b'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['falling_edge_enabled_ex_b'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['falling_edge_enabled_ex_b'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['connection_mode'] = \"Digital\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['connection_mode'] = \"Analog\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_b_mode']['connection_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x56],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['external_connector_a_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2E],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['external_connector_b_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4F],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('external_values_to_transmit_a')) {\n\t\t\t\t\tdecoded_data['external_values_to_transmit_a'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_state_enabled_ex_a'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_state_enabled_ex_a'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_state_enabled_ex_a'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_count_enabled_ex_a'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_count_enabled_ex_a'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['report_count_enabled_ex_a'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['count_type_a'] = \"Relative\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['count_type_a'] = \"Total\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_a']['count_type_a'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2F],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('external_values_to_transmit_b')) {\n\t\t\t\t\tdecoded_data['external_values_to_transmit_b'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_state_enabled_ex_b'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_state_enabled_ex_b'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_state_enabled_ex_b'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_count_enabled_ex_b'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_count_enabled_ex_b'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['report_count_enabled_ex_b'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['count_type_b'] = \"Relative\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['count_type_b'] = \"Total\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['external_values_to_transmit_b']['count_type_b'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x57],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['digital_output_mode'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['digital_output_mode'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['digital_output_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x58],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ssr_state'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ssr_state'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ssr_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x59],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ssr_energization_duration'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x44],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['analog_input_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x45],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['analog_input_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x46],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('analog_threshold')) {\n\t\t\t\t\tdecoded_data['analog_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['analog_threshold']['high_analog_threshold'] = (decode_field(arg, 4, 31, 16, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['analog_threshold']['low_analog_threshold'] = (decode_field(arg, 4, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['analog_input_threshold_status'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['analog_input_threshold_status'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['analog_input_threshold_status'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('pir_mode')) {\n\t\t\t\t\tdecoded_data['pir_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_count_reported'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_count_reported'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_count_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_state_reported'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_state_reported'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_state_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_value_reported'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_value_reported'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_value_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_range'] = \"Long-range Detection\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_range'] = \"Short-range Detection\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_presence_flag'] = \"Presence Detection\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_presence_flag'] = \"Motion Detection\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['pir_presence_flag'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['event_transmission_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['event_transmission_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['event_transmission_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_mode']['transducer_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_mode']['transducer_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_mode']['transducer_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('pir_holdoff')) {\n\t\t\t\t\tdecoded_data['pir_holdoff'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['pir_holdoff']['post_turn_on'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['pir_holdoff']['post_disturbance'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4E],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('pir_sensitivity')) {\n\t\t\t\t\tdecoded_data['pir_sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['pir_sensitivity']['pir_sens_threshold'] = decode_field(arg, 3, 23, 8, \"unsigned\");\n\t\t\t\tdecoded_data['pir_sensitivity']['pir_sens_hysteresis'] = decode_field(arg, 3, 7, 0, \"unsigned\");\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_init_retries'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3F],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_fov_object_temp'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pir_fov_object_temp'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_fov_object_temp'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4C],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('fov_temp_thresholds')) {\n\t\t\t\t\tdecoded_data['fov_temp_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['fov_temp_thresholds']['fov_object_temp_high'] = decode_field(arg, 3, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['fov_temp_thresholds']['fov_object_temp_low'] = decode_field(arg, 3, 7, 0, \"signed\");\n\t\t\t\tvar val = decode_field(arg, 3, 23, 23, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fov_temp_thresholds']['fov_object_temp_thresholds_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fov_temp_thresholds']['fov_object_temp_thresholds_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fov_temp_thresholds']['fov_object_temp_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer')) {\n\t\t\t\t\tdecoded_data['accelerometer'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer']['impact_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer']['impact_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer']['impact_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer']['acceleration_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer']['acceleration_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer']['acceleration_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer']['acceleration_power_mode'] = \"Low power\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer']['acceleration_power_mode'] = \"Normal\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accelerometer']['acceleration_power_mode'] = \"High Resolution\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accelerometer']['acceleration_power_mode'] = \"Invalid\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer']['acceleration_power_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer']['xaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer']['xaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer']['xaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer']['yaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer']['yaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer']['yaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer']['zaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer']['zaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer']['zaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer']['poweron'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer']['poweron'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer']['poweron'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x35],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_sensitivityAccelerometer Sensitivity')) {\n\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_sample_rate'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_measurement_range'] = \"+/- 2 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_measurement_range'] = \"+/-4 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_measurement_range'] = \"+/-8 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_measurement_range'] = \"+/-16 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivityAccelerometer Sensitivity']['accelerometer_measurement_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_event_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x32],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('values_to_transmit')) {\n\t\t\t\t\tdecoded_data['values_to_transmit'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_alarm_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_magnitude_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_periodic_vector_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_magnitude_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_transmit']['report_event_vector_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x36],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_alarm_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x37],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_alarm_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x38],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['impact_alarm_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x31],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_debounce_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x39],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temp_rh_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_rh_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3B],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('temperature_threshold')) {\n\t\t\t\t\tdecoded_data['temperature_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['temperature_threshold']['temp_threshold_high'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['temperature_threshold']['temp_threshold_low'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3C],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('rh_threshold')) {\n\t\t\t\t\tdecoded_data['rh_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['rh_threshold']['rh_threshold_high'] = (decode_field(arg, 2, 15, 8, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\tdecoded_data['rh_threshold']['rh_threshold_low'] = (decode_field(arg, 2, 7, 0, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3E],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mcu_temp_threshold')) {\n\t\t\t\t\tdecoded_data['mcu_temp_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['mcu_temp_threshold']['high_mcu_temp_threshold'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['mcu_temp_threshold']['low_mcu_temp_threshold'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x47],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['light_sample_period'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x48],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('light_thresholds')) {\n\t\t\t\t\tdecoded_data['light_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['light_thresholds']['threshold_light'] = decode_field(arg, 1, 5, 0, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_thresholds']['threshold_enabled_light'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['light_thresholds']['threshold_enabled_light'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_thresholds']['threshold_enabled_light'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x49],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('light_values_to_transmit')) {\n\t\t\t\t\tdecoded_data['light_values_to_transmit'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['report_state_enabled_light'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['report_state_enabled_light'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['report_state_enabled_light'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['report_intensity_enabled_light'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['report_intensity_enabled_light'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_values_to_transmit']['report_intensity_enabled_light'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x60],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sample_analysis_mode')) {\n\t\t\t\t\tdecoded_data['sample_analysis_mode'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['sample_analysis_mode']['iir_recall_factor'] = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sample_analysis_mode']['analysis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sample_analysis_mode']['analysis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sample_analysis_mode']['analysis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x61],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('hpf_mode')) {\n\t\t\t\t\tdecoded_data['hpf_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_outputs'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_outputs'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_outputs'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_interrupts'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_interrupts'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_interrupts'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_sample_analysis'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_sample_analysis'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hpf_mode']['enabled_on_sample_analysis'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['hpf_mode']['cutoff'] = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x62],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_event_thresholds')) {\n\t\t\t\t\tdecoded_data['acceleration_event_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['acceleration_event_thresholds']['acceleration_event_stop_threshold'] = (decode_field(arg, 4, 31, 16, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_event_thresholds']['acceleration_event_report_duration_min'] = decode_field(arg, 4, 15, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x63],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ml_config')) {\n\t\t\t\t\tdecoded_data['ml_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ml_config']['num'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['ml_config']['ml1upper'] = (decode_field(arg, 7, 47, 32, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['ml_config']['ml1lower'] = (decode_field(arg, 7, 31, 16, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['ml_config']['ml_step'] = (decode_field(arg, 7, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x64],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ml1_dlim_config')) {\n\t\t\t\t\tdecoded_data['ml1_dlim_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ml1_dlim_config']['ml1_num_dims'] = decode_field(arg, 5, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['ml1_dlim_config']['ml1_dlim0'] = decode_field(arg, 5, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['ml1_dlim_config']['ml1_dlim_step'] = decode_field(arg, 5, 15, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x65],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ml2_dlim_config')) {\n\t\t\t\t\tdecoded_data['ml2_dlim_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ml2_dlim_config']['ml2_num_dims'] = decode_field(arg, 5, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['ml2_dlim_config']['ml2_dlim0'] = decode_field(arg, 5, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['ml2_dlim_config']['ml2_dlim_step'] = decode_field(arg, 5, 15, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x66],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('AE1_thresholds')) {\n\t\t\t\t\tdecoded_data['AE1_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['AE1_thresholds']['ae1_thresholds_enabled'] = decode_field(arg, 9, 71, 64, \"unsigned\");\n\t\t\t\tdecoded_data['AE1_thresholds']['ae10_threshold'] = decode_field(arg, 9, 63, 48, \"unsigned\");\n\t\t\t\tdecoded_data['AE1_thresholds']['ae11_threshold'] = decode_field(arg, 9, 47, 32, \"unsigned\");\n\t\t\t\tdecoded_data['AE1_thresholds']['ae12_threshold '] = decode_field(arg, 9, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['AE1_thresholds']['ae13_threshold'] = decode_field(arg, 9, 15, 0, \"unsigned\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('AE2_thresholds')) {\n\t\t\t\t\tdecoded_data['AE2_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['AE2_thresholds']['ae2_thresholds_enabled'] = decode_field(arg, 9, 71, 64, \"unsigned\");\n\t\t\t\tdecoded_data['AE2_thresholds']['ae20_threshold'] = decode_field(arg, 9, 63, 48, \"unsigned\");\n\t\t\t\tdecoded_data['AE2_thresholds']['ae21_threshold'] = decode_field(arg, 9, 47, 32, \"unsigned\");\n\t\t\t\tdecoded_data['AE2_thresholds']['ae22_threshold'] = decode_field(arg, 9, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['AE2_thresholds']['ae23_threshold'] = decode_field(arg, 9, 15, 0, \"unsigned\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x68],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_analysis_tx')) {\n\t\t\t\t\tdecoded_data['accelerometer_analysis_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_total_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_total_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_total_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_min_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_min_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_min_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_max_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_max_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_max_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_sd_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_sd_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_analysis_tx']['duration_sd_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['accelerometer_analysis_tx']['count_enabled'] = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6C],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['cdda_event_mode'] = \"Data sent on Port 10 (Legacy)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['cdda_event_mode'] = \"Data sent on Port 11/12\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['cdda_event_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6D],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['cdda_critical_event_options'] = decode_field(arg, 2, 12, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6E],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['cdda_retransmission'] = decode_field(arg, 3, 23, 0, \"unsigned\");\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6F],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['resp_to_dl_command_format'] = \"Invalid-write response format\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['resp_to_dl_command_format'] = \"4-byte CRC\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['resp_to_dl_command_format'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['modem_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['modem_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['modem_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"DN915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xBA],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['battery_voltage'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xD3],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rem_batt_capacity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['hall_effect_state'] = \"Magnet Present (Low)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['hall_effect_state'] = \"Magnet Absent (High)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['hall_effect_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x08, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['hall_effect_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x1E, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['extconnector_a_state'] = \"Short-Circuited\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['extconnector_a_state'] = \"Open-Circuited\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['extconnector_a_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_b_analog'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0E, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['extconnector_b_state'] = \"Short-Circuited\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['extconnector_b_state'] = \"Open-Circuited\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['extconnector_b_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x1F, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_a_relative_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0F, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_b_relative_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_a_total_count'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['extconnector_b_total_count'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['extconnectors_output_state'] = \"SSR non-conducting (Low)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['extconnectors_output_state'] = \"SSR conducting (High)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['extconnectors_output_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_init_state'] = \"Initialization Successful\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['pir_init_state'] = \"Initialization Unsuccessful\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_init_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0A, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pir_event_state'] = \"No Motion/Presence Detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['pir_event_state'] = \"Motion/Presence Detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pir_event_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_event_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x09, 0x03],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_event_value'] = decode_field(arg, 2, 15, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x06, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pir_object_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0C, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Impact Alarm Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Impact Alarm Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['impact_alarm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_magnitude'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x07, 0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration')) {\n\t\t\t\t\tdecoded_data['acceleration'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['acceleration']['xaxis_accel'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration']['yaxis_accel'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration']['zaxis_accel'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ambient_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04, 0x68],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['relative_humidity'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0B, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Dark\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Bright\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['light_intensity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 5) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x40, 0x06],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('reset_diagnostics')) {\n\t\t\t\t\tdecoded_data['reset_diagnostics'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 5, 39, 32, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Push-button reset\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"SW reset (incl. DL request)\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Independent watchdog reset\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 16:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Power loss reset\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 128:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Other resets\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reset_diagnostics']['reset_reason'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['reset_diagnostics']['power_loss_reset_count'] = decode_field(arg, 5, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['reset_diagnostics']['watchdog_reset_count'] = decode_field(arg, 5, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['reset_diagnostics']['sw_reset_count'] = decode_field(arg, 5, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['reset_diagnostics']['button_reset_count'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40, 0x07],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sensor_error_diagnostics')) {\n\t\t\t\t\tdecoded_data['sensor_error_diagnostics'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['sensor_error_diagnostics']['barometer_failure'] = decode_field(arg, 5, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['sensor_error_diagnostics']['i2c_failure'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40, 0x08],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sensor_assert_diagnostics')) {\n\t\t\t\t\tdecoded_data['sensor_assert_diagnostics'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['sensor_assert_diagnostics']['Ir_failure'] = decode_field(arg, 8, 63, 32, \"unsigned\");\n\t\t\t\tdecoded_data['sensor_assert_diagnostics']['pc_failure'] = decode_field(arg, 8, 31, 0, \"unsigned\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) {\n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['device_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['app_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['app_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['device_address'] = decode_field(arg, 4, 31, 0, \"hexstring\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['network_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['app_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 2, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x19],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['loramac_net_id_msb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x1A],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['loramac_net_id_lsb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['core'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_digital_input'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_humidity'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_input1'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_input2'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_input3'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x27],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_output1'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x29],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_output2'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('edge')) {\n\t\t\t\t\tdecoded_data['edge'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['edge']['rising'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['edge']['rising'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['edge']['rising'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['edge']['falling'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['edge']['falling'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['edge']['falling'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2B],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['input1_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2C],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('report')) {\n\t\t\t\t\tdecoded_data['report'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report']['input_state'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report']['input_state'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report']['input_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report']['counter_value'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report']['counter_value'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report']['counter_value'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['input23_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x31],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['input23_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x32],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('input2_threshold')) {\n\t\t\t\t\tdecoded_data['input2_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['input2_threshold']['input2_current_high_threshold'] = (decode_field(arg, 2, 7, 0, \"unsigned\") * 0.0001).toFixed(4);\n\t\t\t\tdecoded_data['input2_threshold']['input2_current_low_threshold'] = (decode_field(arg, 2, 15, 8, \"unsigned\") * 0.0001).toFixed(4);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('input3_threshold')) {\n\t\t\t\t\tdecoded_data['input3_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['input3_threshold']['input3_current_high_threshold'] = (decode_field(arg, 2, 7, 0, \"unsigned\") * 0.05).toFixed(2);\n\t\t\t\tdecoded_data['input3_threshold']['input3_current_low_threshold'] = (decode_field(arg, 2, 15, 8, \"unsigned\") * 0.05).toFixed(2);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('input23_threshold_enable')) {\n\t\t\t\t\tdecoded_data['input23_threshold_enable'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['input23_threshold_enable']['input2_threshold_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['input23_threshold_enable']['input2_threshold_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['input23_threshold_enable']['input2_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['input23_threshold_enable']['input3_threshold_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['input23_threshold_enable']['input3_threshold_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['input23_threshold_enable']['input3_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x39],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['temperature_relative_humidity_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3A],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['temperature_relative_humidity_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3B],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('temp_threshold')) {\n\t\t\t\t\tdecoded_data['temp_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['temp_threshold']['temperature_high_threshold'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\tdecoded_data['temp_threshold']['temperature_low_threshold'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3C],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['temperature_threshold_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['temperature_threshold_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['temperature_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['mcu_temperature_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['mcu_temperature_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('mcu_temp_threshold')) {\n\t\t\t\t\tdecoded_data['mcu_temp_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['mcu_temp_threshold']['mcu_temperature_high_threshold'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['mcu_temp_threshold']['mcu_temperature_low_threshold'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['output1_control'] = \"Manual\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['output1_control'] = \"Input 1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['output1_control'] = \"Input 2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['output1_control'] = \"Input 3\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['output1_control'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['output1_delay'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['output2_control'] = \"Manual\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['output2_control'] = \"Input 1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['output2_control'] = \"Input 2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['output2_control'] = \"Input 3\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['output2_control'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['output2_delay'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x60],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['serial_interface_type'] = \"RS485/RS422\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['serial_interface_type'] = \"RS232\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['serial_interface_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x61],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['serial_baud_rate'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x63],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['serial_parity_bits'] = \"No parity\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['serial_parity_bits'] = \"Odd\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['serial_parity_bits'] = \"Even\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['serial_parity_bits'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x64],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['serial_stop_bits'] = \"0.5 bits\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 10:\n\t\t\t\t\t\tdecoded_data['serial_stop_bits'] = \"1.0 bits\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 15:\n\t\t\t\t\t\tdecoded_data['serial_stop_bits'] = \"1.5 bits\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 20:\n\t\t\t\t\t\tdecoded_data['serial_stop_bits'] = \"2.0 bits\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['serial_stop_bits'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x65],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['serial_duplex_mode'] = \"Half duplex\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['serial_duplex_mode'] = \"Full duplex\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['serial_duplex_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x66],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['serial_upink_format'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x67],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['continuous_serial_receive'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x68],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['serial_interface_symbol_timeout'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x69],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['serial_interface_rx_timeout'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_major_version'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_minor_version'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_major_version'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_minor_version'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"DN915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x73],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['thermometer_tick_idle'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x74],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['thermometer_tick_active'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x75],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['thermometer_periodic_enable_h0'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x76],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['thermometer_periodic_enable_h1'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x77],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['thermometer_sample_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x78],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['thermometer_sample_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x79],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['thermometer_threshold_high'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\tdecoded_data['thermometer_threshold_low'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x7A],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['thermometer_threshold_enable_h0'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x7B],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['thermometer_threshold_enable_h1'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x7C],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['thermometer_resolution'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 20) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['done'] = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\tdecoded_data['transaction_id'] = decode_field(arg, 1, 6, 5, \"unsigned\");\n\t\t\t\tdecoded_data['fragment_number'] = decode_field(arg, 1, 4, 0, \"unsigned\");\n\t\t\t\tdecoded_data['serial_data'] = decode_field(arg, 1, 511, 8, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xFF],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['battery_voltage'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.01).toFixed(2);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01, 0x01],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['output1'] = \"Open\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['output1'] = \"Closed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['output1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x01],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['output2'] = \"Open\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['output2'] = \"Closed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['output2'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03, 0x67],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04, 0x68],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['relative_humidity'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05, 0x00],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['input_1'] = \"FALSE\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['input_1'] = \"TRUE\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['input_1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x06, 0x02],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['input_2'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.000001).toFixed(6);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x07, 0x02],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['input_3'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x08, 0x04],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['input_1_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x09, 0x67],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['mcu_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 11) {\n decoder = [\n {\n key: [],\n fn: function(arg) {\n var dataChannels = [\"periodic_data_h0\", \"periodic_data_h1\", \"threshold_data_h0\", \"threshold_data_h1\"];\n while (arg.length > 0) {\n var header = arg.slice(0, 2);\n arg = arg.slice(2);\n\n var dataChannelIndex = apply_data_type(extract_bytes(header, 15, 12), \"unsigned\");\n decoded_data[dataChannels[dataChannelIndex]] = {};\n\n var bitmask = apply_data_type(extract_bytes(header, 9, 0), \"unsigned\", 1, 0, 0);\n\n if (arg.length === 0)\n return decoded_data;\n\n var thermometerOnArray = bitmask.toString(2).split('').map(function(el) {\n return parseInt(el, 10);\n });\n\n\n for (var i = 0; i < thermometerOnArray.length; i++) {\n if (thermometerOnArray[i] === 1) {\n var valueArray = arg.slice(0, 2);\n arg = arg.length === 2 ? [] : arg.slice(2);\n\n var sign = (apply_data_type(extract_bytes(valueArray, 10, 10), \"unsigned\") ? -1 : 1);\n var value = ((apply_data_type(extract_bytes(valueArray, 9, 0), \"unsigned\"))/16).toFixed(2);\n var alarm_on = apply_data_type(extract_bytes(valueArray, 15, 15), \"unsigned\");\n\n decoded_data[dataChannels[dataChannelIndex]][\"thermometer_\" + (i)] = {\n temperature: sign * value,\n alarm: alarm_on\n };\n }\n }\n }\n\n return decoded_data;\n }\n }\n ];\n}\nif (input.fPort === 21) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x6A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('modbus_rtu_polling_command_6A')) {\n\t\t\t\t\tdecoded_data['modbus_rtu_polling_command_6A'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6A']['polling_A'] = decode_field(arg, 10, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6A']['command_A'] = decode_field(arg, 10, 79, 16, \"unsigned\");\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 22) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x6B],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('modbus_rtu_polling_command_6B')) {\n\t\t\t\t\tdecoded_data['modbus_rtu_polling_command_6B'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6B']['polling_B'] = decode_field(arg, 10, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6B']['command_B'] = decode_field(arg, 10, 79, 16, \"unsigned\");\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 23) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x6C],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('modbus_rtu_polling_command_6C')) {\n\t\t\t\t\tdecoded_data['modbus_rtu_polling_command_6C'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6C']['polling_C'] = decode_field(arg, 10, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6C']['command_C'] = decode_field(arg, 10, 79, 16, \"unsigned\");\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 24) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x6D],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('modbus_rtu_polling_command_6D')) {\n\t\t\t\t\tdecoded_data['modbus_rtu_polling_command_6D'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6D']['polling_D'] = decode_field(arg, 10, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6D']['command_D'] = decode_field(arg, 10, 79, 16, \"unsigned\");\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 25) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x6E],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('modbus_rtu_polling_command_6E')) {\n\t\t\t\t\tdecoded_data['modbus_rtu_polling_command_6E'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6E']['polling_E'] = decode_field(arg, 10, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6E']['command_E'] = decode_field(arg, 10, 79, 16, \"unsigned\");\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 26) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x6F],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('modbus_rtu_polling_command_6F')) {\n\t\t\t\t\tdecoded_data['modbus_rtu_polling_command_6F'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6F']['polling_F'] = decode_field(arg, 10, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6F']['command_F'] = decode_field(arg, 10, 79, 16, \"unsigned\");\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) {\n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['device_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['app_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['app_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['device_address'] = decode_field(arg, 4, 31, 0, \"hexstring\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['network_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['app_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 2, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 7, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['lora_class'] = \"Class A\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 12:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['lora_class'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['lora_class'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x19],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['loramac_net_id_msb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x1A],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['loramac_net_id_lsb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['core'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_digital_input'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_humidity'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_input1'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_input2'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_input3'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x27],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_output1'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x29],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['per_output2'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('edge')) {\n\t\t\t\t\tdecoded_data['edge'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['edge']['rising'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['edge']['rising'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['edge']['rising'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['edge']['falling'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['edge']['falling'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['edge']['falling'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2B],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['input1_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2C],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('report')) {\n\t\t\t\t\tdecoded_data['report'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report']['input_state'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report']['input_state'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report']['input_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report']['counter_value'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report']['counter_value'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report']['counter_value'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['input23_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x31],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['input23_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x32],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('input2_threshold')) {\n\t\t\t\t\tdecoded_data['input2_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['input2_threshold']['input2_current_high_threshold'] = (decode_field(arg, 2, 7, 0, \"unsigned\") * 0.0001).toFixed(4);\n\t\t\t\tdecoded_data['input2_threshold']['input2_current_low_threshold'] = (decode_field(arg, 2, 15, 8, \"unsigned\") * 0.0001).toFixed(4);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('input3_threshold')) {\n\t\t\t\t\tdecoded_data['input3_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['input3_threshold']['input3_current_high_threshold'] = (decode_field(arg, 2, 7, 0, \"unsigned\") * 0.05).toFixed(2);\n\t\t\t\tdecoded_data['input3_threshold']['input3_current_low_threshold'] = (decode_field(arg, 2, 15, 8, \"unsigned\") * 0.05).toFixed(2);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('input23_threshold_enable')) {\n\t\t\t\t\tdecoded_data['input23_threshold_enable'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['input23_threshold_enable']['input2_threshold_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['input23_threshold_enable']['input2_threshold_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['input23_threshold_enable']['input2_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['input23_threshold_enable']['input3_threshold_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['input23_threshold_enable']['input3_threshold_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['input23_threshold_enable']['input3_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x39],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['temperature_relative_humidity_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3A],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['temperature_relative_humidity_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3B],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('temp_threshold')) {\n\t\t\t\t\tdecoded_data['temp_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['temp_threshold']['temperature_high_threshold'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\tdecoded_data['temp_threshold']['temperature_low_threshold'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3C],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['temperature_threshold_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['temperature_threshold_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['temperature_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['mcu_temperature_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['mcu_temperature_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('mcu_temp_threshold')) {\n\t\t\t\t\tdecoded_data['mcu_temp_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['mcu_temp_threshold']['mcu_temperature_high_threshold'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['mcu_temp_threshold']['mcu_temperature_low_threshold'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['output1_control'] = \"Manual\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['output1_control'] = \"Input 1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['output1_control'] = \"Input 2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['output1_control'] = \"Input 3\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['output1_control'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['output1_delay'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['output2_control'] = \"Manual\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['output2_control'] = \"Input 1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['output2_control'] = \"Input 2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['output2_control'] = \"Input 3\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['output2_control'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['output2_delay'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x60],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['serial_interface_type'] = \"RS485/RS422\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['serial_interface_type'] = \"RS232\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['serial_interface_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x61],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['serial_baud_rate'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x63],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['serial_parity_bits'] = \"No parity\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['serial_parity_bits'] = \"Odd\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['serial_parity_bits'] = \"Even\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['serial_parity_bits'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x64],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['serial_stop_bits'] = \"0.5 bits\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 10:\n\t\t\t\t\t\tdecoded_data['serial_stop_bits'] = \"1.0 bits\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 15:\n\t\t\t\t\t\tdecoded_data['serial_stop_bits'] = \"1.5 bits\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 20:\n\t\t\t\t\t\tdecoded_data['serial_stop_bits'] = \"2.0 bits\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['serial_stop_bits'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x65],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['serial_duplex_mode'] = \"Half duplex\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['serial_duplex_mode'] = \"Full duplex\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['serial_duplex_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x66],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['serial_upink_format'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x67],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['continuous_serial_receive'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x68],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['modbus_rtu_symbol_timeout'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x69],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['modbus_rtu_rx_timeout'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_major_version'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_minor_version'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_major_version'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_minor_version'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"DN915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 20) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['done'] = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\tdecoded_data['transaction_id'] = decode_field(arg, 1, 6, 5, \"unsigned\");\n\t\t\t\tdecoded_data['fragment_number'] = decode_field(arg, 1, 4, 0, \"unsigned\");\n\t\t\t\tdecoded_data['serial_data'] = decode_field(arg, 1, 511, 8, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xFF],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['battery_voltage'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.01).toFixed(2);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01, 0x01],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['output1'] = \"Open\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['output1'] = \"Closed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['output1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x01],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['output2'] = \"Open\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['output2'] = \"Closed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['output2'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03, 0x67],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04, 0x68],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['relative_humidity'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05, 0x00],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['input_1'] = \"FALSE\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['input_1'] = \"TRUE\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['input_1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x06, 0x02],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['input_2'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.000001).toFixed(6);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x07, 0x02],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['input_3'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x08, 0x04],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['input_1_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x09, 0x67],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['mcu_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 21) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x6A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('modbus_rtu_polling_command_6A')) {\n\t\t\t\t\tdecoded_data['modbus_rtu_polling_command_6A'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6A']['polling_A'] = decode_field(arg, 10, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6A']['command_A'] = decode_field(arg, 10, 79, 16, \"unsigned\");\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 22) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x6B],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('modbus_rtu_polling_command_6B')) {\n\t\t\t\t\tdecoded_data['modbus_rtu_polling_command_6B'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6B']['polling_B'] = decode_field(arg, 10, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6B']['command_B'] = decode_field(arg, 10, 79, 16, \"unsigned\");\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 23) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x6C],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('modbus_rtu_polling_command_6C')) {\n\t\t\t\t\tdecoded_data['modbus_rtu_polling_command_6C'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6C']['polling_C'] = decode_field(arg, 10, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6C']['command_C'] = decode_field(arg, 10, 79, 16, \"unsigned\");\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 24) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x6D],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('modbus_rtu_polling_command_6D')) {\n\t\t\t\t\tdecoded_data['modbus_rtu_polling_command_6D'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6D']['polling_D'] = decode_field(arg, 10, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6D']['command_D'] = decode_field(arg, 10, 79, 16, \"unsigned\");\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 25) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x6E],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('modbus_rtu_polling_command_6E')) {\n\t\t\t\t\tdecoded_data['modbus_rtu_polling_command_6E'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6E']['polling_E'] = decode_field(arg, 10, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6E']['command_E'] = decode_field(arg, 10, 79, 16, \"unsigned\");\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 26) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x6F],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('modbus_rtu_polling_command_6F')) {\n\t\t\t\t\tdecoded_data['modbus_rtu_polling_command_6F'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6F']['polling_F'] = decode_field(arg, 10, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['modbus_rtu_polling_command_6F']['command_F'] = decode_field(arg, 10, 79, 16, \"unsigned\");\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 15, 12, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['lora_class'] = \"Class A\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 12:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['lora_class'] = \"Class C\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['lora_class'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number_rx2'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_ambient_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_relative_humidity'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_light'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_input1'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_input2'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x27],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_input3'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_input4'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x29],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_watermark1'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_watermark2'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2C],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2D],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_orientation_alarm'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2E],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2F],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['RFU_1'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_relative_humidity_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x31],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_relative_humidity_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x32],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('temp_thresholds')) {\n\t\t\t\t\tdecoded_data['temp_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['temp_thresholds']['high_ambient_temp'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['temp_thresholds']['low_ambient_temp'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ambient_temperature_threshold_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ambient_temperature_threshold_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ambient_temperature_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('rh_threshold')) {\n\t\t\t\t\tdecoded_data['rh_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['rh_threshold']['high_rh'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['rh_threshold']['low_rh'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x35],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['relative_humidity_threshold_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['relative_humidity_threshold_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['relative_humidity_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x36],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['input_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x37],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['input_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x38],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('input1')) {\n\t\t\t\t\tdecoded_data['input1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['input1']['high_input1'] = decode_field(arg, 4, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['input1']['low_input1'] = decode_field(arg, 4, 15, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x39],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('input2')) {\n\t\t\t\t\tdecoded_data['input2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['input2']['high_input2'] = decode_field(arg, 4, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['input2']['low_input2'] = decode_field(arg, 4, 15, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('input3')) {\n\t\t\t\t\tdecoded_data['input3'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['input3']['high_input3'] = decode_field(arg, 4, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['input3']['low_input3'] = decode_field(arg, 4, 15, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3B],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('input4')) {\n\t\t\t\t\tdecoded_data['input4'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['input4']['high_input4'] = decode_field(arg, 4, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['input4']['low_input4'] = decode_field(arg, 4, 15, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3C],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('watermark1')) {\n\t\t\t\t\tdecoded_data['watermark1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['watermark1']['high_watermark1'] = decode_field(arg, 4, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['watermark1']['low_watermark1'] = decode_field(arg, 4, 15, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('watermark2')) {\n\t\t\t\t\tdecoded_data['watermark2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['watermark2']['high_watermark2'] = decode_field(arg, 4, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['watermark2']['low_watermark2'] = decode_field(arg, 4, 15, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3F],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('input_enable')) {\n\t\t\t\t\tdecoded_data['input_enable'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['input_enable']['input1'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['input_enable']['input1'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['input_enable']['input1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['input_enable']['input2'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['input_enable']['input2'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['input_enable']['input2'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['input_enable']['input3'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['input_enable']['input3'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['input_enable']['input3'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['input_enable']['input4'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['input_enable']['input4'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['input_enable']['input4'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['input_enable']['watermark1_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['input_enable']['watermark1_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['input_enable']['watermark1_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['input_enable']['watermark2_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['input_enable']['watermark2_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['input_enable']['watermark2_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mcu_temperature')) {\n\t\t\t\t\tdecoded_data['mcu_temperature'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['mcu_temperature']['high_mcu_temp'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['mcu_temperature']['low_mcu_temp'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mcu_temperature_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x44],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('input3_thresh')) {\n\t\t\t\t\tdecoded_data['input3_thresh'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['input3_thresh']['high_input3_onewire'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['input3_thresh']['low_input3_onewire'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x45],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('input4_thresh')) {\n\t\t\t\t\tdecoded_data['input4_thresh'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['input4_thresh']['high_input4_onewire'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['input4_thresh']['low_input4_onewire'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x48],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ALS_interrupt_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ALS_interrupt_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ALS_interrupt_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x49],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ALS_upper_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ALS_lower_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4B],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['light_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4C],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['light_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('values_to_report')) {\n\t\t\t\t\tdecoded_data['values_to_report'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_report']['light_alarm_reported'] = \"Ignore\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_report']['light_alarm_reported'] = \"Report\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_report']['light_alarm_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['values_to_report']['light_intensity_reported'] = \"Ignore\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['values_to_report']['light_intensity_reported'] = \"Report\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['values_to_report']['light_intensity_reported'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['orientation_alarm_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('report')) {\n\t\t\t\t\tdecoded_data['report'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report']['orientation_vector_report'] = \"Ignore\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report']['orientation_vector_report'] = \"Report\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report']['orientation_vector_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report']['orientation_alarm_report'] = \"Ignore\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report']['orientation_alarm_report'] = \"Report\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report']['orientation_alarm_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mode')) {\n\t\t\t\t\tdecoded_data['mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mode']['accelerometer_power_on'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mode']['accelerometer_power_on'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mode']['accelerometer_power_on'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['mode']['orientation_alarm_mode'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['mode']['orientation_alarm_mode'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['mode']['orientation_alarm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x61],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('battery_reports')) {\n\t\t\t\t\tdecoded_data['battery_reports'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_reports']['report_capacity_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_reports']['report_capacity_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_reports']['report_capacity_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_reports']['report_lifetime_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_reports']['report_lifetime_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_reports']['report_lifetime_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x62],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['avg_current_window'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_major_version'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_minor_version'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_major_version'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_minor_version'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xBA],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['eos_alert'] = \"No Alarm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['eos_alert'] = \"Alarm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['eos_alert'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['battery_voltage'] = (decode_field(arg, 1, 6, 0, \"unsigned\") * 0.01 + 2.5).toFixed(2);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xD3],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rem_batt_capacity'] = decode_field(arg, 1, 6, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xBD],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rem_batt_days'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\tvar output = 0;\n\t\t\t\tif (val > 1399){\n\t\t\t\t\toutput = \"Dry\";\n\t\t\t\t} else if (val > 1396 && val <= 1399){\n\t\t\t\t\toutput = 0.1;\n\t\t\t\t} else if (val > 1391 && val <= 1396){\n\t\t\t\t\toutput = 0.2;\n\t\t\t\t} else if (val > 1386 && val <= 1391){\n\t\t\t\t\toutput = 0.3;\n\t\t\t\t} else if (val > 1381 && val <= 1386){\n\t\t\t\t\toutput = 0.4;\n\t\t\t\t} else if (val > 1376 && val <= 1381){\n\t\t\t\t\toutput = 0.5;\n\t\t\t\t} else if (val > 1371 && val <= 1376){\n\t\t\t\t\toutput = 0.6;\n\t\t\t\t} else if (val > 1366 && val <= 1371){\n\t\t\t\t\toutput = 0.7;\n\t\t\t\t} else if (val > 1361 && val <= 1366){\n\t\t\t\t\toutput = 0.8;\n\t\t\t\t} else if (val > 1356 && val <= 1361){\n\t\t\t\t\toutput = 0.9;\n\t\t\t\t} else if (val > 1351 && val <= 1356){\n\t\t\t\t\toutput = 1.0;\n\t\t\t\t} else if (val > 1346 && val <= 1351){\n\t\t\t\t\toutput = 1.1;\n\t\t\t\t} else if (val > 1341 && val <= 1346){\n\t\t\t\t\toutput = 1.2;\n\t\t\t\t} else {\n\t\t\t\t\toutput = \"Wet\";\n\t\t\t\t}\n\t\t\t\tdecoded_data['input1_frequency_to_moisture'] = output;\n\t\t\t\tdecoded_data['input1_frequency'] = val;\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = (decode_field(arg, 2, 15, 0, \"unsigned\")*0.001).toFixed(3);\n\t\t\t\tvar output = (-32.46 * Math.log(val*1000) + 236.36).toFixed(1);\n\t\t\t\tdecoded_data['Input2_voltage_to_temp'] = output;\n\t\t\t\tdecoded_data['Input2_voltage'] = val;\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = (decode_field(arg, 2, 15, 0, \"unsigned\")*0.001).toFixed(3);\n\t\t\t\tdecoded_data['Input3_voltage'] = val;\n\t\t\t\tdecoded_data['Input3_voltage_to_temp'] = ((-33.01 * Math.pow(val, 5)) + (217.4 * Math.pow(val, 4)) + (-538.6 * Math.pow(val, 3)) + (628.1 * Math.pow(val, 2)) + (-378.9 * val) + 102.9).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['Input3_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = (decode_field(arg, 2, 15, 0, \"unsigned\")*0.001).toFixed(3);\n\t\t\t\tdecoded_data['Input4_voltage'] = val;\n\t\t\t\tdecoded_data['Input4_voltage_to_temp'] = ((-33.01 * Math.pow(val, 5)) + (217.4 * Math.pow(val, 4)) + (-538.6 * Math.pow(val, 3)) + (628.1 * Math.pow(val, 2)) + (-378.9 * val) + 102.9).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['Input4_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\tvar output = 0;\n\t\t\t\tif (val > 6430){\n\t\t\t\t\toutput = 0;\n\t\t\t\t} else if (val >= 4330 && val <= 6430){\n\t\t\t\t\toutput = (9.000 - (val - 4330.000) * 0.004286).toFixed(0);\n\t\t\t\t} else if (val >= 2820 && val < 4330){\n\t\t\t\t\toutput = (15.000 - (val - 2820.000) * 0.003974).toFixed(0);\n\t\t\t\t} else if (val >= 1110 && val < 2820){\n\t\t\t\t\toutput = (35.000 - (val - 1110.000) * 0.01170).toFixed(0);\n\t\t\t\t} else if (val >= 770 && val < 1110){\n\t\t\t\t\toutput = (55.000 - (val - 770.000) * 0.05884).toFixed(0);\n\t\t\t\t} else if (val >= 600 && val < 770){\n\t\t\t\t\toutput = (75.000 - (val - 600.000) * 0.1176).toFixed(0);\n\t\t\t\t} else if (val >= 485 && val < 600){\n\t\t\t\t\toutput = (100.000 - (val - 485.000) * 0.2174).toFixed(0);\n\t\t\t\t} else if (val >= 293 && val < 485){\n\t\t\t\t\toutput = (200.000 - (val - 293.000) * 0.5208).toFixed(0);\n\t\t\t\t} else{\n\t\t\t\t\toutput = 200;\n\t\t\t\t}\t\t\t\t\t\n\t\t\t\tdecoded_data['watermark1_tension'] = output;\n\t\t\t\tdecoded_data['watermark1_frequency'] = val;\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x06, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\tvar output = 0;\n\t\t\t\tif (val > 6430){\n\t\t\t\t\toutput = 0;\n\t\t\t\t} else if (val >= 4330 && val <= 6430){\n\t\t\t\t\toutput = (9.000 - (val - 4330.000) * 0.004286).toFixed(0);\n\t\t\t\t} else if (val >= 2820 && val < 4330){\n\t\t\t\t\toutput = (15.000 - (val - 2820.000) * 0.003974).toFixed(0);\n\t\t\t\t} else if (val >= 1110 && val < 2820){\n\t\t\t\t\toutput = (35.000 - (val - 1110.000) * 0.01170).toFixed(0);\n\t\t\t\t} else if (val >= 770 && val < 1110){\n\t\t\t\t\toutput = (55.000 - (val - 770.000) * 0.05884).toFixed(0);\n\t\t\t\t} else if (val >= 600 && val < 770){\n\t\t\t\t\toutput = (75.000 - (val - 600.000) * 0.1176).toFixed(0);\n\t\t\t\t} else if (val >= 485 && val < 600){\n\t\t\t\t\toutput = (100.000 - (val - 485.000) * 0.2174).toFixed(0);\n\t\t\t\t} else if (val >= 293 && val < 485){\n\t\t\t\t\toutput = (200.000 - (val - 293.000) * 0.5208).toFixed(0);\n\t\t\t\t} else{\n\t\t\t\t\toutput = 200;\n\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\tdecoded_data['watermark2_tension'] = output;\n\t\t\t\tdecoded_data['watermark2_frequency'] = val;\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x09, 0x65],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['light_intensity'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x09, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"No Alarm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Alarm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['light_detected'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0A, 0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_data')) {\n\t\t\t\t\tdecoded_data['accelerometer_data'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['accelerometer_data']['xaxis'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['accelerometer_data']['yaxis'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['accelerometer_data']['zaxis'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0A, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['orientation_alarm'] = \"No Alarm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['orientation_alarm'] = \"Alarm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['orientation_alarm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0B, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ambient_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0B, 0x68],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['relative_humidity'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0C, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x73],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['RFU_2'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_eui'] = (decode_field(arg, 8, 63, 0, \"hexstring\")).toFixed(1);\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_eui'] = (decode_field(arg, 8, 63, 0, \"hexstring\")).toFixed(1);\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_key'] = (decode_field(arg, 16, 127, 0, \"hexstring\")).toFixed(1);\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_address'] = (decode_field(arg, 4, 31, 0, \"hexstring\")).toFixed(1);\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['network_session_key'] = (decode_field(arg, 16, 127, 0, \"hexstring\")).toFixed(1);\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_session_key'] = (decode_field(arg, 16, 127, 0, \"hexstring\")).toFixed(1);\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_join_mode')) {\n\t\t\t\t\tdecoded_data['loramac_join_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode']['loramac_join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode']['loramac_join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode']['loramac_join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['rx2_dr_number'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_gnss_stillness'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_gnss_mobility'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_ble_default'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_ble_stillness'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x27],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_ble_mobility'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x29],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_fsm_state'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('reed_switch_tx')) {\n\t\t\t\t\tdecoded_data['reed_switch_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['battery'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['battery'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['battery'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['acceleration_vector'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['acceleration_vector'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['acceleration_vector'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['temperature_tx'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['temperature_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['temperature_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['ble'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['ble'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['ble'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['gnss_log'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['gnss_log'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['gnss_log'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['fsm_state_tx'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['fsm_state_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['fsm_state_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x31],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('speed_threshold')) {\n\t\t\t\t\tdecoded_data['speed_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['speed_threshold']['stillness'] = (decode_field(arg, 2, 7, 0, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\tdecoded_data['speed_threshold']['mobility'] = (decode_field(arg, 2, 15, 8, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('gnss_tx')) {\n\t\t\t\t\tdecoded_data['gnss_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['utc_tx'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['utc_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['utc_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['coordinates'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['coordinates'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['coordinates'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['ground_speed_tx'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['ground_speed_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['ground_speed_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['geofence'] = \"DIsable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['geofence'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['geofence'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['num_satellites_tx'] = \"DIsable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['num_satellites_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['num_satellites_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['avg_satellite_snr_tx'] = \"DIsable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['avg_satellite_snr_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['avg_satellite_snr_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['fix_type_tx'] = \"DIsable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['fix_type_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['fix_type_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['log_num_tx'] = \"DIsable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['log_num_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_tx']['log_num_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('geofence0')) {\n\t\t\t\t\tdecoded_data['geofence0'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['geofence0']['fence_radius_0'] = decode_field(arg, 8, 15, 0, \"unsigned\") * 10;\n\t\t\t\tdecoded_data['geofence0']['fence_rlongitude_0'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.000025).toFixed(6);\n\t\t\t\tdecoded_data['geofence0']['fence_rlatitude_0'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.0000125).toFixed(7);\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x35],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('geofence1')) {\n\t\t\t\t\tdecoded_data['geofence1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['geofence1']['fence_rradius_1'] = decode_field(arg, 8, 15, 0, \"unsigned\") * 10;\n\t\t\t\tdecoded_data['geofence1']['fence_rlongitude_1'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.000025).toFixed(6);\n\t\t\t\tdecoded_data['geofence1']['fence_rlatitude_1'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.0000125).toFixed(7);\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x36],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('geofence2')) {\n\t\t\t\t\tdecoded_data['geofence2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['geofence2']['fence_rradius_2'] = decode_field(arg, 8, 15, 0, \"unsigned\") * 10;\n\t\t\t\tdecoded_data['geofence2']['fence_rlongitude_2'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.000025).toFixed(6);\n\t\t\t\tdecoded_data['geofence2']['fence_rlatitude_2'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.0000125).toFixed(7);\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x37],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('geofence3')) {\n\t\t\t\t\tdecoded_data['geofence3'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['geofence3']['fence_rradius_3'] = decode_field(arg, 8, 15, 0, \"unsigned\") * 10;\n\t\t\t\tdecoded_data['geofence3']['fence_rlongitude_3'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.000025).toFixed(6);\n\t\t\t\tdecoded_data['geofence3']['fence_rlatitude_3'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.0000125).toFixed(7);\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_mode')) {\n\t\t\t\t\tdecoded_data['accelerometer_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['xaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['xaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['xaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['yaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['yaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['yaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['zaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['zaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['zaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['assist_enabled'] = \"DIsable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['assist_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['assist_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['poweron'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['poweron'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['poweron'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_sensitivity')) {\n\t\t\t\t\tdecoded_data['accelerometer_sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"±2 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"±4 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"±8 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"±16 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_alarm_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_alarm_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x44],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_alarm_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x45],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_alarm_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x46],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_mode')) {\n\t\t\t\t\tdecoded_data['ble_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_mode']['num_reported_devices'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_mode']['num_reported_devices'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_mode']['repitition_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_mode']['repitition_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_mode']['repitition_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_scan_duration')) {\n\t\t\t\t\tdecoded_data['ble_scan_duration'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_scan_duration']['periodic'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['ble_scan_duration']['event_based'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ble_scan_interval'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ble_scan_window'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('bd_addr_range0')) {\n\t\t\t\t\tdecoded_data['bd_addr_range0'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['bd_addr_range0']['lap_end_0'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range0']['lap_start_0'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range0']['oui_0'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x55],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('bd_addr_range1')) {\n\t\t\t\t\tdecoded_data['bd_addr_range1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['bd_addr_range1']['lap_end_1'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range1']['lap_start_1'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range1']['oui_1'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x56],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('bd_addr_range2')) {\n\t\t\t\t\tdecoded_data['bd_addr_range2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['bd_addr_range2']['lap_end_2'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range2']['lap_start_2'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range2']['oui_2'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x57],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('bd_addr_range3')) {\n\t\t\t\t\tdecoded_data['bd_addr_range3'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['bd_addr_range3']['lap_end_3'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range3']['lap_start_3'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range3']['oui_3'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x60],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x61],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x62],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('temperature_thresholds')) {\n\t\t\t\t\tdecoded_data['temperature_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['temperature_thresholds']['temp_low'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\tdecoded_data['temperature_thresholds']['temp_high'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x63],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_thresholds_enabled'] = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['metadata']['loramac_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xAA],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['num_satellites'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xAB],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['avg_satellite_snr'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xAC],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fix_type'] = \"No fix available\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fix_type'] = \"2D fix\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['fix_type'] = \"3D fix\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fix_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xAD],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['log_num'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01, 0xBA],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('battery1_status')) {\n\t\t\t\t\tdecoded_data['battery1_status'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['battery1_status']['voltage_1'] = (decode_field(arg, 1, 6, 0, \"unsigned\") * 0.01 + 2.5).toFixed(2);\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery1_status']['eos_alert_1'] = \"Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery1_status']['eos_alert_1'] = \"Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery1_status']['eos_alert_1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0xBA],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('battery2_status')) {\n\t\t\t\t\tdecoded_data['battery2_status'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['battery2_status']['voltage_2'] = (decode_field(arg, 1, 6, 0, \"unsigned\") * 0.01 + 2.5).toFixed(2);\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery2_status']['eos_alert_2'] = \"Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery2_status']['eos_alert_2'] = \"Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery2_status']['eos_alert_2'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x85],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('utc')) {\n\t\t\t\t\tdecoded_data['utc'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['utc']['second_utc'] = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['minute_utc'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['hour_utc'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['day_utc'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['month_utc'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['year_utc'] = decode_field(arg, 7, 55, 40, \"unsigned\");\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x88],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('coordinates')) {\n\t\t\t\t\tdecoded_data['coordinates'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['coordinates']['altitude'] = (decode_field(arg, 9, 15, 0, \"signed\") * 0.5).toFixed(1);\n\t\t\t\tdecoded_data['coordinates']['longitude'] = (decode_field(arg, 9, 47, 16, \"signed\") * 0.0000001).toFixed(7);\n\t\t\t\tdecoded_data['coordinates']['latitude'] = (decode_field(arg, 9, 71, 48, \"signed\") * 0.0000125).toFixed(7);\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x92],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ground_speed'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fsm_state'] = \"GNSS DISABLED State\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fsm_state'] = \"GNSS SEARCH State\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['fsm_state'] = \"GNSS STILLNESS State\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['fsm_state'] = \"GNSS MOBILITY State\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fsm_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x95],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('fix_status')) {\n\t\t\t\t\tdecoded_data['fix_status'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fix_status']['utc'] = \"Invalid\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fix_status']['utc'] = \"Valid\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fix_status']['utc'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fix_status']['position'] = \"Invalid\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fix_status']['position'] = \"Valid\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fix_status']['position'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01, 0x95],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('geofence_status')) {\n\t\t\t\t\tdecoded_data['geofence_status'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num0'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num0'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num0'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num0'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num1'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num1'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num1'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num2'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num2'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num2'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num2'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num3'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num3'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num3'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num3'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_vector')) {\n\t\t\t\t\tdecoded_data['acceleration_vector'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['acceleration_vector']['xaxis'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['yaxis'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['zaxis'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 25) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_1')) {\n\t\t\t\t\tdecoded_data['ble_1'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 7;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_01'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_01'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(7);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_1'] = data;\n\t\t\t\t\treturn loop*7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB0],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_2')) {\n\t\t\t\t\tdecoded_data['ble_2'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_02'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_02'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_2'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB1],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_3')) {\n\t\t\t\t\tdecoded_data['ble_3'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_03'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_03'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_3'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB2],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_4')) {\n\t\t\t\t\tdecoded_data['ble_4'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_04'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_04'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_4'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB3],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_5')) {\n\t\t\t\t\tdecoded_data['ble_5'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_05'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_05'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_5'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 15) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('log_utc')) {\n\t\t\t\t\tdecoded_data['log_utc'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['log_utc']['fragment_number_1'] = decode_field(arg, 8, 63, 56, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['year_1'] = decode_field(arg, 8, 55, 40, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['month_1'] = decode_field(arg, 8, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['day_1'] = decode_field(arg, 8, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['hour_1'] = decode_field(arg, 8, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['minute_1'] = decode_field(arg, 8, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['second_1'] = decode_field(arg, 8, 7, 0, \"unsigned\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('log_coordinates')) {\n\t\t\t\t\tdecoded_data['log_coordinates'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['log_coordinates']['fragment_number_2'] = decode_field(arg, 10, 79, 72, \"unsigned\");\n\t\t\t\tdecoded_data['log_coordinates']['lattitude_2'] = (decode_field(arg, 10, 71, 48, \"signed\") * 0.0000125).toFixed(7);\n\t\t\t\tdecoded_data['log_coordinates']['longitude_2'] = (decode_field(arg, 10, 47, 16, \"signed\") * 0.0000001).toFixed(7);\n\t\t\t\tdecoded_data['log_coordinates']['altitude_2'] = (decode_field(arg, 10, 15, 0, \"signed\") * 0.5).toFixed(1);\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('log_all')) {\n\t\t\t\t\tdecoded_data['log_all'] = {};\n\t\t\t\t}\n\t\t\t\tvar fragment_number_3 = {}\n\t\t\t\tfragment_number_3['fragment_number_3'] = decode_field(arg, 17, 135, 128, \"unsigned\");\n\t\t\t\targ = arg.slice(1);\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tdata.push(fragment_number_3);\n\t\t\t\t\tvar loop = arg.length / 16;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['year_3'] = decode_field(arg, 16, 127, 112, \"unsigned\");\n\t\t\t\t\t\tgroup['month_3'] = decode_field(arg, 16, 111, 104, \"unsigned\");\n\t\t\t\t\t\tgroup['day_3'] = decode_field(arg, 16, 103, 96, \"unsigned\");\n\t\t\t\t\t\tgroup['hour_3'] = decode_field(arg, 16, 95, 88, \"unsigned\");\n\t\t\t\t\t\tgroup['minute_3'] = decode_field(arg, 16, 87, 80, \"unsigned\");\n\t\t\t\t\t\tgroup['second_3'] = decode_field(arg, 16, 79, 72, \"unsigned\");\n\t\t\t\t\t\tgroup['lattitude_3'] = (decode_field(arg, 16, 71, 48, \"signed\") * 0.0000125).toFixed(7);;\n\t\t\t\t\t\tgroup['longitude_3'] = (decode_field(arg, 16, 47, 16, \"signed\") * 0.0000001).toFixed(7);\n\t\t\t\t\t\tgroup['altitude_3'] = (decode_field(arg, 16, 15, 0, \"signed\") * 0.5).toFixed(1);\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(16);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['log_all'] = data;\n\t\t\t\t\treturn loop*16 + 1;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x01, 0xBA],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('battery1_status')) {\n\t\t\t\t\tdecoded_data['battery1_status'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['battery1_status']['voltage_1'] = (decode_field(arg, 1, 6, 0, \"unsigned\") * 0.01 + 2.5).toFixed(2);\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery1_status']['eos_alert_1'] = \"Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery1_status']['eos_alert_1'] = \"Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery1_status']['eos_alert_1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0xBA],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('battery2_status')) {\n\t\t\t\t\tdecoded_data['battery2_status'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['battery2_status']['voltage_2'] = (decode_field(arg, 1, 6, 0, \"unsigned\") * 0.01 + 2.5).toFixed(2);\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery2_status']['eos_alert_2'] = \"Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery2_status']['eos_alert_2'] = \"Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery2_status']['eos_alert_2'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x85],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('utc')) {\n\t\t\t\t\tdecoded_data['utc'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['utc']['year_utc'] = decode_field(arg, 7, 55, 40, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['month_utc'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['day_utc'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['hour_utc'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['minute_utc'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['second_utc'] = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x88],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('coordinates')) {\n\t\t\t\t\tdecoded_data['coordinates'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['coordinates']['altitude'] = (decode_field(arg, 9, 15, 0, \"signed\") * 0.5).toFixed(1);\n\t\t\t\tdecoded_data['coordinates']['longitude'] = (decode_field(arg, 9, 47, 16, \"signed\") * 0.0000001).toFixed(7);\n\t\t\t\tdecoded_data['coordinates']['latitude'] = (decode_field(arg, 9, 71, 48, \"signed\") * 0.0000125).toFixed(7);\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x92],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ground_speed'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fsm_state'] = \"GNSS DISABLED State\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fsm_state'] = \"GNSS SEARCH State\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['fsm_state'] = \"GNSS STILLNESS State\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['fsm_state'] = \"GNSS MOBILITY State\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fsm_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x95],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('fix_status')) {\n\t\t\t\t\tdecoded_data['fix_status'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fix_status']['utc'] = \"Invalid\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fix_status']['utc'] = \"Valid\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fix_status']['utc'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fix_status']['position'] = \"Invalid\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fix_status']['position'] = \"Valid\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fix_status']['position'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01, 0x95],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('geofence_status')) {\n\t\t\t\t\tdecoded_data['geofence_status'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num0'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num0'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num0'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num0'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num1'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num1'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num1'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num2'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num2'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num2'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num2'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num3'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num3'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num3'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geofence_status']['num3'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_vector')) {\n\t\t\t\t\tdecoded_data['acceleration_vector'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['acceleration_vector']['xaxis'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['yaxis'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['zaxis'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 15) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('log_request_utc_type_a')) {\n\t\t\t\t\tdecoded_data['log_request_utc_type_a'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['log_request_utc_type_a']['year_0a'] = decode_field(arg, 5, 39, 34, \"unsigned\");\n\t\t\t\tdecoded_data['log_request_utc_type_a']['month_0a'] = decode_field(arg, 5, 33, 30, \"unsigned\");\n\t\t\t\tdecoded_data['log_request_utc_type_a']['day_0a'] = decode_field(arg, 5, 29, 25, \"unsigned\");\n\t\t\t\tdecoded_data['log_request_utc_type_a']['hour_0a'] = decode_field(arg, 5, 24, 20, \"unsigned\");\n\t\t\t\tdecoded_data['log_request_utc_type_a']['minute_0a'] = decode_field(arg, 5, 19, 14, \"unsigned\");\n\t\t\t\tdecoded_data['log_request_utc_type_a']['second_0a'] = decode_field(arg, 5, 13, 8, \"unsigned\");\n\t\t\t\tdecoded_data['log_request_utc_type_a']['number_0a'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0B],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('log_request_utc_type_b')) {\n\t\t\t\t\tdecoded_data['log_request_utc_type_b'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['log_request_utc_type_b']['number_0b'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('log_utc')) {\n\t\t\t\t\tdecoded_data['log_utc'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['log_utc']['fragment_number_1'] = decode_field(arg, 5, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['year_1'] = decode_field(arg, 5, 31, 26, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['month_1'] = decode_field(arg, 5, 25, 22, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['day_1'] = decode_field(arg, 5, 21, 17, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['hour_1'] = decode_field(arg, 5, 16, 12, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['minute_1'] = decode_field(arg, 5, 11, 6, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['second_1'] = decode_field(arg, 5, 5, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('log_coordinates')) {\n\t\t\t\t\tdecoded_data['log_coordinates'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['log_coordinates']['fragment_number_2'] = decode_field(arg, 9, 71, 64, \"unsigned\");\n\t\t\t\tdecoded_data['log_coordinates']['latitude_2'] = (decode_field(arg, 9, 63, 40, \"signed\") * 0.0000107).toFixed(7);\n\t\t\t\tdecoded_data['log_coordinates']['longitude_2'] = (decode_field(arg, 9, 39, 16, \"signed\") * 0.0000215).toFixed(7);\n\t\t\t\tdecoded_data['log_coordinates']['altitude_2'] = (decode_field(arg, 9, 15, 0, \"signed\") * 0.144958496 + -500).toFixed(3);\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('log_all')) {\n\t\t\t\t\tdecoded_data['log_all'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 12;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['year_3'] = decode_field(arg, 12, 95, 90, \"unsigned\");\n\t\t\t\t\t\tgroup['month_3'] = decode_field(arg, 12, 89, 86, \"unsigned\");\n\t\t\t\t\t\tgroup['day_3'] = decode_field(arg, 12, 85, 81, \"unsigned\");\n\t\t\t\t\t\tgroup['hour_3'] = decode_field(arg, 12, 80, 76, \"unsigned\");\n\t\t\t\t\t\tgroup['minute_3'] = decode_field(arg, 12, 75, 70, \"unsigned\");\n\t\t\t\t\t\tgroup['second_3'] = decode_field(arg, 12, 69, 64, \"unsigned\");\n\t\t\t\t\t\tgroup['latitude_3'] = decode_field(arg, 12, 63, 40, \"signed\");\n\t\t\t\t\t\tgroup['longitude_3'] = decode_field(arg, 12, 39, 16, \"signed\");\n\t\t\t\t\t\tgroup['altitude_3'] = decode_field(arg, 12, 15, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(12);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['log_all'] = data;\n\t\t\t\t\treturn loop*12;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 16) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0D, 0x3C],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['num_satellites'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x64],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['avg_satellite_snr'] = decode_field(arg, 2, 15, 0, \"signed\") * 0.1;\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x95],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fix_type'] = \"No fix available\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['fix_type'] = \"2D fix\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['fix_type'] = \"3D Fix\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fix_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x96],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['time_to_fix'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x0F],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['log_num'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ghost_error_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 25) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_1')) {\n\t\t\t\t\tdecoded_data['ble_1'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 7;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_01'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_01'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(7);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_1'] = data;\n\t\t\t\t\treturn loop*7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB0],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_2')) {\n\t\t\t\t\tdecoded_data['ble_2'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_02'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_02'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_2'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB1],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_3')) {\n\t\t\t\t\tdecoded_data['ble_3'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_03'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_03'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_3'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB2],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_4')) {\n\t\t\t\t\tdecoded_data['ble_4'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_04'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_04'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_4'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB3],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_5')) {\n\t\t\t\t\tdecoded_data['ble_5'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_05'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_05'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_5'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_join_mode')) {\n\t\t\t\t\tdecoded_data['loramac_join_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode']['loramac_join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode']['loramac_join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode']['loramac_join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['rx2_dr_number'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_gnss_stillness'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_gnss_mobility'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_ble_default'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_ble_stillness'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x27],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_ble_mobility'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x29],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_fsm_state'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('reed_switch_tx')) {\n\t\t\t\t\tdecoded_data['reed_switch_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['battery'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['battery'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['battery'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['acceleration_vector'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['acceleration_vector'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['acceleration_vector'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['temperature_tx'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['temperature_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['temperature_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['ble'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['ble'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['ble'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['gnss_log'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['gnss_log'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['gnss_log'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['fsm_state_tx'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['fsm_state_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reed_switch_tx']['fsm_state_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x31],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('speed_threshold')) {\n\t\t\t\t\tdecoded_data['speed_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['speed_threshold']['speed_threshold'] = (decode_field(arg, 2, 15, 8, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x32],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('gnss_diagnostics_tx')) {\n\t\t\t\t\tdecoded_data['gnss_diagnostics_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_num_satellites'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_num_satellites'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_num_satellites'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_avg_satellite_snr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_avg_satellite_snr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_avg_satellite_snr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_fix_type'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_fix_type'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_fix_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_time_to_fix'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_time_to_fix'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_time_to_fix'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_log_num'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_log_num'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['gnss_log_num'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('gnss_data_tx')) {\n\t\t\t\t\tdecoded_data['gnss_data_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_data_tx']['gnss_utc_tx'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_data_tx']['gnss_utc_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_data_tx']['gnss_utc_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_data_tx']['gnss_coordinates'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_data_tx']['gnss_coordinates'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_data_tx']['gnss_coordinates'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_data_tx']['gnss_ground_speed_tx'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_data_tx']['gnss_ground_speed_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_data_tx']['gnss_ground_speed_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_data_tx']['gnss_geofence'] = \"DIsable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_data_tx']['gnss_geofence'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_data_tx']['gnss_geofence'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('geofence0')) {\n\t\t\t\t\tdecoded_data['geofence0'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['geofence0']['fence_rlatitude_0'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.0000125).toFixed(7);\n\t\t\t\tdecoded_data['geofence0']['fence_rlongitude_0'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.000025).toFixed(6);\n\t\t\t\tdecoded_data['geofence0']['fence_radius_0'] = decode_field(arg, 8, 15, 0, \"unsigned\") * 10;\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x35],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('geofence1')) {\n\t\t\t\t\tdecoded_data['geofence1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['geofence1']['fence_rlatitude_1'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.0000125).toFixed(7);\n\t\t\t\tdecoded_data['geofence1']['fence_rlongitude_1'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.000025).toFixed(6);\n\t\t\t\tdecoded_data['geofence1']['fence_rradius_1'] = decode_field(arg, 8, 15, 0, \"unsigned\") * 10;\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x36],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('geofence2')) {\n\t\t\t\t\tdecoded_data['geofence2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['geofence2']['fence_rlatitude_2'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.0000125).toFixed(7);\n\t\t\t\tdecoded_data['geofence2']['fence_rlongitude_2'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.000025).toFixed(6);\n\t\t\t\tdecoded_data['geofence2']['fence_rradius_2'] = decode_field(arg, 8, 15, 0, \"unsigned\") * 10;\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x37],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('geofence3')) {\n\t\t\t\t\tdecoded_data['geofence3'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['geofence3']['fence_rlatitude_3'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.0000125).toFixed(7);\n\t\t\t\tdecoded_data['geofence3']['fence_rlongitude_3'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.000025).toFixed(6);\n\t\t\t\tdecoded_data['geofence3']['fence_rradius_3'] = decode_field(arg, 8, 15, 0, \"unsigned\") * 10;\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_mode')) {\n\t\t\t\t\tdecoded_data['accelerometer_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['xaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['xaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['xaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['yaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['yaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['yaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['zaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['zaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['zaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['assist_enabled'] = \"DIsable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['assist_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['assist_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['poweron'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['poweron'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_mode']['poweron'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_sensitivity')) {\n\t\t\t\t\tdecoded_data['accelerometer_sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['sample_rate'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"±2 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"±4 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"±8 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"±16 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['measurement_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_alarm_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_alarm_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x44],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_alarm_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x45],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_alarm_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x46],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_mode')) {\n\t\t\t\t\tdecoded_data['ble_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_mode']['num_reported_devices'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_mode']['num_reported_devices'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_mode']['repetition_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_mode']['repetition_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_mode']['repetition_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_scan_duration')) {\n\t\t\t\t\tdecoded_data['ble_scan_duration'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_scan_duration']['periodic'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['ble_scan_duration']['event_based'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ble_scan_interval'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ble_scan_window'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('bd_addr_range0')) {\n\t\t\t\t\tdecoded_data['bd_addr_range0'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['bd_addr_range0']['lap_end_0'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range0']['lap_start_0'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range0']['oui_0'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x55],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('bd_addr_range1')) {\n\t\t\t\t\tdecoded_data['bd_addr_range1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['bd_addr_range1']['lap_end_1'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range1']['lap_start_1'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range1']['oui_1'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x56],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('bd_addr_range2')) {\n\t\t\t\t\tdecoded_data['bd_addr_range2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['bd_addr_range2']['lap_end_2'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range2']['lap_start_2'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range2']['oui_2'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x57],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('bd_addr_range3')) {\n\t\t\t\t\tdecoded_data['bd_addr_range3'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['bd_addr_range3']['lap_end_3'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range3']['lap_start_3'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['bd_addr_range3']['oui_3'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x60],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x61],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x62],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('temperature_thresholds')) {\n\t\t\t\t\tdecoded_data['temperature_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['temperature_thresholds']['temp_low'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\tdecoded_data['temperature_thresholds']['temp_high'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x63],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_thresholds_enabled'] = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['metadata']['loramac_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) {\n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xD3],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['battery_lifetime_pct'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xBD],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['battery_lifetime_dys'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x85],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('utc')) {\n\t\t\t\t\tdecoded_data['utc'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['utc']['year_utc'] = decode_field(arg, 4, 31, 26, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['month_utc'] = decode_field(arg, 4, 25, 22, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['day_utc'] = decode_field(arg, 4, 21, 17, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['hour_utc'] = decode_field(arg, 4, 16, 12, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['minute_utc'] = decode_field(arg, 4, 11, 6, \"unsigned\");\n\t\t\t\tdecoded_data['utc']['second_utc'] = decode_field(arg, 4, 5, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x88],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('coordinates')) {\n\t\t\t\t\tdecoded_data['coordinates'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['coordinates']['latitude'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.00001072883606).toFixed(7);\n\t\t\t\tdecoded_data['coordinates']['longitude'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.00002145767212).toFixed(7);\n\t\t\t\tdecoded_data['coordinates']['altitude'] = (decode_field(arg, 8, 15, 0, \"unsigned\") * 0.144958496 + -500).toFixed(2);\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x92],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ground_speed'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * \t0.27778 ).toFixed(3);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x00],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['gnss_fix'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x95],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('gnss_status')) {\n\t\t\t\t\tdecoded_data['gnss_status'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz0'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz0'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz0'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz0'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz1'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz1'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz1'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz2'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz2'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz2'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz2'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz3'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz3'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz3'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_status']['gnss_status_dz3'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01, 0x95],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_status')) {\n\t\t\t\t\tdecoded_data['ble_status'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz0'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz0'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz0'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz0'] = \"Near\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz0'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz1'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz1'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz1'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz1'] = \"Near\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz2'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz2'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz2'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz2'] = \"Near\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz2'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz3'] = \"Unknown\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz3'] = \"Inside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz3'] = \"Outside\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz3'] = \"Near\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_status']['ble_status_dz3'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x73],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['barometric_pressure'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x74],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['cal_barometric_pressure'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x71],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_vector')) {\n\t\t\t\t\tdecoded_data['acceleration_vector'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['acceleration_vector']['acceleration_x'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['acceleration_y'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['acceleration_z'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x67],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x95],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('safety_status')) {\n\t\t\t\t\tdecoded_data['safety_status'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_eb'] = \"Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_eb'] = \"Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_eb'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_fall'] = \"Fall Cleared\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_fall'] = \"Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_fall'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_sh'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_sh'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_sh'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_ear'] = \"Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_ear'] = \"Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_ear'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_pressure'] = \"Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_pressure'] = \"Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['safety_status']['safety_status_pressure'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 25) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_1')) {\n\t\t\t\t\tdecoded_data['ble_1'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 7;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_01'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_01'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(7);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_1'] = data;\n\t\t\t\t\treturn loop*7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB0],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_2')) {\n\t\t\t\t\tdecoded_data['ble_2'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 7;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_02'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_02'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(7);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_2'] = data;\n\t\t\t\t\treturn loop*7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB1],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_3')) {\n\t\t\t\t\tdecoded_data['ble_3'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 7;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_03'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_03'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(7);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_3'] = data;\n\t\t\t\t\treturn loop*7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB2],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_4')) {\n\t\t\t\t\tdecoded_data['ble_4'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 7;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_04'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_04'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(7);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_4'] = data;\n\t\t\t\t\treturn loop*7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB3],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_5')) {\n\t\t\t\t\tdecoded_data['ble_5'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 7;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['id_05'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['rssi_05'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(7);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_5'] = data;\n\t\t\t\t\treturn loop*7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_ul_type'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_ul_type'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_ul_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_confirmed'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_confirmed'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['loramac_confirmed'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['loramac_default_dr'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['loramac_default_tx_pwr'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['loramac_rx2_freq'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['loramac_rx2_dr'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_normal_state'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_emergency_state'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_safety_status_normal'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x27],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_pressure'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('eb_active_buzz_config')) {\n\t\t\t\t\tdecoded_data['eb_active_buzz_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['eb_active_buzz_config']['eb_buzz_active_on_time'] = (decode_field(arg, 3, 23, 16, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\tdecoded_data['eb_active_buzz_config']['eb_buzz_active_off_time'] = (decode_field(arg, 3, 15, 8, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\tdecoded_data['eb_active_buzz_config']['eb_buzz_active_num_on_offs'] = decode_field(arg, 3, 7, 0, \"unsigned\");\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x29],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('eb_inactive_buzz_config')) {\n\t\t\t\t\tdecoded_data['eb_inactive_buzz_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['eb_inactive_buzz_config']['eb_buzz_inactive_on_time'] = (decode_field(arg, 3, 23, 16, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\tdecoded_data['eb_inactive_buzz_config']['eb_buzz_inactive_off_time'] = (decode_field(arg, 3, 15, 8, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\tdecoded_data['eb_inactive_buzz_config']['eb_buzz_inactive_num_on_offs'] = decode_field(arg, 3, 7, 0, \"unsigned\");\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2C],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['sh_debounce_interval'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2D],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('sh_buzz_config')) {\n\t\t\t\t\tdecoded_data['sh_buzz_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['sh_buzz_config']['sh_buzz_when_to'] = decode_field(arg, 5, 33, 32, \"hexstring\");\n\t\t\t\tdecoded_data['sh_buzz_config']['sh_buzz_on_time'] = (decode_field(arg, 5, 31, 24, \"unsigned\") * 0.1).toFixed(2);\n\t\t\t\tdecoded_data['sh_buzz_config']['sh_buzz_off_time'] = (decode_field(arg, 5, 23, 16, \"unsigned\") * 0.1).toFixed(2);\n\t\t\t\tdecoded_data['sh_buzz_config']['sh_buzz_num_on_offs'] = decode_field(arg, 5, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['sh_buzz_config']['sh_buzz_period'] = (decode_field(arg, 5, 7, 0, \"unsigned\") * 0.1).toFixed(2);\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_receiver'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_receiver'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_receiver'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x31],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('gnss_report_options')) {\n\t\t\t\t\tdecoded_data['gnss_report_options'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_report_options']['gnss_dz_status_report'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_report_options']['gnss_dz_status_report'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_report_options']['gnss_dz_status_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_report_options']['gnss_ground_speed_report'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_report_options']['gnss_ground_speed_report'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_report_options']['gnss_ground_speed_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_report_options']['gnss_utc_coordinates_report'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_report_options']['gnss_utc_coordinates_report'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_report_options']['gnss_utc_coordinates_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x32],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('gnss_dz0')) {\n\t\t\t\t\tdecoded_data['gnss_dz0'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['gnss_dz0']['gnss_dz0_latitude'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.00001072883606).toFixed(7);\n\t\t\t\tdecoded_data['gnss_dz0']['gnss_dz0_longitude'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.00002145767212).toFixed(7);\n\t\t\t\tdecoded_data['gnss_dz0']['gnss_dz0_radius'] = (decode_field(arg, 8, 15, 0, \"signed\") * 10).toFixed(1);\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('gnss_dz1')) {\n\t\t\t\t\tdecoded_data['gnss_dz1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['gnss_dz1']['gnss_dz1_latitude'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.00001072883606).toFixed(7);\n\t\t\t\tdecoded_data['gnss_dz1']['gnss_dz1_longitude'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.00002145767212).toFixed(7);\n\t\t\t\tdecoded_data['gnss_dz1']['gnss_dz1_radius'] = (decode_field(arg, 8, 15, 0, \"signed\") * 10).toFixed(1);\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('gnss_dz2')) {\n\t\t\t\t\tdecoded_data['gnss_dz2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['gnss_dz2']['gnss_dz2_latitude'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.00001072883606).toFixed(7);\n\t\t\t\tdecoded_data['gnss_dz2']['gnss_dz2_longitude'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.00002145767212).toFixed(7);\n\t\t\t\tdecoded_data['gnss_dz2']['gnss_dz2_radius'] = (decode_field(arg, 8, 15, 0, \"signed\") * 10).toFixed(1);\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x35],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('gnss_dz3')) {\n\t\t\t\t\tdecoded_data['gnss_dz3'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['gnss_dz3']['gnss_dz3_latitude'] = (decode_field(arg, 8, 63, 40, \"signed\") * 0.00001072883606).toFixed(7);\n\t\t\t\tdecoded_data['gnss_dz3']['gnss_dz3_longitude'] = (decode_field(arg, 8, 39, 16, \"signed\") * 0.00002145767212).toFixed(7);\n\t\t\t\tdecoded_data['gnss_dz3']['gnss_dz3_radius'] = (decode_field(arg, 8, 15, 0, \"signed\") * 10).toFixed(1);\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x36],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('gnss_diagnostics_tx')) {\n\t\t\t\t\tdecoded_data['gnss_diagnostics_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['num_of_sats'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['num_of_sats'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['num_of_sats'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['avg_sat_snr'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['avg_sat_snr'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['avg_sat_snr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['reported_fix_type'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['reported_fix_type'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['reported_fix_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['time_to_reported_fix'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['time_to_reported_fix'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['time_to_reported_fix'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['fix_log_num'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['fix_log_num'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['fix_log_num'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 5, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['fix_acc_and_num_fixes_report'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['fix_acc_and_num_fixes_report'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['fix_acc_and_num_fixes_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x38],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('emergency_state_trigger')) {\n\t\t\t\t\tdecoded_data['emergency_state_trigger'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['emergency_state_trigger']['emergency_trigger_by_ble_dz'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['emergency_state_trigger']['emergency_trigger_by_ble_dz'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['emergency_state_trigger']['emergency_trigger_by_ble_dz'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['emergency_state_trigger']['emergency_trigger_by_gnss_dz'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['emergency_state_trigger']['emergency_trigger_by_gnss_dz'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['emergency_state_trigger']['emergency_trigger_by_gnss_dz'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x39],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('emergency_state_led_config')) {\n\t\t\t\t\tdecoded_data['emergency_state_led_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['emergency_state_led_config']['emergency_led_on_time'] = (decode_field(arg, 4, 31, 24, \"unsigned\") * 0.01).toFixed(2);\n\t\t\t\tdecoded_data['emergency_state_led_config']['emergency_led_off_time'] = (decode_field(arg, 4, 23, 16, \"unsigned\") * 0.01).toFixed(2);\n\t\t\t\tdecoded_data['emergency_state_led_config']['emergency_led_num_on_offs'] = decode_field(arg, 4, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['emergency_state_led_config']['emergency_led_period'] = (decode_field(arg, 4, 7, 0, \"unsigned\") * 0.1).toFixed(1);\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3B],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['seconds_pressure_sample'] = decode_field(arg, 1, 5, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3C],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['calibration_reference_pressure'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['calibration_reference_pressure'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['calibration_reference_pressure'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3D],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['pressure_threshold_max'] = decode_field(arg, 4, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['pressure_threshold_min'] = decode_field(arg, 4, 15, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_sensitivity')) {\n\t\t\t\t\tdecoded_data['accelerometer_sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_measurement_range'] = \"+/-2g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_measurement_range'] = \"+/-4 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_measurement_range'] = \"+/-8 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_measurement_range'] = \"+/-6 g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_measurement_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_sensitivity']['accelerometer_sample_rate'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['sleep_acceleration_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['timeout_to_sleep'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x48],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('free_fall')) {\n\t\t\t\t\tdecoded_data['free_fall'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['free_fall']['free_fall_acceleration_threshold'] = (decode_field(arg, 4, 31, 16, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['free_fall']['free_fall_acceleration_interval'] = (decode_field(arg, 4, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x49],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('impact')) {\n\t\t\t\t\tdecoded_data['impact'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['impact']['impact_threshold'] = (decode_field(arg, 4, 31, 16, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['impact']['impact_blackout_duration'] = (decode_field(arg, 4, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('torpidity')) {\n\t\t\t\t\tdecoded_data['torpidity'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['torpidity']['torpidity_threshold'] = (decode_field(arg, 3, 23, 8, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['torpidity']['torpidity_interval'] = (decode_field(arg, 3, 7, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_mode')) {\n\t\t\t\t\tdecoded_data['ble_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_mode']['ble_avg_mode'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_mode']['ble_avg_mode'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_mode']['ble_avg_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_mode']['ble_dz_status_report'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_mode']['ble_dz_status_report'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_mode']['ble_dz_status_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['ble_mode']['ble_num_reported_devices'] = decode_field(arg, 1, 5, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ble_scan_duration_periodic'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ble_scan_interval'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ble_scan_window'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_range0')) {\n\t\t\t\t\tdecoded_data['ble_range0'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_range0']['ble_range0_bd_addr_oui'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['ble_range0']['ble_range0_bd_addr_start'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['ble_range0']['ble_range0_bd_addr_end'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x55],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_range1')) {\n\t\t\t\t\tdecoded_data['ble_range1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_range1']['ble_range1_bd_addr_oui'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['ble_range1']['ble_range1_bd_addr_start'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['ble_range1']['ble_range1_bd_addr_end'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x56],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_range2')) {\n\t\t\t\t\tdecoded_data['ble_range2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_range2']['ble_range2_bd_addr_oui'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['ble_range2']['ble_range2_bd_addr_start'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['ble_range2']['ble_range2_bd_addr_end'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x57],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_range3')) {\n\t\t\t\t\tdecoded_data['ble_range3'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_range3']['ble_range3_bd_addr_oui'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['ble_range3']['ble_range3_bd_addr_start'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['ble_range3']['ble_range3_bd_addr_end'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x58],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_dz0')) {\n\t\t\t\t\tdecoded_data['ble_dz0'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_dz0']['ble_dz0_bd_addr'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\tdecoded_data['ble_dz0']['ble_dz0_rssi'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x59],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_dz1')) {\n\t\t\t\t\tdecoded_data['ble_dz1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_dz1']['ble_dz1_bd_addr'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\tdecoded_data['ble_dz1']['ble_dz1_rssi'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_dz2')) {\n\t\t\t\t\tdecoded_data['ble_dz2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_dz2']['ble_dz2_bd_addr'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\tdecoded_data['ble_dz2']['ble_dz2_rssi'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5B],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_dz3')) {\n\t\t\t\t\tdecoded_data['ble_dz3'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_dz3']['ble_dz3_bd_addr'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\tdecoded_data['ble_dz3']['ble_dz3_rssi'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x68],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('battery_report_options')) {\n\t\t\t\t\tdecoded_data['battery_report_options'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_lifetime_dys_report'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_lifetime_dys_report'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_lifetime_dys_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_lifetime_pct_report'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_lifetime_pct_report'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_report_options']['battery_lifetime_pct_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x69],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('low_battery_threshold')) {\n\t\t\t\t\tdecoded_data['low_battery_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 15, 14, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['low_battery_threshold']['low_battery_threshold_type'] = \"Percentage\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['low_battery_threshold']['low_battery_threshold_type'] = \"Days\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['low_battery_threshold']['low_battery_threshold_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['low_battery_threshold']['low_battery_threshold_value'] = decode_field(arg, 2, 13, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('low_battery_led_config')) {\n\t\t\t\t\tdecoded_data['low_battery_led_config'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['low_battery_led_config']['low_battery_led_on_time'] = (decode_field(arg, 4, 31, 24, \"unsigned\") * 0.01).toFixed(2);\n\t\t\t\tdecoded_data['low_battery_led_config']['low_battery_led_off_time'] = (decode_field(arg, 4, 23, 16, \"unsigned\") * 0.01).toFixed(2);\n\t\t\t\tdecoded_data['low_battery_led_config']['low_battery_led_num_on_offs'] = decode_field(arg, 4, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['low_battery_led_config']['low_battery_led_period'] = decode_field(arg, 4, 7, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6B],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['avg_energy_trend_window'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6C],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['buzzer_disable_timeout'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6F],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['resp_format'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['lorawan_region_id'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['lorawan_region_id'] = \"US916\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['lorawan_region_id'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['lorawan_region_id'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['lorawan_region_id'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['lorawan_region_id'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['lorawan_region_id'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['lorawan_region_id'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['lorawan_region_id'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 16) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0D, 0x3C],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['num_satellites'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x64],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['avg_satellite_snr'] = decode_field(arg, 2, 15, 0, \"unsigned\") * 0.1;\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x95],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fix_type'] = \"No fix available\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['fix_type'] = \"2D fix\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['fix_type'] = \"3D Fix\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fix_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x96],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['time_to_fix'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x97],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('fix_accuracy')) {\n\t\t\t\t\tdecoded_data['fix_accuracy'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['fix_accuracy']['gnss_vertical_accuracy'] = (decode_field(arg, 4, 31, 16, \"unsigned\")).toFixed(2);\n\t\t\t\tdecoded_data['fix_accuracy']['gnss_horizontal_accuracy'] = (decode_field(arg, 4, 15, 0, \"unsigned\")).toFixed(2);\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x98],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ground_speed_accuracy'] = (decode_field(arg, 4, 31, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x99],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['num_of_fixes'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0D, 0x0F],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['log_num'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 15) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('log_request_utc_type_a')) {\n\t\t\t\t\tdecoded_data['log_request_utc_type_a'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['log_request_utc_type_a']['year_0a'] = decode_field(arg, 5, 39, 34, \"unsigned\");\n\t\t\t\tdecoded_data['log_request_utc_type_a']['month_0a'] = decode_field(arg, 5, 33, 30, \"unsigned\");\n\t\t\t\tdecoded_data['log_request_utc_type_a']['day_0a'] = decode_field(arg, 5, 29, 25, \"unsigned\");\n\t\t\t\tdecoded_data['log_request_utc_type_a']['hour_0a'] = decode_field(arg, 5, 24, 20, \"unsigned\");\n\t\t\t\tdecoded_data['log_request_utc_type_a']['minute_0a'] = decode_field(arg, 5, 19, 14, \"unsigned\");\n\t\t\t\tdecoded_data['log_request_utc_type_a']['second_0a'] = decode_field(arg, 5, 13, 8, \"unsigned\");\n\t\t\t\tdecoded_data['log_request_utc_type_a']['number_0a'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0B],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('log_request_utc_type_b')) {\n\t\t\t\t\tdecoded_data['log_request_utc_type_b'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['log_request_utc_type_b']['number_0b'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('log_utc')) {\n\t\t\t\t\tdecoded_data['log_utc'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['log_utc']['fragment_number_1'] = decode_field(arg, 5, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['year_1'] = decode_field(arg, 5, 31, 26, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['month_1'] = decode_field(arg, 5, 25, 22, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['day_1'] = decode_field(arg, 5, 21, 17, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['hour_1'] = decode_field(arg, 5, 16, 12, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['minute_1'] = decode_field(arg, 5, 11, 6, \"unsigned\");\n\t\t\t\tdecoded_data['log_utc']['second_1'] = decode_field(arg, 5, 5, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('log_coordinates')) {\n\t\t\t\t\tdecoded_data['log_coordinates'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['log_coordinates']['fragment_number_2'] = decode_field(arg, 9, 71, 64, \"unsigned\");\n\t\t\t\tdecoded_data['log_coordinates']['latitude_2'] = (decode_field(arg, 9, 63, 40, \"signed\") * 0.00001072883606).toFixed(7);\n\t\t\t\tdecoded_data['log_coordinates']['longitude_2'] = (decode_field(arg, 9, 39, 16, \"signed\") * 0.00002145767212).toFixed(7);\n\t\t\t\tdecoded_data['log_coordinates']['altitude_2'] = (decode_field(arg, 9, 15, 0, \"signed\") * 0.144958496 + -500).toFixed(3);\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('log_all')) {\n\t\t\t\t\tdecoded_data['log_all'] = {};\n\t\t\t\t}\n\t\t\t\t\targ = arg.slice(1)\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 12;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['year_3'] = decode_field(arg, 12, 95, 90, \"unsigned\");\n\t\t\t\t\t\tgroup['month_3'] = decode_field(arg, 12, 89, 86, \"unsigned\");\n\t\t\t\t\t\tgroup['day_3'] = decode_field(arg, 12, 85, 81, \"unsigned\");\n\t\t\t\t\t\tgroup['hour_3'] = decode_field(arg, 12, 80, 76, \"unsigned\");\n\t\t\t\t\t\tgroup['minute_3'] = decode_field(arg, 12, 75, 70, \"unsigned\");\n\t\t\t\t\t\tgroup['second_3'] = decode_field(arg, 12, 69, 64, \"unsigned\");\n\t\t\t\t\t\tgroup['latitude_3'] = (decode_field(arg, 12, 63, 40, \"signed\") * 0.00001072883606).toFixed(7);\n\t\t\t\t\t\tgroup['longitude_3'] = (decode_field(arg, 12, 39, 16, \"signed\") * 0.00002145767212).toFixed(7);\n\t\t\t\t\t\tgroup['altitude_3'] = (decode_field(arg, 12, 15, 0, \"signed\") * 0.144958496 + -500).toFixed(3);\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(12);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['log_all'] = data;\n\t\t\t\t\treturn loop*12;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_address'] = decode_field(arg, 4, 31, 0, \"hexstring\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['network_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0A],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['tracker_beacon_mode'] = \"Tracker Mode\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['tracker_beacon_mode'] = \"Beacon Mode\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['tracker_beacon_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number_rx2'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_ble'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('report_enable')) {\n\t\t\t\t\tdecoded_data['report_enable'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['event_type'] = \"Type 1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['event_type'] = \"Type 2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['event_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['ble_report'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['ble_report'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['ble_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['temperature_report'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['temperature_report'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['temperature_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['acceleration_vector_report'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['acceleration_vector_report'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['acceleration_vector_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['battery_voltage_report'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['battery_voltage_report'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['battery_voltage_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2B],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('event1')) {\n\t\t\t\t\tdecoded_data['event1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['event1']['n_value'] = decode_field(arg, 1, 7, 4, \"unsigned\");\n\t\t\t\tdecoded_data['event1']['m_value'] = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2C],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['t_value'] = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_enable')) {\n\t\t\t\t\tdecoded_data['accelerometer_enable'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['poweron'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['poweron'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['poweron'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['zaxis_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['zaxis_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['zaxis_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['yaxis_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['yaxis_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['yaxis_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['xaxis_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['xaxis_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['xaxis_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sensitivity')) {\n\t\t\t\t\tdecoded_data['sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"2g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"4g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"8g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"16g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x44],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x45],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['acceleration_event_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x46],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_event_tx')) {\n\t\t\t\t\tdecoded_data['acceleration_event_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['ble'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['ble'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['ble'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_alarm_tx'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_alarm_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_alarm_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('battery_tx')) {\n\t\t\t\t\tdecoded_data['battery_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_voltage_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_voltage_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_voltage_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4B],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['avg_energy_trend_window'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_mode')) {\n\t\t\t\t\tdecoded_data['ble_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['ble_mode']['num_reported_devices'] = decode_field(arg, 1, 6, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_scan_duration')) {\n\t\t\t\t\tdecoded_data['ble_scan_duration'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_scan_duration']['event_based'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['ble_scan_duration']['periodic'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ble_scan_interval'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ble_scan_window'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('whitelist0')) {\n\t\t\t\t\tdecoded_data['whitelist0'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['whitelist0']['oui_0'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist0']['lap_start_0'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist0']['lap_end_0'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x55],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('whitelist1')) {\n\t\t\t\t\tdecoded_data['whitelist1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['whitelist1']['oui_1'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist1']['lap_start_1'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist1']['lap_end_1'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x56],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('whitelist2')) {\n\t\t\t\t\tdecoded_data['whitelist2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['whitelist2']['oui_2'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist2']['lap_start_2'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist2']['lap_end_2'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x57],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('whitelist3')) {\n\t\t\t\t\tdecoded_data['whitelist3'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['whitelist3']['oui_3'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist3']['lap_start_3'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist3']['lap_end_3'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x58],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x59],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['min_advertising_interval'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5B],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"0 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-0.85 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-1.8 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-3.15 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-4 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-4.95 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-5.9 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-6.9 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-7.8 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5C],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ad_packet_format')) {\n\t\t\t\t\tdecoded_data['ad_packet_format'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['ibeacon'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['ibeacon'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['ibeacon'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['eddystone_uid'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['eddystone_uid'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['eddystone_uid'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['eddystone_tlm'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['eddystone_tlm'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['eddystone_tlm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['ad_packet_format']['rfu'] = decode_field(arg, 1, 7, 3, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5F],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mac_address'] = decode_field(arg, 6, 47, 0, \"hexstring\");\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x60],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x61],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x62],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('temperature_threshold')) {\n\t\t\t\t\tdecoded_data['temperature_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['temperature_threshold']['high'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['temperature_threshold']['low'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x63],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['temperature_thresholds_enabled'] = \"De-asserted\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['temperature_thresholds_enabled'] = \"Asserted\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['temperature_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"DN915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 25) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('basic_report')) {\n\t\t\t\t\tdecoded_data['basic_report'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 7;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_0'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_0'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(7);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['basic_report'] = data;\n\t\t\t\t\treturn loop*7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB0],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_report_0')) {\n\t\t\t\t\tdecoded_data['filter_report_0'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_1'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_1'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_0'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB1],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_report_1')) {\n\t\t\t\t\tdecoded_data['filter_report_1'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_2'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_2'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_1'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB2],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_report_2')) {\n\t\t\t\t\tdecoded_data['filter_report_2'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_3'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_3'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_2'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB3],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_report_3')) {\n\t\t\t\t\tdecoded_data['filter_report_3'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_4'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_4'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_3'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xBA],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['battery_life'] = (decode_field(arg, 1, 6, 0, \"unsigned\") * 0.01 + 2.5).toFixed(2);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xD3],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rem_batt_capacity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xBD],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rem_batt_days'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"No motion\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Motion detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_vector')) {\n\t\t\t\t\tdecoded_data['acceleration_vector'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['acceleration_vector']['xaxis'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['yaxis'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['zaxis'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) {\n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0A],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['tracker_beacon_mode'] = \"Tracker Mode\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['tracker_beacon_mode'] = \"Beacon Mode\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['tracker_beacon_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number_rx2'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x6F],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 1, 0, \"hexstring\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['command_response_opt'] = \"Enhanced LoRaWAN port 100/101\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['command_response_opt'] = \"Legacy LoraWAN port 100\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['command_response_opt'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\tdecoded_data['mcu_seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\tdecoded_data['battery_seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\tdecoded_data['tracker_seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\tdecoded_data['accl_seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['battery_ticks_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['accl_ticks_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_per_ble'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['tracker_ticks_per_ble'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['mcu_ticks_per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('fb_mode')) {\n\t\t\t\t\tdecoded_data['fb_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_event_type'] = \"Type 1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_event_type'] = \"Type 2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_event_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_ble_scan'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_ble_scan'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_ble_scan'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_temp'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_temp'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_temp'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_accl_vector'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_accl_vector'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_accl_vector'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_battery_voltage_report'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_battery_voltage_report'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fb_mode']['mcu_battery_voltage_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_event_type'] = \"Type 1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_event_type'] = \"Type 2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_event_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_ble_scan'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_ble_scan'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_ble_scan'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_mcu_temp'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_mcu_temp'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_mcu_temp'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_accl_vector'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_accl_vector'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_accl_vector'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_battery_report'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_battery_report'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['fb_battery_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_event_type'] = \"Type 1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_event_type'] = \"Type 2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_event_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_ble_scan'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_ble_scan'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_ble_scan'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_temp'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_temp'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_temp'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_accl_vector'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_accl_vector'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_accl_vector'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_battery_voltage_report'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_battery_voltage_report'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fb_mode']['tracker_battery_voltage_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_event_type'] = \"Type 1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_event_type'] = \"Type 2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_event_type'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_ble_scan'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_ble_scan'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_ble_scan'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_mcu_temp'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_mcu_temp'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_mcu_temp'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_accl_vector'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_accl_vector'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_accl_vector'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_battery_report'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_battery_report'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_enable']['accl_battery_report'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('battery_tx')) {\n\t\t\t\t\tdecoded_data['battery_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_voltage_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_voltage_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_voltage_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4B],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['avg_energy_trend_window'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2B],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('event_type_I')) {\n\t\t\t\t\tdecoded_data['event_type_I'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['event_type_I']['n_value'] = decode_field(arg, 1, 7, 4, \"unsigned\");\n\t\t\t\tdecoded_data['event_type_I']['m_value'] = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2C],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['fb_event_type2_t_value'] = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"DN915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x46],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_event_tx')) {\n\t\t\t\t\tdecoded_data['acceleration_event_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['accl_assist_ble'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['accl_assist_ble'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['accl_assist_ble'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_alarm_tx'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_alarm_tx'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_alarm_tx'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['motion_accl_assist_ble'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['motion_accl_assist_ble'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['motion_accl_assist_ble'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['motion_accl_alarms'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['motion_accl_alarms'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['motion_accl_alarms'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['assist_accl_assist_ble'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['assist_accl_assist_ble'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['assist_accl_assist_ble'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['assist_accl_alarms'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['assist_accl_alarms'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['assist_accl_alarms'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_mode')) {\n\t\t\t\t\tdecoded_data['ble_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['ble_mode']['num_reported_devices'] = decode_field(arg, 1, 6, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_scan_duration')) {\n\t\t\t\t\tdecoded_data['ble_scan_duration'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_scan_duration']['event_based'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['ble_scan_duration']['periodic'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ble_scan_interval'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ble_scan_window'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('whitelist0')) {\n\t\t\t\t\tdecoded_data['whitelist0'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['whitelist0']['oui_0'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist0']['lap_start_0'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist0']['lap_end_0'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x55],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('whitelist1')) {\n\t\t\t\t\tdecoded_data['whitelist1'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['whitelist1']['oui_1'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist1']['lap_start_1'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist1']['lap_end_1'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x56],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('whitelist2')) {\n\t\t\t\t\tdecoded_data['whitelist2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['whitelist2']['oui_2'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist2']['lap_start_2'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist2']['lap_end_2'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x57],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('whitelist3')) {\n\t\t\t\t\tdecoded_data['whitelist3'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['whitelist3']['oui_3'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist3']['lap_start_3'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\tdecoded_data['whitelist3']['lap_end_3'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x58],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x59],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['min_advertising_interval'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5B],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"0 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-0.85 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-1.8 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-3.15 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-4 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-4.95 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-5.9 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-6.9 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-7.8 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5C],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ad_packet_format')) {\n\t\t\t\t\tdecoded_data['ad_packet_format'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['ibeacon'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['ibeacon'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['ibeacon'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['eddystone_uid'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['eddystone_uid'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['eddystone_uid'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['eddystone_tlm'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['eddystone_tlm'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ad_packet_format']['eddystone_tlm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['ad_packet_format']['rfu'] = decode_field(arg, 1, 7, 3, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5F],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['mac_address'] = decode_field(arg, 6, 47, 0, \"hexstring\");\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('accelerometer_enable')) {\n\t\t\t\t\tdecoded_data['accelerometer_enable'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['poweron'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['poweron'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['poweron'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['zaxis_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['zaxis_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['zaxis_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['yaxis_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['yaxis_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['yaxis_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['xaxis_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['xaxis_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accelerometer_enable']['xaxis_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('sensitivity')) {\n\t\t\t\t\tdecoded_data['sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"2g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"4g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"8g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"16g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['motion_accl_trigger_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['assist_accl_trigger_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['motion_accl_trigger_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['assist_accl_trigger_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x44],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['motion_accl_trigger_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['assist_accl_trigger_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x45],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['motion_accl_event_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['assist_accl_event_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0x67],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['mcu_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xBA],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['battery_voltage'] = (decode_field(arg, 1, 6, 0, \"unsigned\") * 0.01).toFixed(2);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xD3],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['rem_batt_capacity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xBD],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['rem_batt_days'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x71],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_vector')) {\n\t\t\t\t\tdecoded_data['acceleration_vector'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['acceleration_vector']['xaxis'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['yaxis'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['zaxis'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x00],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"No motion\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Motion detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 25) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('basic_report')) {\n\t\t\t\t\tdecoded_data['basic_report'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 7;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_0'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_0'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(7);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['basic_report'] = data;\n\t\t\t\t\treturn loop*7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB0],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_report_0')) {\n\t\t\t\t\tdecoded_data['filter_report_0'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_1'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_1'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_0'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB1],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_report_1')) {\n\t\t\t\t\tdecoded_data['filter_report_1'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_2'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_2'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_1'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB2],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_report_2')) {\n\t\t\t\t\tdecoded_data['filter_report_2'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_3'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_3'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_2'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0xB3],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_report_3')) {\n\t\t\t\t\tdecoded_data['filter_report_3'] = {};\n\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_4'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_4'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_3'] = data;\n\t\t\t\t\treturn loop*4;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) {\n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['device_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['app_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['app_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['device_address'] = decode_field(arg, 4, 31, 0, \"hexstring\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['network_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['app_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_per_geolocation_update_stillness'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_per_geolocations_update_mobility'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x25],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_per_ambient_temp'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x26],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ticks_per_ambient_rh'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('battery_tx')) {\n\t\t\t\t\tdecoded_data['battery_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Not reported\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Reported\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Not reported\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Reported\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4B],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['avg_energy_trend_window'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['modem_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['modem_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['modem_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AS923-1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AS923-2\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 9:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"AS923-3\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 10:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 11:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 12:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['loramac_region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x73],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_metadata')) {\n\t\t\t\t\tdecoded_data['ble_metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_metadata']['stack_ver_major'] = decode_field(arg, 6, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['ble_metadata']['stack_ver_minor'] = decode_field(arg, 6, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['ble_metadata']['stack_ver_revision'] = decode_field(arg, 6, 7, 0, \"unsigned\");\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x30],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('geolocation_strategy')) {\n\t\t\t\t\tdecoded_data['geolocation_strategy'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_1'] = \"BLE\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_1'] = \"WIFI\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_1'] = \"GNSS\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2'] = \"BLE\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2'] = \"WIFI\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2'] = \"GNSS\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3'] = \"BLE\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3'] = \"WIFI\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3'] = \"GNSS\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic'] = \"A\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic'] = \"B\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic'] = \"C\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x33],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('clock_sync')) {\n\t\t\t\t\tdecoded_data['clock_sync'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['clock_sync']['interval'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['clock_sync']['interval'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['clock_sync']['invalid_delay_multiplier'] = decode_field(arg, 1, 6, 4, \"unsigned\");\n\t\t\t\tdecoded_data['clock_sync']['service'] = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['almanac__update_request_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x35],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['almanac_update_check_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x36],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('assist_coordinates')) {\n\t\t\t\t\tdecoded_data['assist_coordinates'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['assist_coordinates']['latitude'] = decode_field(arg, 8, 63, 40, \"unsigned\");\n\t\t\t\tdecoded_data['assist_coordinates']['longitude'] = decode_field(arg, 8, 39, 16, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 8, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['assist_coordinates']['enable'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['assist_coordinates']['enable'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['assist_coordinates']['enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x37],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['gnss_constellation_option'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x38],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['default_gnss_scan_mode'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x32],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['num_satellites'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['num_satellites'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['num_satellites'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['avg_satellite_snr'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['avg_satellite_snr'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['avg_satellite_snr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['min_max_satellite_snr'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['min_max_satellite_snr'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['min_max_satellite_snr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_mode')) {\n\t\t\t\t\tdecoded_data['ble_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Averaging Mode Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Averaging Mode On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['ble_mode']['num_reported_devices'] = decode_field(arg, 1, 6, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('ble_scan_duration')) {\n\t\t\t\t\tdecoded_data['ble_scan_duration'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ble_scan_duration']['periodic'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ble_scan_interval'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['ble_scan_window'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x57],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('filter_range_3')) {\n\t\t\t\t\tdecoded_data['filter_range_3'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['filter_range_3']['oui'] = decode_field(arg, 9, 71, 48, \"unsigned\");\n\t\t\t\tdecoded_data['filter_range_3']['lap_start'] = decode_field(arg, 9, 47, 24, \"unsigned\");\n\t\t\t\tdecoded_data['filter_range_3']['lap_end'] = decode_field(arg, 9, 23, 0, \"unsigned\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x58],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x59],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['min_advertising_interval'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5B],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"0 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-0.85 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-1.8 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-3.15 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-4 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-4.95 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-5.9 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-6.9 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-7.8 dBm\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5C],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('advertising_packet_format')) {\n\t\t\t\t\tdecoded_data['advertising_packet_format'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['ibeacon'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['ibeacon'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['ibeacon'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_uid'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_uid'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_uid'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_tlm'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_tlm'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_tlm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x5F],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['mac_address'] = decode_field(arg, 6, 47, 0, \"hexstring\");\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0A],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['tracker_beacon_mode'] = \"Tracker Mode\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['tracker_beacon_mode'] = \"Beacon Mode\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['tracker_beacon_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('accl_mode')) {\n\t\t\t\t\tdecoded_data['accl_mode'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accl_mode']['power_on'] = \"Off\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accl_mode']['power_on'] = \"On\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accl_mode']['power_on'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accl_mode']['zaxis_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accl_mode']['zaxis_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accl_mode']['zaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accl_mode']['yaxis_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accl_mode']['yaxis_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accl_mode']['yaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accl_mode']['xaxis_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accl_mode']['xaxis_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accl_mode']['xaxis_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('accl_sensitivity')) {\n\t\t\t\t\tdecoded_data['accl_sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['sample_rate'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['measurement_range'] = \"2g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['measurement_range'] = \"4g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['measurement_range'] = \"8g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['measurement_range'] = \"16g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['accl_sensitivity']['measurement_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['accl_trigger_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['accl_trigger_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x44],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['accl_trigger_threshold'] = (decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x45],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['accl_event_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x46],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_event_tx')) {\n\t\t\t\t\tdecoded_data['acceleration_event_tx'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['accl_assist'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['accl_assist'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['accl_assist'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['accl_alarm'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['accl_alarm'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['accl_alarm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x39],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['temp_rh_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3A],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['temp_rh_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3B],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('low_high_temp_thresholds')) {\n\t\t\t\t\tdecoded_data['low_high_temp_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['low_high_temp_thresholds']['temp_threshold_high'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\tdecoded_data['low_high_temp_thresholds']['temp_threshold_low'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0X3C],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3D],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('low_high_rh_thresholds')) {\n\t\t\t\t\tdecoded_data['low_high_rh_thresholds'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['low_high_rh_thresholds']['rh_threshold_high'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['low_high_rh_thresholds']['rh_threshold_low'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3E],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0XD3],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['rem_battery_capacity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0X00, 0xBD],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['rem_batt_days'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x95],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('geolocation_cycle_failed')) {\n\t\t\t\t\tdecoded_data['geolocation_cycle_failed'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['geolocation_cycle_failed']['gnss'] = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\tdecoded_data['geolocation_cycle_failed']['wi_fi'] = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\tdecoded_data['geolocation_cycle_failed']['ble'] = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\tdecoded_data['geolocation_cycle_failed']['duty_cycle_drop'] = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x71],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('acceleration_vector')) {\n\t\t\t\t\tdecoded_data['acceleration_vector'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['acceleration_vector']['xaxis'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['yaxis'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\tdecoded_data['acceleration_vector']['zaxis'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x00],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['acceleration_alarm'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03, 0x67],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(2);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04, 0x68],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['relative_humidity'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5).toFixed(2);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 16) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x0D, 0x63],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['min'] = decode_field(arg, 4, 15, 0, \"signed\");\n\t\t\t\tdecoded_data['max'] = decode_field(arg, 4, 31, 16, \"signed\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 199) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['lora_cloud_communications'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = { decodeUplink: decodeUplink };\nfunction decodeUplink(input) {\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif (input.fPort === 101) {\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile (arg.length > 0) {\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif (num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor (var i = 0; i < num_invalid_writes; i++) {\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\n\tif (input.fPort === 10) {\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [0x00, 0xD3],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['battery_lifetime_pct'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x00, 0xBD],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['battery_lifetime_dys'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x00, 0x95],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('geolocation_cycle_failed')) {\n\t\t\t\t\t\tdecoded_data['geolocation_cycle_failed'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['gnss_geo'] = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['wifi_geo'] = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['ble_geo'] = decode_field(arg, 1, 3, 3, \"unsigned\");\n\t\t\t\t\tdecoded_data['geolocation_cycle_failed']['duty_cycle_geo'] = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x00, 0x71],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('acceleration_vector')) {\n\t\t\t\t\t\tdecoded_data['acceleration_vector'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['acceleration_vector']['xaxis'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n\t\t\t\t\tdecoded_data['acceleration_vector']['yaxis'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n\t\t\t\t\tdecoded_data['acceleration_vector']['zaxis'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\t\treturn 6;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x03, 0x67],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x04, 0x68],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['relative_humidity'] = decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5;\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t];\n\t}\n\tif (input.fPort === 100) {\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [0x46],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('acceleration_event_tx')) {\n\t\t\t\t\t\tdecoded_data['acceleration_event_tx'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_alarm'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_alarm'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_alarm'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_assist'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_assist'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['acceleration_event_tx']['acceleration_assist'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x0A],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['operational_mode'] = \"Tracker Mode\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['operational_mode'] = \"Beacon Mode\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['operational_mode'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x11],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enabled\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x12],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x20],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x21],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ticks_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x22],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ticks_per_geo_update_stillness'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x23],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ticks_per_geo_update_mobility'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x24],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ticks_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x25],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ticks_per_ambient_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x26],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ticks_per_ambient_humidity'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x30],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('geolocation_strategy')) {\n\t\t\t\t\t\tdecoded_data['geolocation_strategy'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_1_geo'] = \"BLE\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_1_geo'] = \"Wi-Fi\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_1_geo'] = \"GNSS\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_1_geo'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 3, 2, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2_geo'] = \"Not defined\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2_geo'] = \"BLE\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2_geo'] = \"Wi-Fi\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2_geo'] = \"GNSS\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_2_geo'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3_geo'] = \"Not defined\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3_geo'] = \"BLE\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3_geo'] = \"Wi-Fi\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3_geo'] = \"GNSS\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_3_geo'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 6, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic_geo'] = \"A\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic_geo'] = \"B\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic_geo'] = \"C\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic_geo'] = \"D\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['geolocation_strategy']['scan_order_logic_geo'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x32],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('gnss_diagnostics_tx')) {\n\t\t\t\t\t\tdecoded_data['gnss_diagnostics_tx'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['num_satellites_gnss'] = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['avg_satellite_snr_gnss'] = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\tdecoded_data['gnss_diagnostics_tx']['min_maxi_satellite_snr_gnss'] = decode_field(arg, 1, 6, 6, \"unsigned\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x33],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('clock_sync')) {\n\t\t\t\t\t\tdecoded_data['clock_sync'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['clock_sync']['interval_clock_sync'] = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\t\tdecoded_data['clock_sync']['invalid_delay_multiplier_clock_sync'] = decode_field(arg, 1, 6, 4, \"unsigned\");\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['clock_sync']['service_clock_sync'] = \"LoRaMAC Clock Sync\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['clock_sync']['service_clock_sync'] = \"LoRa Cloud Clock Sync\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['clock_sync']['service_clock_sync'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x34],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['almanac__update_request_backoff'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x35],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['almanac_update_check_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x36],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('assist_coordinates_type')) {\n\t\t\t\t\t\tdecoded_data['assist_coordinates_type'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['assist_coordinates_type']['latitude'] = decode_field(arg, 9, 31, 0, \"unsigned\");\n\t\t\t\t\tdecoded_data['assist_coordinates_type']['longitude'] = decode_field(arg, 9, 63, 32, \"unsigned\");\n\t\t\t\t\tvar val = decode_field(arg, 9, 64, 64, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['assist_coordinates_type']['enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['assist_coordinates_type']['enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['assist_coordinates_type']['enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 9;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x37],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['gnss_constellation_option'] = \"GPS\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['gnss_constellation_option'] = \"BeiDou\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['gnss_constellation_option'] = \"GPS and BeiDou\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['gnss_constellation_option'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x38],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['default_gnss_scan_mode'] = \"Static scanning mode \";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['default_gnss_scan_mode'] = \"Mobile scanning mode\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['default_gnss_scan_mode'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x39],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['temp_rh_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x3A],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['temp_rh_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x3B],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['temp_threshold_high'] = decode_field(arg, 2, 15, 8, \"signed\");\n\t\t\t\t\tdecoded_data['temp_threshold_low'] = decode_field(arg, 2, 7, 0, \"signed\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0X3C],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"hexstring\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['temp_thresholds_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x3D],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['rh_threshold_high'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\t\tdecoded_data['rh_threshold_low'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x3E],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['rh_thresholds_enabled'] = decode_field(arg, 1, 0, 0, \"hexstring\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x40],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('accelerometer_mode')) {\n\t\t\t\t\t\tdecoded_data['accelerometer_mode'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['accelerometer_mode']['poweron'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['accelerometer_mode']['poweron'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['accelerometer_mode']['poweron'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['accelerometer_mode']['zaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['accelerometer_mode']['zaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['accelerometer_mode']['zaxis_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['accelerometer_mode']['yaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['accelerometer_mode']['yaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['accelerometer_mode']['yaxis_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['accelerometer_mode']['xaxis_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['accelerometer_mode']['xaxis_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['accelerometer_mode']['xaxis_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x41],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('accelormeter_sensitivity')) {\n\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 6:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 7:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['sample_rate'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['measurement_range'] = \"2g\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['measurement_range'] = \"4g\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['measurement_range'] = \"8g\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['measurement_range'] = \"16g\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['accelormeter_sensitivity']['measurement_range'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x42],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['acceleration_event_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x43],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['acceleration_event_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x44],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['acceleration_event_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001;\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x45],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['acceleration_event_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x4A],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('battery_tx')) {\n\t\t\t\t\t\tdecoded_data['battery_tx'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['battery_tx']['report_capacity_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['battery_tx']['report_lifetime_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x4B],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['avg_energy_trend_window'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x50],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('ble_mode')) {\n\t\t\t\t\t\tdecoded_data['ble_mode'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Off\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"On\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['ble_mode']['averaging_mode'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_mode']['num_reported_devices'] = decode_field(arg, 1, 6, 0, \"unsigned\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x51],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('ble_scan_duration')) {\n\t\t\t\t\t\tdecoded_data['ble_scan_duration'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_scan_duration']['event_based'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\t\tdecoded_data['ble_scan_duration']['periodic'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x52],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ble_scan_interval'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x53],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['ble_scan_window'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x54],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('filter_range_0')) {\n\t\t\t\t\t\tdecoded_data['filter_range_0'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_range_0']['oui_0'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\t\tdecoded_data['filter_range_0']['lap_start_0'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\t\tdecoded_data['filter_range_0']['lap_end_0'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\t\treturn 9;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x55],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('filter_range_1')) {\n\t\t\t\t\t\tdecoded_data['filter_range_1'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_range_1']['oui_1'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\t\tdecoded_data['filter_range_1']['lap_start_1'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\t\tdecoded_data['filter_range_1']['lap_end_1'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\t\treturn 9;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x56],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('filter_range_2')) {\n\t\t\t\t\t\tdecoded_data['filter_range_2'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_range_2']['oui_2'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\t\tdecoded_data['filter_range_2']['lap_start_2'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\t\tdecoded_data['filter_range_2']['lap_end_2'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\t\treturn 9;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x57],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('filter_range_3')) {\n\t\t\t\t\t\tdecoded_data['filter_range_3'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_range_3']['oui_3'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n\t\t\t\t\tdecoded_data['filter_range_3']['lap_start_3'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n\t\t\t\t\tdecoded_data['filter_range_3']['lap_end_3'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n\t\t\t\t\treturn 9;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x58],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['advertising_enabled'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x59],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['min_advertising_interval'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x5B],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"0 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-0.85 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-1.8 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-3.15 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-4 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-4.95 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 6:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-5.9 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 7:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-6.9 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 8:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-7.8 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 9:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-8.85 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 10:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-9.9 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 11:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-12.05 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-14.1 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 13:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-16.5 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 14:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-20.85 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 15:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"-40 dBm\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['tx_advertising_power'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x5C],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('advertising_packet_format')) {\n\t\t\t\t\t\tdecoded_data['advertising_packet_format'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['advertising_packet_format']['ibeacon'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['advertising_packet_format']['ibeacon'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['advertising_packet_format']['ibeacon'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_uid'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_uid'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_uid'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar val = decode_field(arg, 1, 2, 2, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_tlm'] = \"Disable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_tlm'] = \"Enable\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['advertising_packet_format']['eddystone_tlm'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x5F],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['mac_address'] = decode_field(arg, 6, 47, 0, \"hexstring\");\n\t\t\t\t\treturn 6;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x71],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['metadata']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\t\tdecoded_data['metadata']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\t\tdecoded_data['metadata']['app_ver_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\t\tdecoded_data['metadata']['loramac_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\t\tdecoded_data['metadata']['loramac_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\t\tdecoded_data['metadata']['loramac_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t\t{\n\t\t\t\t\t\tswitch (val) {\n\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"EU868\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"US916\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"AS923\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"AU915\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"IN865\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 5:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"CN470\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 6:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"KR920\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 7:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"RU864\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 8:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"DN915\";\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdecoded_data['metadata']['loramac_region_id'] = \"Invalid\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn 7;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x73],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('ble_metadata')) {\n\t\t\t\t\t\tdecoded_data['ble_metadata'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['ble_metadata']['stack_ver_major'] = decode_field(arg, 6, 23, 16, \"unsigned\");\n\t\t\t\t\tdecoded_data['ble_metadata']['stack_ver_minor'] = decode_field(arg, 6, 15, 8, \"unsigned\");\n\t\t\t\t\tdecoded_data['ble_metadata']['stack_ver_revision'] = decode_field(arg, 6, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 6;\n\t\t\t\t}\n\t\t\t},\n\t\t];\n\t}\n\tif (input.fPort === 16) {\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [0x0D, 0x3C],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['num_satellites'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x0D, 0x64],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('min_max_satellite_snr')) {\n\t\t\t\t\t\tdecoded_data['min_max_satellite_snr'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['min_max_satellite_snr']['avg_satellite_snr'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0x0D, 0x63],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('min_max_satellite_snr')) {\n\t\t\t\t\t\tdecoded_data['min_max_satellite_snr'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['min_max_satellite_snr']['min_satellite_snr'] = (decode_field(arg, 4, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\t\tdecoded_data['min_max_satellite_snr']['maxi_satellite_snr'] = (decode_field(arg, 4, 31, 16, \"signed\") * 0.1).toFixed(1);\n\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t},\n\t\t];\n\t}\n\tif (input.fPort === 25) {\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [0x0A],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('basic_report')) {\n\t\t\t\t\t\tdecoded_data['basic_report'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 7;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_0'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_0'] = decode_field(arg, 7, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(7);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['basic_report'] = data;\n\t\t\t\t\treturn loop * 7;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0xB0],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('filter_report_0')) {\n\t\t\t\t\t\tdecoded_data['filter_report_0'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_1'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_1'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_0'] = data;\n\t\t\t\t\treturn loop * 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0xB1],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('filter_report_1')) {\n\t\t\t\t\t\tdecoded_data['filter_report_1'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_2'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_2'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_1'] = data;\n\t\t\t\t\treturn loop * 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0xB2],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('filter_report_2')) {\n\t\t\t\t\t\tdecoded_data['filter_report_2'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_3'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_3'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_2'] = data;\n\t\t\t\t\treturn loop * 4;\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: [0xB3],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tif (!decoded_data.hasOwnProperty('filter_report_3')) {\n\t\t\t\t\t\tdecoded_data['filter_report_3'] = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 4;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['BD_ADDR_4'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n\t\t\t\t\t\tgroup['RSSI_4'] = decode_field(arg, 4, 7, 0, \"signed\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(4);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data['filter_report_3'] = data;\n\t\t\t\t\treturn loop * 4;\n\t\t\t\t}\n\t\t\t},\n\t\t];\n\t}\n\tif (input.fPort === 199) {\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tdecoded_data['lora_cloud_communications'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t},\n\t\t];\n\t}\n\tif (input.fPort === 192) {\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [0x00],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 6;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['mac_addr_only'] = decode_field(arg, 6, 47, 0, \"hexstring\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(6);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data = data;\n\t\t\t\t\treturn loop * 6;\n\t\t\t\t}\n\t\t\t},\n\t\t];\n\t}\n\tif (input.fPort === 197) {\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [0x01],\n\t\t\t\tfn: function (arg) {\n\t\t\t\t\tvar data = [];\n\t\t\t\t\tvar loop = arg.length / 7;\n\t\t\t\t\tfor (var i = 0; i < loop; i++) {\n\t\t\t\t\t\tvar group = {};\n\t\t\t\t\t\tgroup['rssi'] = decode_field(arg, 7, 55, 48, \"signed\");\n\t\t\t\t\t\tgroup['mac_addr'] = decode_field(arg, 7, 47, 0, \"hexstring\");\n\t\t\t\t\t\tdata.push(group);\n\t\t\t\t\t\targ = arg.slice(7);\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data = data;\n\t\t\t\t\treturn loop * 7;\n\t\t\t\t}\n\t\t\t},\n\t\t];\n\t}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif (totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk) {\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n\t// Converts array of bytes to 8 bit array\n\tfunction convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n\tvar output = {\n\t\t\"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n\t};\n\n\treturn output;\n}\n","module.exports = { decodeUplink: decodeUplink };\nfunction decodeUplink(input) {\n var decoded_data = {};\n var decoder = [];\n var errors = [];\n var bytes = convertToUint8Array(input.bytes);\n decoded_data['raw'] = toHexString(bytes).toUpperCase();\n decoded_data['fPort'] = input.fPort;\n\n if (input.fPort === 101) {\n decoder = [\n {\n key: [],\n fn: function (arg) {\n var size = arg.length;\n var invalid_registers = [];\n var responses = [];\n while (arg.length > 0) {\n var downlink_fcnt = arg[0];\n var num_invalid_writes = arg[1];\n arg = arg.slice(2);\n if (num_invalid_writes > 0) {\n for (var i = 0; i < num_invalid_writes; i++) {\n invalid_registers.push(\"0x\" + arg[i].toString(16));\n }\n arg = arg.slice(num_invalid_writes);\n responses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n }\n else {\n responses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n }\n invalid_registers = [];\n }\n decoded_data[\"response\"] = responses;\n return size;\n }\n }\n ];\n }\n\n if (input.fPort === 10) {\n decoder = [\n {\n key: [0x00, 0xD3],\n fn: function (arg) {\n decoded_data['battery_lifetime_pct'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n return 1;\n }\n },\n {\n key: [0x00, 0xBD],\n fn: function (arg) {\n decoded_data['battery_lifetime_dys'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x00, 0x95],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('geolocation_cycle_failed')) {\n decoded_data['geolocation_cycle_failed'] = {};\n }\n decoded_data['geolocation_cycle_failed']['gnss_geo'] = decode_field(arg, 1, 1, 0, \"unsigned\");\n decoded_data['geolocation_cycle_failed']['wifi_geo'] = decode_field(arg, 1, 2, 2, \"unsigned\");\n decoded_data['geolocation_cycle_failed']['ble_geo'] = decode_field(arg, 1, 3, 3, \"unsigned\");\n decoded_data['geolocation_cycle_failed']['duty_cycle_geo'] = decode_field(arg, 1, 4, 4, \"unsigned\");\n return 1;\n }\n },\n {\n key: [0x00, 0x71],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('acceleration_vector')) {\n decoded_data['acceleration_vector'] = {};\n }\n decoded_data['acceleration_vector']['xaxis'] = (decode_field(arg, 6, 47, 32, \"signed\") * 0.001).toFixed(3);\n decoded_data['acceleration_vector']['yaxis'] = (decode_field(arg, 6, 31, 16, \"signed\") * 0.001).toFixed(3);\n decoded_data['acceleration_vector']['zaxis'] = (decode_field(arg, 6, 15, 0, \"signed\") * 0.001).toFixed(3);\n return 6;\n }\n },\n {\n key: [0x03, 0x67],\n fn: function (arg) {\n decoded_data['temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n return 2;\n }\n },\n {\n key: [0x04, 0x68],\n fn: function (arg) {\n decoded_data['relative_humidity'] = decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5;\n return 1;\n }\n },\n ];\n }\n if (input.fPort === 100) {\n decoder = [\n {\n key: [0x46],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('acceleration_event_tx')) {\n decoded_data['acceleration_event_tx'] = {};\n }\n var val = decode_field(arg, 1, 0, 0, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['acceleration_event_tx']['acceleration_alarm'] = \"Disable\";\n break;\n case 1:\n decoded_data['acceleration_event_tx']['acceleration_alarm'] = \"Enable\";\n break;\n default:\n decoded_data['acceleration_event_tx']['acceleration_alarm'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 1, 1, 1, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['acceleration_event_tx']['acceleration_assist'] = \"Disable\";\n break;\n case 1:\n decoded_data['acceleration_event_tx']['acceleration_assist'] = \"Enable\";\n break;\n default:\n decoded_data['acceleration_event_tx']['acceleration_assist'] = \"Invalid\";\n }\n }\n return 1;\n }\n },\n {\n key: [0x0A],\n fn: function (arg) {\n var val = decode_field(arg, 1, 7, 0, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['operational_mode'] = \"Tracker Mode\";\n break;\n case 1:\n decoded_data['operational_mode'] = \"Beacon Mode\";\n break;\n default:\n decoded_data['operational_mode'] = \"Invalid\";\n }\n }\n return 1;\n }\n },\n {\n key: [0x11],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('loramac_opts')) {\n decoded_data['loramac_opts'] = {};\n }\n var val = decode_field(arg, 2, 0, 0, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n break;\n case 1:\n decoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n break;\n default:\n decoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 2, 1, 1, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['loramac_opts']['sync_word'] = \"Private\";\n break;\n case 1:\n decoded_data['loramac_opts']['sync_word'] = \"Public\";\n break;\n default:\n decoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 2, 2, 2, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['loramac_opts']['duty_cycle'] = \"Disabled\";\n break;\n case 1:\n decoded_data['loramac_opts']['duty_cycle'] = \"Enabled\";\n break;\n default:\n decoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 2, 3, 3, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['loramac_opts']['adr'] = \"Disable\";\n break;\n case 1:\n decoded_data['loramac_opts']['adr'] = \"Enable\";\n break;\n default:\n decoded_data['loramac_opts']['adr'] = \"Invalid\";\n }\n }\n return 2;\n }\n },\n {\n key: [0x12],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n decoded_data['loramac_dr_tx'] = {};\n }\n decoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n decoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x20],\n fn: function (arg) {\n decoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n return 4;\n }\n },\n {\n key: [0x21],\n fn: function (arg) {\n decoded_data['ticks_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x22],\n fn: function (arg) {\n decoded_data['ticks_per_geo_update_stillness'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x23],\n fn: function (arg) {\n decoded_data['ticks_per_geo_update_mobility'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x24],\n fn: function (arg) {\n decoded_data['ticks_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x25],\n fn: function (arg) {\n decoded_data['ticks_per_ambient_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x26],\n fn: function (arg) {\n decoded_data['ticks_per_ambient_humidity'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x30],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('geolocation_strategy')) {\n decoded_data['geolocation_strategy'] = {};\n }\n var val = decode_field(arg, 1, 1, 0, \"unsigned\");\n {\n switch (val) {\n case 1:\n decoded_data['geolocation_strategy']['scan_1_geo'] = \"BLE\";\n break;\n case 2:\n decoded_data['geolocation_strategy']['scan_1_geo'] = \"Wi-Fi\";\n break;\n case 3:\n decoded_data['geolocation_strategy']['scan_1_geo'] = \"GNSS\";\n break;\n default:\n decoded_data['geolocation_strategy']['scan_1_geo'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 1, 3, 2, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['geolocation_strategy']['scan_2_geo'] = \"Not defined\";\n break;\n case 1:\n decoded_data['geolocation_strategy']['scan_2_geo'] = \"BLE\";\n break;\n case 2:\n decoded_data['geolocation_strategy']['scan_2_geo'] = \"Wi-Fi\";\n break;\n case 3:\n decoded_data['geolocation_strategy']['scan_2_geo'] = \"GNSS\";\n break;\n default:\n decoded_data['geolocation_strategy']['scan_2_geo'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 1, 5, 4, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['geolocation_strategy']['scan_3_geo'] = \"Not defined\";\n break;\n case 1:\n decoded_data['geolocation_strategy']['scan_3_geo'] = \"BLE\";\n break;\n case 2:\n decoded_data['geolocation_strategy']['scan_3_geo'] = \"Wi-Fi\";\n break;\n case 3:\n decoded_data['geolocation_strategy']['scan_3_geo'] = \"GNSS\";\n break;\n default:\n decoded_data['geolocation_strategy']['scan_3_geo'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 1, 7, 6, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['geolocation_strategy']['scan_order_logic_geo'] = \"A\";\n break;\n case 1:\n decoded_data['geolocation_strategy']['scan_order_logic_geo'] = \"B\";\n break;\n case 2:\n decoded_data['geolocation_strategy']['scan_order_logic_geo'] = \"C\";\n break;\n case 3:\n decoded_data['geolocation_strategy']['scan_order_logic_geo'] = \"D\";\n break;\n default:\n decoded_data['geolocation_strategy']['scan_order_logic_geo'] = \"Invalid\";\n }\n }\n return 1;\n }\n },\n {\n key: [0x32],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('gnss_diagnostics_tx')) {\n decoded_data['gnss_diagnostics_tx'] = {};\n }\n decoded_data['gnss_diagnostics_tx']['num_satellites_gnss'] = decode_field(arg, 1, 0, 0, \"unsigned\");\n decoded_data['gnss_diagnostics_tx']['avg_satellite_snr_gnss'] = decode_field(arg, 1, 1, 1, \"unsigned\");\n decoded_data['gnss_diagnostics_tx']['min_maxi_satellite_snr_gnss'] = decode_field(arg, 1, 6, 6, \"unsigned\");\n return 1;\n }\n },\n {\n key: [0x33],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('clock_sync')) {\n decoded_data['clock_sync'] = {};\n }\n decoded_data['clock_sync']['interval_clock_sync'] = decode_field(arg, 1, 3, 0, \"unsigned\");\n decoded_data['clock_sync']['invalid_delay_multiplier_clock_sync'] = decode_field(arg, 1, 6, 4, \"unsigned\");\n var val = decode_field(arg, 1, 7, 7, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['clock_sync']['service_clock_sync'] = \"LoRaMAC Clock Sync\";\n break;\n case 1:\n decoded_data['clock_sync']['service_clock_sync'] = \"LoRa Cloud Clock Sync\";\n break;\n default:\n decoded_data['clock_sync']['service_clock_sync'] = \"Invalid\";\n }\n }\n return 1;\n }\n },\n {\n key: [0x34],\n fn: function (arg) {\n decoded_data['almanac__update_request_backoff'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x35],\n fn: function (arg) {\n decoded_data['almanac_update_check_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n return 1;\n }\n },\n {\n key: [0x36],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('assist_coordinates_type')) {\n decoded_data['assist_coordinates_type'] = {};\n }\n decoded_data['assist_coordinates_type']['latitude'] = decode_field(arg, 9, 31, 0, \"unsigned\");\n decoded_data['assist_coordinates_type']['longitude'] = decode_field(arg, 9, 63, 32, \"unsigned\");\n var val = decode_field(arg, 9, 64, 64, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['assist_coordinates_type']['enabled'] = \"Disable\";\n break;\n case 1:\n decoded_data['assist_coordinates_type']['enabled'] = \"Enable\";\n break;\n default:\n decoded_data['assist_coordinates_type']['enabled'] = \"Invalid\";\n }\n }\n return 9;\n }\n },\n {\n key: [0x37],\n fn: function (arg) {\n var val = decode_field(arg, 1, 7, 0, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['gnss_constellation_option'] = \"GPS\";\n break;\n case 1:\n decoded_data['gnss_constellation_option'] = \"BeiDou\";\n break;\n case 2:\n decoded_data['gnss_constellation_option'] = \"GPS and BeiDou\";\n break;\n default:\n decoded_data['gnss_constellation_option'] = \"Invalid\";\n }\n }\n return 1;\n }\n },\n {\n key: [0x38],\n fn: function (arg) {\n var val = decode_field(arg, 1, 7, 0, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['default_gnss_scan_mode'] = \"Static scanning mode \";\n break;\n case 1:\n decoded_data['default_gnss_scan_mode'] = \"Mobile scanning mode\";\n break;\n default:\n decoded_data['default_gnss_scan_mode'] = \"Invalid\";\n }\n }\n return 1;\n }\n },\n {\n key: [0x39],\n fn: function (arg) {\n decoded_data['temp_rh_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n return 4;\n }\n },\n {\n key: [0x3A],\n fn: function (arg) {\n decoded_data['temp_rh_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n return 4;\n }\n },\n {\n key: [0x3B],\n fn: function (arg) {\n decoded_data['temp_threshold_high'] = decode_field(arg, 2, 15, 8, \"signed\");\n decoded_data['temp_threshold_low'] = decode_field(arg, 2, 7, 0, \"signed\");\n return 2;\n }\n },\n {\n key: [0X3C],\n fn: function (arg) {\n var val = decode_field(arg, 2, 0, 0, \"hexstring\");\n {\n switch (val) {\n default:\n decoded_data['temp_thresholds_enabled'] = \"Invalid\";\n }\n }\n return 2;\n }\n },\n {\n key: [0x3D],\n fn: function (arg) {\n decoded_data['rh_threshold_high'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n decoded_data['rh_threshold_low'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x3E],\n fn: function (arg) {\n decoded_data['rh_thresholds_enabled'] = decode_field(arg, 1, 0, 0, \"hexstring\");\n return 1;\n }\n },\n {\n key: [0x40],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('accelerometer_mode')) {\n decoded_data['accelerometer_mode'] = {};\n }\n var val = decode_field(arg, 1, 7, 7, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['accelerometer_mode']['poweron'] = \"Off\";\n break;\n case 1:\n decoded_data['accelerometer_mode']['poweron'] = \"On\";\n break;\n default:\n decoded_data['accelerometer_mode']['poweron'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 1, 2, 2, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['accelerometer_mode']['zaxis_enabled'] = \"Disable\";\n break;\n case 1:\n decoded_data['accelerometer_mode']['zaxis_enabled'] = \"Enable\";\n break;\n default:\n decoded_data['accelerometer_mode']['zaxis_enabled'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 1, 1, 1, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['accelerometer_mode']['yaxis_enabled'] = \"Disable\";\n break;\n case 1:\n decoded_data['accelerometer_mode']['yaxis_enabled'] = \"Enable\";\n break;\n default:\n decoded_data['accelerometer_mode']['yaxis_enabled'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 1, 0, 0, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['accelerometer_mode']['xaxis_enabled'] = \"Disable\";\n break;\n case 1:\n decoded_data['accelerometer_mode']['xaxis_enabled'] = \"Enable\";\n break;\n default:\n decoded_data['accelerometer_mode']['xaxis_enabled'] = \"Invalid\";\n }\n }\n return 1;\n }\n },\n {\n key: [0x41],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('accelormeter_sensitivity')) {\n decoded_data['accelormeter_sensitivity'] = {};\n }\n var val = decode_field(arg, 1, 2, 0, \"unsigned\");\n {\n switch (val) {\n case 1:\n decoded_data['accelormeter_sensitivity']['sample_rate'] = \"1 Hz\";\n break;\n case 2:\n decoded_data['accelormeter_sensitivity']['sample_rate'] = \"10 Hz\";\n break;\n case 3:\n decoded_data['accelormeter_sensitivity']['sample_rate'] = \"25 Hz\";\n break;\n case 4:\n decoded_data['accelormeter_sensitivity']['sample_rate'] = \"50 Hz\";\n break;\n case 5:\n decoded_data['accelormeter_sensitivity']['sample_rate'] = \"100 Hz\";\n break;\n case 6:\n decoded_data['accelormeter_sensitivity']['sample_rate'] = \"200 Hz\";\n break;\n case 7:\n decoded_data['accelormeter_sensitivity']['sample_rate'] = \"400 Hz\";\n break;\n default:\n decoded_data['accelormeter_sensitivity']['sample_rate'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 1, 5, 4, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['accelormeter_sensitivity']['measurement_range'] = \"2g\";\n break;\n case 1:\n decoded_data['accelormeter_sensitivity']['measurement_range'] = \"4g\";\n break;\n case 2:\n decoded_data['accelormeter_sensitivity']['measurement_range'] = \"8g\";\n break;\n case 3:\n decoded_data['accelormeter_sensitivity']['measurement_range'] = \"16g\";\n break;\n default:\n decoded_data['accelormeter_sensitivity']['measurement_range'] = \"Invalid\";\n }\n }\n return 1;\n }\n },\n {\n key: [0x42],\n fn: function (arg) {\n decoded_data['acceleration_event_threshold_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x43],\n fn: function (arg) {\n decoded_data['acceleration_event_threshold_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x44],\n fn: function (arg) {\n decoded_data['acceleration_event_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\") * 0.001;\n return 2;\n }\n },\n {\n key: [0x45],\n fn: function (arg) {\n decoded_data['acceleration_event_grace_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x4A],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('battery_tx')) {\n decoded_data['battery_tx'] = {};\n }\n var val = decode_field(arg, 1, 1, 1, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['battery_tx']['report_capacity_enabled'] = \"Disable\";\n break;\n case 1:\n decoded_data['battery_tx']['report_capacity_enabled'] = \"Enable\";\n break;\n default:\n decoded_data['battery_tx']['report_capacity_enabled'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 1, 2, 2, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['battery_tx']['report_lifetime_enabled'] = \"Disable\";\n break;\n case 1:\n decoded_data['battery_tx']['report_lifetime_enabled'] = \"Enable\";\n break;\n default:\n decoded_data['battery_tx']['report_lifetime_enabled'] = \"Invalid\";\n }\n }\n return 1;\n }\n },\n {\n key: [0x50],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('ble_mode')) {\n decoded_data['ble_mode'] = {};\n }\n var val = decode_field(arg, 1, 7, 7, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['ble_mode']['averaging_mode'] = \"Off\";\n break;\n case 1:\n decoded_data['ble_mode']['averaging_mode'] = \"On\";\n break;\n default:\n decoded_data['ble_mode']['averaging_mode'] = \"Invalid\";\n }\n }\n decoded_data['ble_mode']['num_reported_devices'] = decode_field(arg, 1, 6, 0, \"unsigned\");\n return 1;\n }\n },\n {\n key: [0x51],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('ble_scan_duration')) {\n decoded_data['ble_scan_duration'] = {};\n }\n decoded_data['ble_scan_duration']['event_based'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n decoded_data['ble_scan_duration']['periodic'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x52],\n fn: function (arg) {\n decoded_data['ble_scan_interval'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x53],\n fn: function (arg) {\n decoded_data['ble_scan_window'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x54],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('filter_range_0')) {\n decoded_data['filter_range_0'] = {};\n }\n decoded_data['filter_range_0']['oui_0'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n decoded_data['filter_range_0']['lap_start_0'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n decoded_data['filter_range_0']['lap_end_0'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n return 9;\n }\n },\n {\n key: [0x55],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('filter_range_1')) {\n decoded_data['filter_range_1'] = {};\n }\n decoded_data['filter_range_1']['oui_1'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n decoded_data['filter_range_1']['lap_start_1'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n decoded_data['filter_range_1']['lap_end_1'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n return 9;\n }\n },\n {\n key: [0x56],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('filter_range_2')) {\n decoded_data['filter_range_2'] = {};\n }\n decoded_data['filter_range_2']['oui_2'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n decoded_data['filter_range_2']['lap_start_2'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n decoded_data['filter_range_2']['lap_end_2'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n return 9;\n }\n },\n {\n key: [0x57],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('filter_range_3')) {\n decoded_data['filter_range_3'] = {};\n }\n decoded_data['filter_range_3']['oui_3'] = decode_field(arg, 9, 71, 48, \"hexstring\");\n decoded_data['filter_range_3']['lap_start_3'] = decode_field(arg, 9, 47, 24, \"hexstring\");\n decoded_data['filter_range_3']['lap_end_3'] = decode_field(arg, 9, 23, 0, \"hexstring\");\n return 9;\n }\n },\n {\n key: [0x58],\n fn: function (arg) {\n var val = decode_field(arg, 1, 0, 0, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['advertising_enabled'] = \"Disable\";\n break;\n case 1:\n decoded_data['advertising_enabled'] = \"Enable\";\n break;\n default:\n decoded_data['advertising_enabled'] = \"Invalid\";\n }\n }\n return 1;\n }\n },\n {\n key: [0x59],\n fn: function (arg) {\n decoded_data['min_advertising_interval'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n return 2;\n }\n },\n {\n key: [0x5B],\n fn: function (arg) {\n var val = decode_field(arg, 1, 7, 0, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['tx_advertising_power'] = \"0 dBm\";\n break;\n case 1:\n decoded_data['tx_advertising_power'] = \"-0.85 dBm\";\n break;\n case 2:\n decoded_data['tx_advertising_power'] = \"-1.8 dBm\";\n break;\n case 3:\n decoded_data['tx_advertising_power'] = \"-3.15 dBm\";\n break;\n case 4:\n decoded_data['tx_advertising_power'] = \"-4 dBm\";\n break;\n case 5:\n decoded_data['tx_advertising_power'] = \"-4.95 dBm\";\n break;\n case 6:\n decoded_data['tx_advertising_power'] = \"-5.9 dBm\";\n break;\n case 7:\n decoded_data['tx_advertising_power'] = \"-6.9 dBm\";\n break;\n case 8:\n decoded_data['tx_advertising_power'] = \"-7.8 dBm\";\n break;\n case 9:\n decoded_data['tx_advertising_power'] = \"-8.85 dBm\";\n break;\n case 10:\n decoded_data['tx_advertising_power'] = \"-9.9 dBm\";\n break;\n case 11:\n decoded_data['tx_advertising_power'] = \"-12.05 dBm\";\n break;\n case 12:\n decoded_data['tx_advertising_power'] = \"-14.1 dBm\";\n break;\n case 13:\n decoded_data['tx_advertising_power'] = \"-16.5 dBm\";\n break;\n case 14:\n decoded_data['tx_advertising_power'] = \"-20.85 dBm\";\n break;\n case 15:\n decoded_data['tx_advertising_power'] = \"-40 dBm\";\n break;\n default:\n decoded_data['tx_advertising_power'] = \"Invalid\";\n }\n }\n return 1;\n }\n },\n {\n key: [0x5C],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('advertising_packet_format')) {\n decoded_data['advertising_packet_format'] = {};\n }\n var val = decode_field(arg, 1, 0, 0, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['advertising_packet_format']['ibeacon'] = \"Disable\";\n break;\n case 1:\n decoded_data['advertising_packet_format']['ibeacon'] = \"Enable\";\n break;\n default:\n decoded_data['advertising_packet_format']['ibeacon'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 1, 1, 1, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['advertising_packet_format']['eddystone_uid'] = \"Disable\";\n break;\n case 1:\n decoded_data['advertising_packet_format']['eddystone_uid'] = \"Enable\";\n break;\n default:\n decoded_data['advertising_packet_format']['eddystone_uid'] = \"Invalid\";\n }\n }\n var val = decode_field(arg, 1, 2, 2, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['advertising_packet_format']['eddystone_tlm'] = \"Disable\";\n break;\n case 1:\n decoded_data['advertising_packet_format']['eddystone_tlm'] = \"Enable\";\n break;\n default:\n decoded_data['advertising_packet_format']['eddystone_tlm'] = \"Invalid\";\n }\n }\n return 1;\n }\n },\n {\n key: [0x5F],\n fn: function (arg) {\n decoded_data['mac_address'] = decode_field(arg, 6, 47, 0, \"hexstring\");\n return 6;\n }\n },\n {\n key: [0x71],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('metadata')) {\n decoded_data['metadata'] = {};\n }\n decoded_data['metadata']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n decoded_data['metadata']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n decoded_data['metadata']['app_ver_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n decoded_data['metadata']['loramac_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n decoded_data['metadata']['loramac_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n decoded_data['metadata']['loramac_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n var val = decode_field(arg, 7, 7, 0, \"unsigned\");\n {\n switch (val) {\n case 0:\n decoded_data['metadata']['loramac_region_id'] = \"EU868\";\n break;\n case 1:\n decoded_data['metadata']['loramac_region_id'] = \"US916\";\n break;\n case 2:\n decoded_data['metadata']['loramac_region_id'] = \"AS923\";\n break;\n case 3:\n decoded_data['metadata']['loramac_region_id'] = \"AU915\";\n break;\n case 4:\n decoded_data['metadata']['loramac_region_id'] = \"IN865\";\n break;\n case 5:\n decoded_data['metadata']['loramac_region_id'] = \"CN470\";\n break;\n case 6:\n decoded_data['metadata']['loramac_region_id'] = \"KR920\";\n break;\n case 7:\n decoded_data['metadata']['loramac_region_id'] = \"RU864\";\n break;\n case 8:\n decoded_data['metadata']['loramac_region_id'] = \"DN915\";\n break;\n default:\n decoded_data['metadata']['loramac_region_id'] = \"Invalid\";\n }\n }\n return 7;\n }\n },\n {\n key: [0x73],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('ble_metadata')) {\n decoded_data['ble_metadata'] = {};\n }\n decoded_data['ble_metadata']['stack_ver_major'] = decode_field(arg, 6, 23, 16, \"unsigned\");\n decoded_data['ble_metadata']['stack_ver_minor'] = decode_field(arg, 6, 15, 8, \"unsigned\");\n decoded_data['ble_metadata']['stack_ver_revision'] = decode_field(arg, 6, 7, 0, \"unsigned\");\n return 6;\n }\n },\n ];\n }\n if (input.fPort === 16) {\n decoder = [\n {\n key: [0x0D, 0x3C],\n fn: function (arg) {\n decoded_data['num_satellites'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n return 1;\n }\n },\n {\n key: [0x0D, 0x64],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('min_max_satellite_snr')) {\n decoded_data['min_max_satellite_snr'] = {};\n }\n decoded_data['min_max_satellite_snr']['avg_satellite_snr'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n return 2;\n }\n },\n {\n key: [0x0D, 0x63],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('min_max_satellite_snr')) {\n decoded_data['min_max_satellite_snr'] = {};\n }\n decoded_data['min_max_satellite_snr']['min_satellite_snr'] = (decode_field(arg, 4, 15, 0, \"signed\") * 0.1).toFixed(1);\n decoded_data['min_max_satellite_snr']['maxi_satellite_snr'] = (decode_field(arg, 4, 31, 16, \"signed\") * 0.1).toFixed(1);\n return 4;\n }\n },\n ];\n }\n if (input.fPort === 25) {\n decoder = [\n {\n key: [0x0A],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('basic_report')) {\n decoded_data['basic_report'] = {};\n }\n var data = [];\n var loop = arg.length / 7;\n for (var i = 0; i < loop; i++) {\n var group = {};\n group['BD_ADDR_0'] = decode_field(arg, 7, 55, 8, \"hexstring\");\n group['RSSI_0'] = decode_field(arg, 7, 7, 0, \"signed\");\n data.push(group);\n arg = arg.slice(7);\n }\n decoded_data['basic_report'] = data;\n return loop * 7;\n }\n },\n {\n key: [0xB0],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('filter_report_0')) {\n decoded_data['filter_report_0'] = {};\n }\n var data = [];\n var loop = arg.length / 4;\n for (var i = 0; i < loop; i++) {\n var group = {};\n group['BD_ADDR_1'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n group['RSSI_1'] = decode_field(arg, 4, 7, 0, \"signed\");\n data.push(group);\n arg = arg.slice(4);\n }\n decoded_data['filter_report_0'] = data;\n return loop * 4;\n }\n },\n {\n key: [0xB1],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('filter_report_1')) {\n decoded_data['filter_report_1'] = {};\n }\n var data = [];\n var loop = arg.length / 4;\n for (var i = 0; i < loop; i++) {\n var group = {};\n group['BD_ADDR_2'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n group['RSSI_2'] = decode_field(arg, 4, 7, 0, \"signed\");\n data.push(group);\n arg = arg.slice(4);\n }\n decoded_data['filter_report_1'] = data;\n return loop * 4;\n }\n },\n {\n key: [0xB2],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('filter_report_2')) {\n decoded_data['filter_report_2'] = {};\n }\n var data = [];\n var loop = arg.length / 4;\n for (var i = 0; i < loop; i++) {\n var group = {};\n group['BD_ADDR_3'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n group['RSSI_3'] = decode_field(arg, 4, 7, 0, \"signed\");\n data.push(group);\n arg = arg.slice(4);\n }\n decoded_data['filter_report_2'] = data;\n return loop * 4;\n }\n },\n {\n key: [0xB3],\n fn: function (arg) {\n if (!decoded_data.hasOwnProperty('filter_report_3')) {\n decoded_data['filter_report_3'] = {};\n }\n var data = [];\n var loop = arg.length / 4;\n for (var i = 0; i < loop; i++) {\n var group = {};\n group['BD_ADDR_4'] = decode_field(arg, 4, 31, 8, \"hexstring\");\n group['RSSI_4'] = decode_field(arg, 4, 7, 0, \"signed\");\n data.push(group);\n arg = arg.slice(4);\n }\n decoded_data['filter_report_3'] = data;\n return loop * 4;\n }\n },\n ];\n }\n if (input.fPort === 199) {\n decoder = [\n {\n key: [],\n fn: function (arg) {\n decoded_data['lora_cloud_communications'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n return 1;\n }\n },\n ];\n }\n if (input.fPort === 192) {\n decoder = [\n {\n key: [0x00],\n fn: function (arg) {\n var data = [];\n var loop = arg.length / 6;\n for (var i = 0; i < loop; i++) {\n var group = {};\n group['mac_addr_only'] = decode_field(arg, 6, 47, 0, \"hexstring\");\n data.push(group);\n arg = arg.slice(6);\n }\n decoded_data = data;\n return loop * 6;\n }\n },\n ];\n }\n if (input.fPort === 197) {\n decoder = [\n {\n key: [0x01],\n fn: function (arg) {\n var data = [];\n var loop = arg.length / 7;\n for (var i = 0; i < loop; i++) {\n var group = {};\n group['rssi'] = decode_field(arg, 7, 55, 48, \"signed\");\n group['mac_addr'] = decode_field(arg, 7, 47, 0, \"hexstring\");\n data.push(group);\n arg = arg.slice(7);\n }\n decoded_data = data;\n return loop * 7;\n }\n },\n ];\n }\n\n try {\n for (var bytes_left = bytes.length; bytes_left > 0;) {\n var found = false;\n for (var i = 0; i < decoder.length; i++) {\n var item = decoder[i];\n var key = item.key;\n var keylen = key.length;\n var header = slice(bytes, 0, keylen);\n if (is_equal(header, key)) { // Header in the data matches to what we expect\n var f = item.fn;\n var consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n bytes_left -= consumed;\n bytes = slice(bytes, consumed, bytes.length);\n found = true;\n break;\n }\n }\n if (!found) {\n errors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n break;\n }\n }\n } catch (error) {\n errors = \"Fatal decoder error\";\n }\n\n function slice(a, f, t) {\n var res = [];\n for (var i = 0; i < t - f; i++) {\n res[i] = a[f + i];\n }\n return res;\n }\n\n // Extracts bits from a byte array\n function extract_bytes(chunk, startBit, endBit) {\n var array = new Array(0);\n var totalBits = startBit - endBit + 1;\n var totalBytes = Math.ceil(totalBits / 8);\n var endBits = 0;\n var startBits = 0;\n for (var i = 0; i < totalBytes; i++) {\n if (totalBits > 8) {\n endBits = endBit;\n startBits = endBits + 7;\n endBit = endBit + 8;\n totalBits -= 8;\n } else {\n endBits = endBit;\n startBits = endBits + totalBits - 1;\n totalBits = 0;\n }\n var endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n var startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n var word = 0x0;\n if (startChunk == endChunk) {\n var endOffset = endBits % 8;\n var startOffset = startBits % 8;\n var mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n word = (chunk[startChunk] >> endOffset) & mask;\n array.unshift(word);\n } else {\n var endChunkEndOffset = endBits % 8;\n var endChunkStartOffset = 7;\n var endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n var endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n var startChunkEndOffset = 0;\n var startChunkStartOffset = startBits % 8;\n var startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n var startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n var startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n word = endChunkWord | startChunkWordShifted;\n array.unshift(word);\n }\n }\n return array;\n }\n\n // Applies data type to a byte array\n function apply_data_type(bytes, data_type) {\n var output = 0;\n if (data_type === \"unsigned\") {\n for (var i = 0; i < bytes.length; ++i) {\n output = (to_uint(output << 8)) | bytes[i];\n }\n return output;\n }\n if (data_type === \"signed\") {\n for (var i = 0; i < bytes.length; ++i) {\n output = (output << 8) | bytes[i];\n }\n // Convert to signed, based on value size\n if (output > Math.pow(2, 8 * bytes.length - 1)) {\n output -= Math.pow(2, 8 * bytes.length);\n }\n return output;\n }\n if (data_type === \"bool\") {\n return !(bytes[0] === 0);\n }\n if (data_type === \"hexstring\") {\n return toHexString(bytes);\n }\n return null; // Incorrect data type\n }\n\n // Decodes bitfield from the given chunk of bytes\n function decode_field(chunk, size, start_bit, end_bit, data_type) {\n var new_chunk = chunk.slice(0, size);\n var chunk_size = new_chunk.length;\n if (start_bit >= chunk_size * 8) {\n return null; // Error: exceeding boundaries of the chunk\n }\n if (start_bit < end_bit) {\n return null; // Error: invalid input\n }\n var array = extract_bytes(new_chunk, start_bit, end_bit);\n return apply_data_type(array, data_type);\n }\n\n // Converts value to unsigned\n function to_uint(x) {\n return x >>> 0;\n }\n\n // Checks if two arrays are equal\n function is_equal(arr1, arr2) {\n if (arr1.length != arr2.length) {\n return false;\n }\n for (var i = 0; i != arr1.length; i++) {\n if (arr1[i] != arr2[i]) {\n return false;\n }\n }\n return true;\n }\n\n // Converts array of bytes to hex string\n function toHexString(byteArray) {\n var arr = [];\n for (var i = 0; i < byteArray.length; ++i) {\n arr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n }\n return arr.join(' ');\n }\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n var arr = [];\n for (var i = 0; i < byteArray.length; i++) {\n arr.push(to_uint(byteArray[i]) & 0xff);\n }\n return arr;\n }\n\n var output = {\n \"data\": decoded_data,\n \"errors\": errors,\n \"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 0) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['forced_magnetic'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00, 0xFF],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['battery_voltage'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.01).toFixed(2);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xD3],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rem_batt_capacity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0xBD],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rem_batt_days'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0B, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ambient_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04, 0x68],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['relative_humidity'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0E, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ext_reed_switch_state'] = \"Magnet Present\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['ext_reed_switch_state'] = \"Magnet Absent\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ext_reed_switch_state'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0F, 0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ext_reed_switch_count'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ext_probe_voltage'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ext_probe_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00, 0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Alarm inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Alarm active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['acceleration_alarm'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x07, 0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['xaxis'] = decode_field(arg, 6, 47, 32, \"unsigned\");\n\t\t\t\tdecoded_data['yaxis'] = decode_field(arg, 6, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['zaxis'] = decode_field(arg, 6, 15, 0, \"unsigned\");\n\t\t\t\treturn 6;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 32) {\n\tdecoded_data['tag_entry'] = decode_field(bytes, 2, 15, 0, \"unsigned\");\n\tbytes = bytes.slice(2);\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x03, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tagged_ambient_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04, 0x68],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tagged_relative_humidity'] = (decode_field(arg, 1, 7, 0, \"unsigned\") * 0.5).toFixed(1);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tagged_ext_probe_voltage'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.001).toFixed(3);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02, 0x67],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tagged_ext_probe_temperature'] = (decode_field(arg, 2, 15, 0, \"signed\") * 0.1).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_address'] = decode_field(arg, 4, 31, 0, \"hexstring\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['network_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x0F],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('tagged_telemetry')) {\n\t\t\t\t\tdecoded_data['tagged_telemetry'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 4, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['tagged_telemetry']['rh_tag_status'] = \"Not Tagged\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['tagged_telemetry']['rh_tag_status'] = \"Tagged\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['tagged_telemetry']['rh_tag_status'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['tagged_telemetry']['temp_tag_status'] = \"Not Tagged\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['tagged_telemetry']['temp_tag_status'] = \"Tagged\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['tagged_telemetry']['temp_tag_status'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['tagged_telemetry']['ext_probe_tag_status'] = \"Not Tagged\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['tagged_telemetry']['ext_probe_tag_status'] = \"Tagged\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['tagged_telemetry']['ext_probe_tag_status'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number_rx2'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x19],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['loramac_net_id_msb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x1A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['loramac_net_id_lsb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['seconds_per_core_tick'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_battery'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_ambient_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_relative_humidity'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ticks_per_accelerometer'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x27],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_mcu_temperature'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x28],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['tick_per_external_probe'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('probe_varaint')) {\n\t\t\t\t\tdecoded_data['probe_varaint'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['probe_varaint']['mode'] = \"Digital\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['probe_varaint']['mode'] = \"Analog\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['probe_varaint']['mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['probe_varaint']['falling_edge_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['probe_varaint']['falling_edge_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['probe_varaint']['falling_edge_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['probe_varaint']['rising_edge_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['probe_varaint']['rising_edge_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['probe_varaint']['rising_edge_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2E],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ext_reed_switch_count_threshold'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2F],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ext_reed_switch_tx')) {\n\t\t\t\t\tdecoded_data['ext_reed_switch_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ext_reed_switch_tx']['report_voltage_temperature_enabled'] = decode_field(arg, 1, 4, 4, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 1, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ext_reed_switch_tx']['report_count_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ext_reed_switch_tx']['report_count_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ext_reed_switch_tx']['report_count_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ext_reed_switch_tx']['report_state_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ext_reed_switch_tx']['report_state_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ext_reed_switch_tx']['report_state_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x39],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_relative_humidity_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['temperature_relative_humidity_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3B],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ambient_temperature_threshold')) {\n\t\t\t\t\tdecoded_data['ambient_temperature_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ambient_temperature_threshold']['low_temp'] = (decode_field(arg, 2, 7, 0, \"signed\")).toFixed(1);\n\t\t\t\tdecoded_data['ambient_temperature_threshold']['high_temp'] = (decode_field(arg, 2, 15, 8, \"signed\")).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3C],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ambient_temperature_threshold_enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ambient_temperature_threshold_enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ambient_temperature_threshold_enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3D],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('relative_humidity_threshold')) {\n\t\t\t\t\tdecoded_data['relative_humidity_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['relative_humidity_threshold']['low_humidity'] = (decode_field(arg, 2, 7, 0, \"unsigned\")).toFixed(1);\n\t\t\t\tdecoded_data['relative_humidity_threshold']['high_humidity'] = (decode_field(arg, 2, 15, 8, \"unsigned\")).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3E],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['rh_threshold_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['rh_threshold_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['rh_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x41],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['mcu_temperature_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('mcu_temperature_threshold')) {\n\t\t\t\t\tdecoded_data['mcu_temperature_threshold'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['mcu_temperature_threshold']['high_mcu'] = (decode_field(arg, 2, 7, 0, \"signed\")).toFixed(1);\n\t\t\t\tdecoded_data['mcu_temperature_threshold']['low_mc'] = (decode_field(arg, 2, 15, 8, \"signed\")).toFixed(1);\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['threshold_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['threshold_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x44],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ext_thermistor_sample_period_idle'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x45],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ext_thermistor_sample_period_active'] = decode_field(arg, 4, 31, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x46],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('ext_thermistor')) {\n\t\t\t\t\tdecoded_data['ext_thermistor'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['ext_thermistor']['ext_thermistor_high_threshold'] = decode_field(arg, 4, 31, 16, \"unsigned\");\n\t\t\t\tdecoded_data['ext_thermistor']['ext_thermistor_low_threshold'] = decode_field(arg, 4, 15, 0, \"unsigned\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ext_thermistor_threshold_enable'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ext_thermistor_threshold_enable'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ext_thermistor_threshold_enable'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_major_version'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_minor_version'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_major_version'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_minor_version'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"DN915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","// Do not decode anything, just put it into AS as is\n\n\n\nmodule.exports = { decodeUplink: decodeUplink }\nfunction decodeUplink(input) {\n\n var bytes = convertToUint8Array(input.bytes);\n var port = input.fPort;\n\n var arr = [];\n for (var i = 0; i < bytes.length; ++i) {\n arr.push(bytes[i]);\n }\n\n // Converts value to unsigned\n function to_uint(x) {\n return x >>> 0;\n }\n\n function convertToUint8Array(byteArray) {\n var arr = [];\n for (var i = 0; i < byteArray.length; i++) {\n arr.push(to_uint(byteArray[i]) & 0xff);\n }\n return arr;\n }\n\n return { \"bytes\": JSON.stringify(arr), \n \"port\": port, \n \"payload length\": bytes.length };\n\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 25) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['remaining_battery_capacity'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pulse_rate'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 1, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['er_mode'] = \"Inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['er_mode'] = \"Active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['er_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['SpO2'] = decode_field(arg, 1, 6, 0, \"unsigned\");\n\t\t\t\tdecoded_data['heart_rate_variability'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\tdecoded_data['skin_temperature'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['respiration_rate'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['signal_quality_indicator'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['assistance_required'] = \"Not Requested\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['assistance_required'] = \"Requested\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['assistance_required'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['report_mode'] = \"Normal Reporting Mode\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['report_mode'] = \"Enhanced Reporting Mode\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['report_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 14, 14, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enabled\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['dr_number'] = decode_field(arg, 2, 11, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['rx2_dr_number'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['norm_report_enabled'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['deep_sleep_report_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x61],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['failed_calibration_warning_count'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('pr_limits')) {\n\t\t\t\t\tdecoded_data['pr_limits'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['pr_limits']['high_pr'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['pr_limits']['low_pr'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x35],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('pr_limits_ER')) {\n\t\t\t\t\tdecoded_data['pr_limits_ER'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['pr_limits_ER']['high_pr_ER'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['pr_limits_ER']['low_pr_ER'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x36],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['pr_win_length'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x37],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['pr_stat_function'] = \"Median\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['pr_stat_function'] = \"Minimum\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['pr_stat_function'] = \"Maximum\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['pr_stat_function'] = \"Average\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pr_stat_function'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('SpO2_limits')) {\n\t\t\t\t\tdecoded_data['SpO2_limits'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['SpO2_limits']['high_SpO2'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['SpO2_limits']['low_SpO2'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x42],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['SpO2_win_length'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x43],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['SpO2_stat_function'] = \"Median\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['SpO2_stat_function'] = \"Minimum\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['SpO2_stat_function'] = \"Maximum\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['SpO2_stat_function'] = \"Average\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['SpO2_stat_function'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ST_win_len'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['ST_stat_function'] = \"Median\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['ST_stat_function'] = \"Minimum\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['ST_stat_function'] = \"Maximum\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['ST_stat_function'] = \"Average\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ST_stat_function'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('rr_limits')) {\n\t\t\t\t\tdecoded_data['rr_limits'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['rr_limits']['high_rr'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['rr_limits']['low_rr'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x55],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('rr_limits_ER')) {\n\t\t\t\t\tdecoded_data['rr_limits_ER'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['rr_limits_ER']['high_rr_ER'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['rr_limits_ER']['low_rr_ER'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x56],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rr_win_length'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x57],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['rr_stat_function'] = \"Median\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['rr_stat_function'] = \"Minimum\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['rr_stat_function'] = \"Maximum\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['rr_stat_function'] = \"Average\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['rr_stat_function'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_ver_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['loramac_region'] = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_address'] = decode_field(arg, 4, 31, 0, \"hexstring\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['network_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['normal_report_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['bsm_report_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('parameters')) {\n\t\t\t\t\tdecoded_data['parameters'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['parameters']['time_percentage'] = decode_field(arg, 1, 7, 4, \"unsigned\") * 0.1;\n\t\t\t\tdecoded_data['parameters']['intensity'] = decode_field(arg, 1, 0, 3, \"unsigned\") * 0.1;\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('fw_ver')) {\n\t\t\t\t\tdecoded_data['fw_ver'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['fw_ver']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['app_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['loramac_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['loramac_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['loramac_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 12) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['er_mode_config'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['remaining_battery_capacity'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['hr'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['spo2'] = decode_field(arg, 7, 38, 32, \"unsigned\");\n\t\t\t\tdecoded_data['hrvSum'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['hrvCount'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['st'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['rr'] = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_address'] = decode_field(arg, 4, 31, 0, \"hexstring\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['network_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 7, 7, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x19],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['loramac_net_id_msb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x1A],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['loramac_net_id_lsb'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['normal_report_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x21],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ua_report_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x22],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rest_report_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x23],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['metadata_report_period'] = decode_field(arg, 2, 15, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2A],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 1, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['enabled'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['enabled'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['enabled'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2B],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('transition_parameters')) {\n\t\t\t\t\tdecoded_data['transition_parameters'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['transition_parameters']['gamma'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['transition_parameters']['beta'] = decode_field(arg, 2, 7, 4, \"unsigned\");\n\t\t\t\tdecoded_data['transition_parameters']['alpha'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x2C],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['transition_threshold_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x34],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['a0'] = decode_field(arg, 4, 31, 0, \"double\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x35],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['a1'] = decode_field(arg, 4, 31, 0, \"double\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x36],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['a2'] = decode_field(arg, 4, 31, 0, \"double\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x37],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['bt_count_threshold'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x38],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('bt_limits')) {\n\t\t\t\t\tdecoded_data['bt_limits'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['bt_limits']['bt_limits_high'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['bt_limits']['bt_limits_low'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x39],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['bt_ma_len'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3B],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rr_window_size'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3C],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['rr_limits_high'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['rr_limits_low'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3D],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ce_conversion_factor'] = decode_field(arg, 4, 31, 0, \"double\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x3E],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['ce_stat_function'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x40],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('sensitivity')) {\n\t\t\t\t\tdecoded_data['sensitivity'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"1 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"10 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"25 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"50 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"100 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"200 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"400 Hz\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensitivity']['sample_rate'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 1, 5, 4, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"2g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"4g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"8g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"16g\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['sensitivity']['measurement_range'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('parameters')) {\n\t\t\t\t\tdecoded_data['parameters'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['parameters']['time_percentage'] = decode_field(arg, 1, 7, 4, \"unsigned\");\n\t\t\t\tdecoded_data['parameters']['intensity'] = decode_field(arg, 1, 0, 3, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x50],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['r_to_r_window_averaging'] = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x51],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['r_to_r_gain'] = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x52],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['r_to_r_peak_averaging_weight_factor'] = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x53],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['r_to_r_peak_threshold_scaling_factor'] = decode_field(arg, 1, 3, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x54],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['r_to_r_minimum_hold_off'] = decode_field(arg, 1, 5, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x55],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['r_to_r_interval_averaging_weight_factor'] = decode_field(arg, 1, 1, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x56],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['r_to_r_interval_hold_off_scaling_factor'] = decode_field(arg, 1, 2, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x57],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['hr_window_size'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x58],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('hr_limits')) {\n\t\t\t\t\tdecoded_data['hr_limits'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['hr_limits']['hr_step_limit_m'] = decode_field(arg, 2, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['hr_limits']['hr_step_limit_s'] = decode_field(arg, 2, 7, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('metadata')) {\n\t\t\t\t\tdecoded_data['metadata'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['metadata']['app_major_version'] = decode_field(arg, 4, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_minor_version'] = decode_field(arg, 4, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['metadata']['app_revision'] = decode_field(arg, 4, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 4, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"CN470\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 8:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"DN915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['metadata']['region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['battery'] = (decode_field(arg, 9, 71, 64, \"unsigned\") * 0.391304348 + 0.608695652).toFixed(2);\n\t\t\t\tdecoded_data['body_temperature'] = (decode_field(arg, 9, 63, 56, \"unsigned\") * 0.05 + 30).toFixed(2);\n\t\t\t\tdecoded_data['respiratory_rate'] = decode_field(arg, 9, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['ua_mode_active'] = decode_field(arg, 9, 47, 47, \"unsigned\");\n\t\t\t\tdecoded_data['rest_mode_status'] = decode_field(arg, 9, 46, 46, \"unsigned\");\n\t\t\t\tdecoded_data['ce'] = decode_field(arg, 9, 43, 40, \"unsigned\");\n\t\t\t\tdecoded_data['csc'] = decode_field(arg, 9, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['af'] = decode_field(arg, 9, 31, 31, \"unsigned\");\n\t\t\t\tdecoded_data['position'] = decode_field(arg, 9, 30, 24, \"unsigned\");\n\t\t\t\tdecoded_data['heart_rate'] = decode_field(arg, 9, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['body_temperature_2'] = decode_field(arg, 9, 15, 8, \"unsigned\");\n\t\t\t\tdecoded_data['af_2'] = decode_field(arg, 9, 7, 0, \"unsigned\");\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) { \n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['device_address'] = decode_field(arg, 4, 31, 0, \"hexstring\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['network_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['app_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['normal_report_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['bsm_report_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('parameters')) {\n\t\t\t\t\tdecoded_data['parameters'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['parameters']['time_percentage'] = decode_field(arg, 1, 7, 4, \"unsigned\") * 0.1;\n\t\t\t\tdecoded_data['parameters']['intensity'] = decode_field(arg, 1, 0, 3, \"unsigned\") * 0.1;\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) { \n\t\t\t\tif(!decoded_data.hasOwnProperty('fw_ver')) {\n\t\t\t\t\tdecoded_data['fw_ver'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['fw_ver']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['app_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['loramac_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['loramac_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['loramac_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 12) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) { \n\t\t\t\tdecoded_data['er_mode_config'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 11) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) { \n\t\t\t\tvar val = decode_field(arg, 9, 71, 64, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['remaining_battery_capacity'] = \"Unavailable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['remaining_battery_capacity'] = val;\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 9, 63, 63, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['reporting_mode'] = \"Normal Reporting Mode\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['reporting_mode'] = \"Enhanced Reporting Mode\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['reporting_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 9, 62, 62, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['battery_saving_mode'] = \"Not in battery saving mode\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['battery_saving_mode'] = \"In battery saving mode\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['battery_saving_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 9, 59, 50, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1023:\n\t\t\t\t\t\tdecoded_data['st1'] = \"Unavailable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['st1'] = (val*0.05).toFixed(2);\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 9, 49, 40, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 1023:\n\t\t\t\t\t\tdecoded_data['st2'] = \"Unavailable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['st2'] = (val*0.05).toFixed(2);\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 9, 39, 32, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['pr'] = \"Unavailable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['pr'] = val;\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 9, 31, 24, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['rr'] = \"Unavailable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['rr'] = val;\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 9, 23, 16, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['ce'] = \"Unavailable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['ce'] = (val*0.05).toFixed(2);\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 9, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['af1'] = \"Activity not detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['af1'] = \"Activity detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['af1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 9, 14, 8, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 127:\n\t\t\t\t\t\tdecoded_data['position'] = \"Unavailable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['position'] = val;\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 9, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 255:\n\t\t\t\t\t\tdecoded_data['af2'] = \"Unavailable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['af2'] = (val*0.01).toFixed(2);\n\t\t\t\t}}\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {decodeUplink:decodeUplink}\nfunction decodeUplink(input){\n\tvar decoded_data = {};\n\tvar decoder = [];\n\tvar errors = [];\n\tvar bytes = convertToUint8Array(input.bytes);\n\tdecoded_data['raw'] = toHexString(bytes).toUpperCase();\n\tdecoded_data['fPort'] = input.fPort;\n\n\tif(input.fPort === 101){\n\t\tdecoder = [\n\t\t\t{\n\t\t\t\tkey: [],\n\t\t\t\tfn: function(arg) {\n\t\t\t\t\tvar size = arg.length;\n\t\t\t\t\tvar invalid_registers = [];\n\t\t\t\t\tvar responses = [];\n\t\t\t\t\twhile(arg.length > 0){\n\t\t\t\t\t\tvar downlink_fcnt = arg[0];\n\t\t\t\t\t\tvar num_invalid_writes = arg[1];\n\t\t\t\t\t\targ = arg.slice(2);\n\t\t\t\t\t\tif(num_invalid_writes > 0) {\n\t\t\t\t\t\t\tfor(var i = 0; i < num_invalid_writes; i++){\n\t\t\t\t\t\t\t\tinvalid_registers.push(\"0x\" + arg[i].toString(16));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targ = arg.slice(num_invalid_writes);\n\t\t\t\t\t\t\tresponses.push(num_invalid_writes + ' Invalid write command(s) from DL:' + downlink_fcnt + ' for register(s): ' + invalid_registers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresponses.push('All write commands from DL:' + downlink_fcnt + 'were successfull');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalid_registers = [];\n\t\t\t\t\t}\n\t\t\t\t\tdecoded_data[\"response\"] = responses;\n\t\t\t\t\treturn size;\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\nif (input.fPort === 100) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [0x00],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['device_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x01],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['app_eui'] = decode_field(arg, 8, 63, 0, \"hexstring\");\n\t\t\t\treturn 8;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x02],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['app_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x03],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['device_address'] = decode_field(arg, 4, 31, 0, \"hexstring\");\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x04],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['network_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x05],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['app_session_key'] = decode_field(arg, 16, 127, 0, \"hexstring\");\n\t\t\t\treturn 16;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x10],\n\t\t\tfn: function(arg) {\n\t\t\t\tvar val = decode_field(arg, 2, 15, 15, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"ABP\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"OTAA\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['join_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x11],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_opts')) {\n\t\t\t\t\tdecoded_data['loramac_opts'] = {};\n\t\t\t\t}\n\t\t\t\tvar val = decode_field(arg, 2, 3, 3, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['adr'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 2, 2, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Disable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Enable\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['duty_cycle'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 1, 1, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Private\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Public\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['sync_word'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tvar val = decode_field(arg, 2, 0, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Unconfirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Confirmed\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['loramac_opts']['confirm_mode'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x13],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_rx2')) {\n\t\t\t\t\tdecoded_data['loramac_rx2'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_rx2']['dr_number'] = decode_field(arg, 5, 7, 0, \"unsigned\");\n\t\t\t\tdecoded_data['loramac_rx2']['frequency'] = decode_field(arg, 5, 39, 8, \"unsigned\");\n\t\t\t\treturn 5;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x12],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('loramac_dr_tx')) {\n\t\t\t\t\tdecoded_data['loramac_dr_tx'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['loramac_dr_tx']['tx_power_number'] = decode_field(arg, 2, 3, 0, \"unsigned\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x20],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['normal_report_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x24],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['bsm_report_period'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x4A],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('parameters')) {\n\t\t\t\t\tdecoded_data['parameters'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['parameters']['time_percentage'] = decode_field(arg, 1, 7, 4, \"unsigned\") * 0.1;\n\t\t\t\tdecoded_data['parameters']['intensity'] = decode_field(arg, 1, 0, 3, \"unsigned\") * 0.1;\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tkey: [0x71],\n\t\t\tfn: function(arg) {\n\t\t\t\tif(!decoded_data.hasOwnProperty('fw_ver')) {\n\t\t\t\t\tdecoded_data['fw_ver'] = {};\n\t\t\t\t}\n\t\t\t\tdecoded_data['fw_ver']['app_ver_major'] = decode_field(arg, 7, 55, 48, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['app_ver_minor'] = decode_field(arg, 7, 47, 40, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['app_revision'] = decode_field(arg, 7, 39, 32, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['loramac_ver_major'] = decode_field(arg, 7, 31, 24, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['loramac_ver_minor'] = decode_field(arg, 7, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['fw_ver']['loramac_ver_revision'] = decode_field(arg, 7, 15, 8, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 7, 7, 0, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"EU868\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"US915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"AS923\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"AU915\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"IN865\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"KR920\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"RU864\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['fw_ver']['lorawan_region'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\treturn 7;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 10) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['remaining_battery_capacity'] = (decode_field(arg, 9, 71, 64, \"unsigned\") * 0.391304348 + 0.608695652).toFixed(2);\n\t\t\t\tdecoded_data['st1'] = (decode_field(arg, 9, 63, 56, \"unsigned\") * 0.05 + 30).toFixed(2);\n\t\t\t\tdecoded_data['rr'] = decode_field(arg, 9, 55, 48, \"unsigned\");\n\t\t\t\tvar val = decode_field(arg, 9, 47, 47, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['er'] = \"Mode inactive\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['er'] = \"Mode active\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['er'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['ce'] = (decode_field(arg, 9, 45, 40, \"unsigned\") * 0.2).toFixed(2);\n\t\t\t\tvar val = decode_field(arg, 9, 31, 31, \"unsigned\");\n\t\t\t\t{switch (val){\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tdecoded_data['af1'] = \"Activity not detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tdecoded_data['af1'] = \"Activity detected\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tdecoded_data['af1'] = \"Invalid\";\n\t\t\t\t}}\n\t\t\t\tdecoded_data['position'] = decode_field(arg, 9, 30, 24, \"unsigned\");\n\t\t\t\tdecoded_data['hr'] = decode_field(arg, 9, 23, 16, \"unsigned\");\n\t\t\t\tdecoded_data['st2'] = (decode_field(arg, 9, 15, 8, \"unsigned\") * 0.05 + 30).toFixed(2);\n\t\t\t\tdecoded_data['af_2'] = (decode_field(arg, 9, 7, 0, \"unsigned\") * 0.01).toFixed(2);\n\t\t\t\treturn 9;\n\t\t\t}\n\t\t},\n\t];\n}\nif (input.fPort === 12) {\n\tdecoder = [\n\t\t{\n\t\t\tkey: [],\n\t\t\tfn: function(arg) {\n\t\t\t\tdecoded_data['er_mode_config'] = decode_field(arg, 1, 7, 0, \"unsigned\");\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t},\n\t];\n}\n\n\ttry {\n\t\tfor (var bytes_left = bytes.length; bytes_left > 0;) {\n\t\t\tvar found = false;\n\t\t\tfor (var i = 0; i < decoder.length; i++) {\n\t\t\t\tvar item = decoder[i];\n\t\t\t\tvar key = item.key;\n\t\t\t\tvar keylen = key.length;\n\t\t\t\tvar header = slice(bytes, 0, keylen);\n\t\t\t\tif (is_equal(header, key)) { // Header in the data matches to what we expect\n\t\t\t\t\tvar f = item.fn;\n\t\t\t\t\tvar consumed = f(slice(bytes, keylen, bytes.length)) + keylen;\n\t\t\t\t\tbytes_left -= consumed;\n\t\t\t\t\tbytes = slice(bytes, consumed, bytes.length);\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!found) {\n\t\t\t\terrors.push(\"Unable to decode header \" + toHexString(header).toUpperCase());\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\terrors = \"Fatal decoder error\";\n\t}\n\n\tfunction slice(a, f, t) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < t - f; i++) {\n\t\t\tres[i] = a[f + i];\n\t\t}\n\t\treturn res;\n\t}\n\n\t// Extracts bits from a byte array\n\tfunction extract_bytes(chunk, startBit, endBit) {\n\t\tvar array = new Array(0);\n\t\tvar totalBits = startBit - endBit + 1;\n\t\tvar totalBytes = Math.ceil(totalBits / 8);\n\t\tvar endBits = 0;\n\t\tvar startBits = 0;\n\t\tfor (var i = 0; i < totalBytes; i++) {\n\t\t\tif(totalBits > 8) {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + 7;\n\t\t\t\tendBit = endBit + 8;\n\t\t\t\ttotalBits -= 8;\n\t\t\t} else {\n\t\t\t\tendBits = endBit;\n\t\t\t\tstartBits = endBits + totalBits - 1;\n\t\t\t\ttotalBits = 0;\n\t\t\t}\n\t\t\tvar endChunk = chunk.length - Math.ceil((endBits + 1) / 8);\n\t\t\tvar startChunk = chunk.length - Math.ceil((startBits + 1) / 8);\n\t\t\tvar word = 0x0;\n\t\t\tif (startChunk == endChunk){\n\t\t\t\tvar endOffset = endBits % 8;\n\t\t\t\tvar startOffset = startBits % 8;\n\t\t\t\tvar mask = 0xFF >> (8 - (startOffset - endOffset + 1));\n\t\t\t\tword = (chunk[startChunk] >> endOffset) & mask;\n\t\t\t\tarray.unshift(word);\n\t\t\t} else {\n\t\t\t\tvar endChunkEndOffset = endBits % 8;\n\t\t\t\tvar endChunkStartOffset = 7;\n\t\t\t\tvar endChunkMask = 0xFF >> (8 - (endChunkStartOffset - endChunkEndOffset + 1));\n\t\t\t\tvar endChunkWord = (chunk[endChunk] >> endChunkEndOffset) & endChunkMask;\n\t\t\t\tvar startChunkEndOffset = 0;\n\t\t\t\tvar startChunkStartOffset = startBits % 8;\n\t\t\t\tvar startChunkMask = 0xFF >> (8 - (startChunkStartOffset - startChunkEndOffset + 1));\n\t\t\t\tvar startChunkWord = (chunk[startChunk] >> startChunkEndOffset) & startChunkMask;\n\t\t\t\tvar startChunkWordShifted = startChunkWord << (endChunkStartOffset - endChunkEndOffset + 1);\n\t\t\t\tword = endChunkWord | startChunkWordShifted;\n\t\t\t\tarray.unshift(word);\n\t\t\t}\n\t\t}\n\t\treturn array;\n\t}\n\n\t// Applies data type to a byte array\n\tfunction apply_data_type(bytes, data_type) {\n\t\tvar output = 0;\n\t\tif (data_type === \"unsigned\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (to_uint(output << 8)) | bytes[i];\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"signed\") {\n\t\t\tfor (var i = 0; i < bytes.length; ++i) {\n\t\t\t\toutput = (output << 8) | bytes[i];\n\t\t\t}\n\t\t\t// Convert to signed, based on value size\n\t\t\tif (output > Math.pow(2, 8 * bytes.length - 1)) {\n\t\t\t\toutput -= Math.pow(2, 8 * bytes.length);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\t\tif (data_type === \"bool\") {\n\t\t\treturn !(bytes[0] === 0);\n\t\t}\n\t\tif (data_type === \"hexstring\") {\n\t\t\treturn toHexString(bytes);\n\t\t}\n\t\treturn null; // Incorrect data type\n\t}\n\n\t// Decodes bitfield from the given chunk of bytes\n\tfunction decode_field(chunk, size, start_bit, end_bit, data_type) {\n\t\tvar new_chunk = chunk.slice(0, size);\n\t\tvar chunk_size = new_chunk.length;\n\t\tif (start_bit >= chunk_size * 8) {\n\t\t\treturn null; // Error: exceeding boundaries of the chunk\n\t\t}\n\t\tif (start_bit < end_bit) {\n\t\t\treturn null; // Error: invalid input\n\t\t}\n\t\tvar array = extract_bytes(new_chunk, start_bit, end_bit);\n\t\treturn apply_data_type(array, data_type);\n\t}\n\n\t// Converts value to unsigned\n\tfunction to_uint(x) {\n\t\treturn x >>> 0;\n\t}\n\n\t// Checks if two arrays are equal\n\tfunction is_equal(arr1, arr2) {\n\t\tif (arr1.length != arr2.length) {\n\t\t\treturn false;\n\t\t}\n\t\tfor (var i = 0; i != arr1.length; i++) {\n\t\t\tif (arr1[i] != arr2[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Converts array of bytes to hex string\n\tfunction toHexString(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; ++i) {\n\t\t\tarr.push(('0' + (byteArray[i] & 0xFF).toString(16)).slice(-2));\n\t\t}\n\t\treturn arr.join(' ');\n\t}\n\n // Converts array of bytes to 8 bit array\n function convertToUint8Array(byteArray) {\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < byteArray.length; i++) {\n\t\t\tarr.push(to_uint(byteArray[i]) & 0xff);\n\t\t}\n\t\treturn arr;\n\t}\n\n var output = {\n \"data\": decoded_data,\n\t\t\"errors\": errors,\n\t\t\"warnings\": [],\n };\n\n return output;\n}\n","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor = \n {\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"loramac_join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"loramac_ul_type\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"loramac_default_tx_pwr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_default_dr\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"loramac_rx2_dr\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_rx2_freq\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_net_id_msb\": {\n \"header\": \"0x19\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_net_id_lsb\": {\n \"header\": \"0x1A\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_temp\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_rh\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_co2\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_pressure\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_motion_pir\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"ble_display\": {\n \"ble_display_whitelisting_enabled\": {\n \"header\": \"0x2A\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ble_display_language\": {\n \"header\": \"0x2B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"co2\": {\n \"sampling_parameters\": {\n \"header\": \"0x30\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"co2_sample_period\": {\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"co2_num_subsamples\": {\n \"data_size\": 3,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"threshold_control\": {\n \"header\": \"0x31\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"co2_threshold_level\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"iir_filter_control\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"co2_static_iir_recall_factor\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"co2_dynamic_iir_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"calibration_control\": {\n \"header\": \"0x33\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"co2_calibration_type\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"co2_calibration_period\": {\n \"data_size\": 4,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"co2_calibration_target\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"report_options\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"co2_raw_reported\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"co2_pressure_compensated_reported\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"barometer\": {\n \"pressure_iir_recall_factor\": {\n \"header\": \"0x38\",\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"temperature_humidity\": {\n \"temp_rh_sample_period_idle\": {\n \"header\": \"0x39\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_rh_sample_period_active\": {\n \"header\": \"0x3A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_thresholds\": {\n \"header\": \"0x3B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"temp_threshold_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": 1,\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temp_threshold_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": 1,\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"temp_thresholds_enabled\": {\n \"header\": \"0x3C\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rh_threshold\": {\n \"header\": \"0x3D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rh_threshold_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"rh_threshold_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"rh_thresholds_enabled\": {\n \"header\": \"0x3E\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"battery_management\": {\n \"battery_report_options\": {\n \"header\": \"0x40\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"battery_voltage_reported\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"battery_capacity_sensor_reported\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"battery_capacity_display_reported\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"pir\": {\n \"pir_grace_period\": {\n \"header\": \"0x50\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_threshold_count\": {\n \"header\": \"0x51\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_threshold_period\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mode\": {\n \"header\": \"0x53\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"pir_motion_count_reported\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"pir_motion_state_reported\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"pir_event_based_reporting_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sensor_enable\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"hold_off_intervals\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"post_turn_on_hold_off\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"post_disturbance_hold_off\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"dynamic_reporting_mode\": {\n \"drm_enabled\": {\n \"header\": \"0x66\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"drm_request_update_period\": {\n \"header\": \"0x67\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"active_hours\": {\n \"header\": \"0x68\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"drm_active_start_hr\": {\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"drm_active_end_hr\": {\n \"data_size\": 3,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"drm_active_on_sunday\": {\n \"data_size\": 3,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"drm_active_on_monday\": {\n \"data_size\": 3,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"drm_active_on_tuesday\": {\n \"data_size\": 3,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"drm_active_on_wednesday\": {\n \"data_size\": 3,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"drm_active_on_thursday\": {\n \"data_size\": 3,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"drm_active_on_friday\": {\n \"data_size\": 3,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"drm_active_on_saturday\": {\n \"data_size\": 3,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"seconds_per_core_tick_inactive\": {\n \"header\": \"0x69\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"co2_sampling_parameters\": {\n \"header\": \"0x6A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"co2_sample_period_inactive\": {\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"co2_num_subsample_inactive\": {\n \"data_size\": 3,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"response_to_dl_config\": {\n \"format_options\": {\n \"header\": \"0x6F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"response_format\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"lora_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"configuration_factory_reset\": {\n \"header\": \"0x72\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"timestamp_acquisition\": {\n \"initial_time_rqst_id\": {\n \"header\": \"0xD7 0x00\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 20,\n \"or_80_to_write\": 1\n },\n \"existing_time_rqst_id\": {\n \"header\": \"0xD7 0x01\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 20,\n \"or_80_to_write\": 1\n },\n \"sensor_local_timestamp\": {\n \"header\": \"0x85\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 20,\n \"or_80_to_write\": 1\n },\n \"local_timestamp\": {\n \"header\": \"0xD7\",\n \"data_size\": 5,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 20,\n \"or_80_to_write\": 1\n },\n \"local_timestamp_rqst_id\": {\n \"header\": \"0xD7\",\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 20,\n \"or_80_to_write\": 1\n }\n }\n }\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n \n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n \n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n \n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n \n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n \n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n \n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n \n make_multiple_of_8(bit_arr)\n \n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n \n dv.setFloat64(0, literal, false);\n \n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n \n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n \n }\n \n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n \n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n \n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n \n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n \n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n \n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n \n if (size === undefined) {\n return bytes_arr;\n }\n \n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n \n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n \n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n \n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n \n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n \n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n \n return new_bits;\n }\n \n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n \n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n \n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n \n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n \n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n \n }\n return {status: true, error_code: \"No error\"};\n }\n \n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n \n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n \n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n \n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n \n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n \n var bits_to_write = get_bits(write_value, type);\n \n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n \n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n \n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n \n return current_bits;\n }\n \n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n \n }\n \n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n \n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n \n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n \n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n \n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n \n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n \n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n \n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n \n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n \n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n \n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n \n var value = values[i];\n \n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n \n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n \n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n \n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n \n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n \n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n \n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n \n return {error : message, error_code: error_code};\n }\n \n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n \n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n \n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n \n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n \n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n \n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n \n \n }\n }\n return encoded_data;\n }\n \n return encode(input, sensor);\n }","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor = \n{\n \"general\": {\n \"coordinates\": {\n \"header\": \"0x00 0x88\",\n \"or_80_to_write\": \"\",\n \"port\": 10,\n \"altitude_coords\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.144958496\",\n \"access\": \"-500\",\n \"multiple\": 0\n }\n }\n },\n \"mode\": {\n \"tracker_beacon_mode\": {\n \"header\": \"0x0A\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_geolocation_update_stillness\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_geolocation_update_mobility\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_geolocation_update_emergency\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_accelerometer\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ambient_temperature\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"geolocation_config\": {\n \"geolocation_strategy\": {\n \"header\": \"0x30\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"scan_1\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"scan_2\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"scan_3\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"scan_order_logic\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"lpgnss_diagnostics_tx\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"num_satellites_lpgnss\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"avg_satellite_snr_lpgnss\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"min_max_satellite_snr_lpgnss\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"gnss_config\": {\n \"clock_sync\": {\n \"header\": \"0x33\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"interval\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"invalid_delay_multiplier\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"service\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"almanac_update_request_backoff\": {\n \"header\": \"0x34\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"almanac_update_check_period\": {\n \"header\": \"0x35\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"assist_coordinates_type\": {\n \"header\": \"0x36\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"latitude_gnss\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"gnss_constellation_option\": {\n \"header\": \"0x37\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"gnss_diagnostics_tx\": {\n \"header\": \"0x3A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"num_satellites_gnss\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"avg_satellite_snr_gnss\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fix_type_gnss\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"time_to_fix_gnss\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"log_num_gnss\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acc_and_num_fixes_report_gnss\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"accelerometer\": {\n \"accelerometer_mode\": {\n \"header\": \"0x40\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"poweron\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"zaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"yaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"xaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"accelerometer_sensitivity\": {\n \"header\": \"0x41\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"acceleration_event_threshold_count\": {\n \"header\": \"0x42\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold_period\": {\n \"header\": \"0x43\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold\": {\n \"header\": \"0x44\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_grace_period\": {\n \"header\": \"0x45\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_tx\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"acceleration_assist\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_alarms\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"battery_management\": {\n \"battery_tx\": {\n \"header\": \"0x4A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_capacity_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_lifetime_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"ble\": {\n \"ble_mode\": {\n \"header\": \"0x50\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"averaging_mode\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"num_reported_devices\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_duration\": {\n \"header\": \"0x51\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"periodic\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_interval\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ble_scan_window\": {\n \"header\": \"0x53\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"filter_range_0\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_0\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_0\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_0\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"filter_range_1\": {\n \"header\": \"0x55\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_1\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_1\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_1\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"filter_range_2\": {\n \"header\": \"0x56\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_2\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_2\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_2\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"filter_range_3\": {\n \"header\": \"0x57\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_3\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_3\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_3\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"ble_ad\": {\n \"advertising_enabled\": {\n \"header\": \"0x58\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"min_advertising_interval\": {\n \"header\": \"0x59\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tx_advertising_power\": {\n \"header\": \"0x5B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"advertising_packet_format\": {\n \"header\": \"0x5C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ibeacon\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eddystone_uid\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eddystone_tlm\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mac_address\": {\n \"header\": \"0x5F\",\n \"data_size\": 6,\n \"bit_start\": 47,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n }\n },\n \"temp_config\": {\n \"temp_sample_period_idle\": {\n \"header\": \"0x60\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_sample_period_active\": {\n \"header\": \"0x61\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_threshold_high\": {\n \"header\": \"0x62\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_threshold_low\": {\n \"header\": \"0x62\",\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_thresholds_enabled\": {\n \"header\": \"0x63\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"write_to_flash_loramac_config\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"write_to_flash_app_config\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 0,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_region_id\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"factory_reset\": {\n \"header\": \"0x72\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"factory_reset_config\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"ble_metadata\": {\n \"header\": \"0x73\",\n \"or_80_to_write\": 0,\n \"port\": 100,\n \"stack_ver_major\": {\n \"data_size\": 6,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"stack_ver_minor\": {\n \"data_size\": 6,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"stack_ver_revision\": {\n \"data_size\": 6,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n }\n }\n}\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\nvar sensor = \n{\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"tx_dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"rx2_dr_number\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_net_id_msb\": {\n \"header\": \"0x19\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_net_id_lsb\": {\n \"header\": \"0x1A\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"periodic_tx_config\": {\n \"core\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_temperature\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_relative_humidity\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_digital_input\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_light\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_acceleration\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_mcu_temperature\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_pir\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_external_connector\": {\n \"header\": \"0x29\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"reed_switch\": {\n \"mode\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"read_rising_edge\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"read_falling_edge\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"reed_switch_count_threshold\": {\n \"header\": \"0x2B\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"reed_values_to_transmit\": {\n \"header\": \"0x2C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"external_connector\": {\n \"external_mode\": {\n \"header\": \"0x2D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising_edge\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"analog\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_connector_count_thresh\": {\n \"header\": \"0x2E\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"external_values_to_transmit\": {\n \"header\": \"0x2F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"state\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"accelerometer\": {\n \"impact_alarm_threshold\": {\n \"header\": \"0x30\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold\": {\n \"header\": \"0x31\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"values_to_transmit\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_periodic_alarm_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_periodic_magnitude_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_periodic_vector_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_event_magnitude_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_event_vector_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"event_debounce_time\": {\n \"header\": \"0x33\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"impact_grace_period\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"acceleration_mode\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"impact_alarm_threshold_enable\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"event_threshold_enable\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"x_axis\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"y_axis\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"z_axis\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"power\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"sensitivity\": {\n \"header\": \"0x35\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"alarm_grace_period\": {\n \"header\": \"0x36\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"alarm_event_count\": {\n \"header\": \"0x37\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"alarm_threshold_period\": {\n \"header\": \"0x38\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"temperature_humidity_analogIn\": {\n \"ambient_temp_rh_sample\": {\n \"header\": \"0x39\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"temprh_sample_period_idle\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temprh_sample_period_active\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"temperature_threshold\": {\n \"header\": \"0x3B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"temp_high_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temp_low_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temp_threshold_enable\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"rh_threshold\": {\n \"header\": \"0x3D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rh_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"rh_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"rh_threshold_enable\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mcu_temp_sample\": {\n \"header\": \"0x40\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"mcu_temp_sample_period_idle\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"mcu_temp_sample_period_active\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mcu_temp_threshold\": {\n \"header\": \"0x42\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"mcu_temp_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"mcu_temp_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"mcu_temp_threshold_enable\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"analog_in_sample_period\": {\n \"header\": \"0x44\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"analog_sample_period_idle\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"analog_sample_period_active\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"analog_threshold\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"analog_high\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"analog_low\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"analog_threshold_enable\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"light\": {\n \"light_sample_period\": {\n \"header\": \"0x47\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"light_thresholds\": {\n \"header\": \"0x48\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"light_threshold_enable\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"light_threshold_control\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"light_values_to_transmit\": {\n \"header\": \"0x49\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"light_tx_intensity_reported\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"light_state\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"pir\": {\n \"grace_period\": {\n \"header\": \"0x50\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"count_threshold\": {\n \"header\": \"0x51\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"period_threshold\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_mode\": {\n \"header\": \"0x53\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"pir_enable\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"pir_event_tx\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"pir_motion_state\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"pir_motion_count\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"hold_off_int\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"post_turnon_hold_off\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"post_disturbance_hold_off\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"moisture\": {\n \"sample_period\": {\n \"header\": \"0x5A\",\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"threshold\": {\n \"header\": \"0x5B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"sensor_enable\": {\n \"header\": \"0x5C\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"dry_calibration\": {\n \"header\": \"0x5D\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"enhanced_accelerometer\": {\n \"sample_analysis_mode\": {\n \"header\": \"0x60\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"analysis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"cic_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"hpf_config\": {\n \"header\": \"0x61\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"cutoff_freq\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"hpf_on_sample\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"hpf_on_accel_interrupts\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"hpf_on_accel_output\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"cic_filter_config\": {\n \"header\": \"0x62\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"d\": {\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"r\": {\n \"data_size\": 3,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"m\": {\n \"data_size\": 3,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ml_config\": {\n \"header\": \"0x63\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"nonzero_MLs\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml_upper_limit\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml_lower_limit\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml_step\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ml1_dlim_config\": {\n \"header\": \"0x64\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"num_dlims\": {\n \"data_size\": 14,\n \"bit_start\": 111,\n \"bit_end\": 104,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dlim0_0\": {\n \"data_size\": 14,\n \"bit_start\": 103,\n \"bit_end\": 88,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dlim_step_0\": {\n \"data_size\": 14,\n \"bit_start\": 87,\n \"bit_end\": 72,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"threshold_enable_0\": {\n \"data_size\": 14,\n \"bit_start\": 71,\n \"bit_end\": 64,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE10_threshold\": {\n \"data_size\": 14,\n \"bit_start\": 63,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE11_threshold\": {\n \"data_size\": 14,\n \"bit_start\": 47,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE12_threshold\": {\n \"data_size\": 14,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE13_threshold\": {\n \"data_size\": 14,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ml2_dlim_config\": {\n \"header\": \"0x65\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"num_of_dlims\": {\n \"data_size\": 14,\n \"bit_start\": 111,\n \"bit_end\": 104,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dlim0_1\": {\n \"data_size\": 14,\n \"bit_start\": 103,\n \"bit_end\": 88,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dlim_step_1\": {\n \"data_size\": 14,\n \"bit_start\": 87,\n \"bit_end\": 72,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"threshold_enabled_1\": {\n \"data_size\": 14,\n \"bit_start\": 71,\n \"bit_end\": 64,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE20_threshold\": {\n \"data_size\": 14,\n \"bit_start\": 63,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE21_threshold\": {\n \"data_size\": 14,\n \"bit_start\": 47,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE22_threshold\": {\n \"data_size\": 14,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE23_threshold\": {\n \"data_size\": 14,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"sample_analysis\": {\n \"header\": \"0x68\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"AE_duration_total_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE_duration_min_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE_duration_max_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE_duration_range_Enabled\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE_duration_mean_Enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE_duration_median_Enabled\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE_duration_SD_Enabled\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"AE_duration_count_Enabled\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lora_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"app_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"factory_reset\": {\n \"header\": \"0x72\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"configuration_factory_reset\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n }\n }\n}\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor = \n {\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"loramac_join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dr_number_rx2\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_net_id_msb\": {\n \"header\": \"0x19\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_net_id_lsb\": {\n \"header\": \"0x1A\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_ambient_temperature\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_relative_humidity\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_reed_switch\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_light\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_accelerometer\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_mcu_temperature\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_pir\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_external_connector\": {\n \"header\": \"0x29\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"reed_switch\": {\n \"mode\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising_edge_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"reed_switch_count_threshold\": {\n \"header\": \"0x2B\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"reed_values_to_transmit\": {\n \"header\": \"0x2C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"external_connector\": {\n \"external_mode\": {\n \"header\": \"0x2D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising_edge_enabled_ex\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge_enabled_ex\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"mode\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_connector_count_threshold\": {\n \"header\": \"0x2E\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"external_values_to_transmit\": {\n \"header\": \"0x2F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state_enabled_ex\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count_enabled_ex\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"count_type\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_connector_reset_count\": {\n \"header\": \"0x5A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"accelerometer\": {\n \"impact_event_threshold\": {\n \"header\": \"0x30\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold\": {\n \"header\": \"0x31\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"values_to_transmit\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_periodic_alarm_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_periodic_magnitude_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_periodic_vector_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_event_magnitude_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_event_vector_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"acceleration_impact_grace_period\": {\n \"header\": \"0x33\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_mode\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"impact_threshold_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_threshold_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"xaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"yaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"zaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"poweron\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"sensitivity\": {\n \"header\": \"0x35\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"accelerometer_sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"accelerometer_measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"impact_alarm_grace_period\": {\n \"header\": \"0x36\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"impact_alarm_threshold_count\": {\n \"header\": \"0x37\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"impact_alarm_threshold_period\": {\n \"header\": \"0x38\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"temperature_humidity_analogIn\": {\n \"temperature_relative_humidity_sample_period_idle\": {\n \"header\": \"0x39\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_relative_humidity_sample_period_active\": {\n \"header\": \"0x3A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_threshold\": {\n \"header\": \"0x3B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_temp_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_temp_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ambient_temperature_threshold_enabled\": {\n \"header\": \"0x3C\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rh_threshold\": {\n \"header\": \"0x3D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_rh_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_rh_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"relative_humidity_threshold_enabled\": {\n \"header\": \"0x3E\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_idle\": {\n \"header\": \"0x40\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_active\": {\n \"header\": \"0x41\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temp_threshold\": {\n \"header\": \"0x42\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_mcu_temp_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_mcu_temp_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mcu_temperature_threshold_enabled\": {\n \"header\": \"0x43\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"analog_sample_period_idle\": {\n \"header\": \"0x44\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"analog_sample_period_active\": {\n \"header\": \"0x45\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"analog_threshold\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_analog_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_analog_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"analog_input_threshold_enabled\": {\n \"header\": \"0x4A\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"light\": {\n \"light_sample_period\": {\n \"header\": \"0x47\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"light_thresholds\": {\n \"header\": \"0x48\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"threshold\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"threshold_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"light_values_to_transmit\": {\n \"header\": \"0x49\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"state_reported\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"intensity_reported\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"pir\": {\n \"pir_grace_period\": {\n \"header\": \"0x50\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_threshold\": {\n \"header\": \"0x51\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_threshold_period\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_mode\": {\n \"header\": \"0x53\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"motion_count_reported\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"motion_state_reported\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"event_transmission_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"transducer_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"hold_off_int\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"post_turn_on\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"post_disturbance\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cmd_ctrl\": {\n \"resp_to_dl_command_format\": {\n \"header\": \"0x6F\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lora_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"app_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"configuration_factory_reset\": {\n \"header\": \"0x72\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n }\n }\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n \n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n \n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n \n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n \n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n \n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n \n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n \n make_multiple_of_8(bit_arr)\n \n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n \n dv.setFloat64(0, literal, false);\n \n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n \n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n \n }\n \n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n \n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n \n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n \n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n \n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n \n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n \n if (size === undefined) {\n return bytes_arr;\n }\n \n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n \n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n \n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n \n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n \n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n \n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n \n return new_bits;\n }\n \n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n \n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n \n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n \n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n \n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n \n }\n return {status: true, error_code: \"No error\"};\n }\n \n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n \n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n \n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n \n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n \n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n \n var bits_to_write = get_bits(write_value, type);\n \n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n \n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n \n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n \n return current_bits;\n }\n \n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n \n }\n \n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n \n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n \n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n \n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n \n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n \n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n \n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n \n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n \n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n \n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n \n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n \n var value = values[i];\n \n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n \n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n \n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n \n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n \n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n \n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n \n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n \n return {error : message, error_code: error_code};\n }\n \n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n \n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n \n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n \n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n \n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n \n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); } \n \n \n }\n }\n return encoded_data;\n }\n \n return encode(input, sensor);\n }","module.exports = { encodeDownlink: encodeDownlink }\nfunction encodeDownlink(input) {\n var sensor =\n {\n \"loramac_config\": {\n \"loramac_join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dr_number_rx2\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_ambient_temperature\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_relative_humidity\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_hall_effect\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_ambient_light\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_accelerometer\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_mcu_temperature\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_pir\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_external_connector_a\": {\n \"header\": \"0x29\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_external_connector_b\": {\n \"header\": \"0x55\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"battery_management_config\": {\n \"battery_report_opts\": {\n \"header\": \"0x5C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"battery_voltage_report\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"battery_lifetime_pct_report\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"hall_effect\": {\n \"mode\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising_edge_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"hall_effect_count_threshold\": {\n \"header\": \"0x2B\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"hall_effect_report_opts\": {\n \"header\": \"0x2C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"external_connector\": {\n \"external_a_mode\": {\n \"header\": \"0x2D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising_edge_enabled_ex_a\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge_enabled_ex_a\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"mode_a\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_b_mode\": {\n \"header\": \"0x4D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising_edge_enabled_ex_b\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge_enabled_ex_b\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_connector_a_count_threshold\": {\n \"header\": \"0x2E\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"external_connector_b_count_threshold\": {\n \"header\": \"0x56\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"external_values_to_transmit_a\": {\n \"header\": \"0x2F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state_enabled_ex_a\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count_enabled_ex_a\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"count_type_a\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_values_to_transmit_b\": {\n \"header\": \"0x4F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state_enabled_ex_b\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count_enabled_ex_b\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"count_type_b\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_connector_a_reset_count\": {\n \"header\": \"0x5A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"external_connector_b_reset_count\": {\n \"header\": \"0x5B\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"digital_output_mode\": {\n \"header\": \"0x57\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ssr_state\": {\n \"header\": \"0x58\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ssr_energization_duration\": {\n \"header\": \"0x59\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"temperature_humidity_analogIn\": {\n \"analog_sample_period_idle\": {\n \"header\": \"0x44\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"analog_sample_period_active\": {\n \"header\": \"0x45\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"analog_threshold\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_analog_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_analog_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"analog_input_threshold_enabled\": {\n \"header\": \"0x4A\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_relative_humidity_sample_period_idle\": {\n \"header\": \"0x39\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_relative_humidity_sample_period_active\": {\n \"header\": \"0x3A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_threshold\": {\n \"header\": \"0x3B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_temp_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_temp_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ambient_temperature_threshold_enabled\": {\n \"header\": \"0x3C\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rh_threshold\": {\n \"header\": \"0x3D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_rh_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_rh_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"relative_humidity_threshold_enabled\": {\n \"header\": \"0x3E\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_idle\": {\n \"header\": \"0x40\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_active\": {\n \"header\": \"0x41\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temp_threshold\": {\n \"header\": \"0x42\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_mcu_temp_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_mcu_temp_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mcu_temperature_threshold_enabled\": {\n \"header\": \"0x43\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"pir\": {\n \"pir_grace_period\": {\n \"header\": \"0x50\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_threshold\": {\n \"header\": \"0x51\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_threshold_period\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_mode\": {\n \"header\": \"0x53\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"motion_count_reported\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"motion_state_reported\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"event_transmission_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"transducer_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"hold_off_int\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"post_turn_on\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"post_disturbance\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"accelerometer\": {\n \"acceleration_mode\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"impact_threshold_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_threshold_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_power_mode\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"xaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"yaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"zaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"poweron\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"sensitivity\": {\n \"header\": \"0x35\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"accelerometer_sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"accelerometer_measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"impact_event_threshold\": {\n \"header\": \"0x30\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"values_to_transmit\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_periodic_alarm_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_periodic_magnitude_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_periodic_vector_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_event_magnitude_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_event_vector_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"impact_alarm_grace_period\": {\n \"header\": \"0x36\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"impact_alarm_threshold_count\": {\n \"header\": \"0x37\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"impact_alarm_threshold_period\": {\n \"header\": \"0x38\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold\": {\n \"header\": \"0x31\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_impact_grace_period\": {\n \"header\": \"0x33\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"light\": {\n \"light_sample_period\": {\n \"header\": \"0x47\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"light_thresholds\": {\n \"header\": \"0x48\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"threshold\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"threshold_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"light_values_to_transmit\": {\n \"header\": \"0x49\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"state_reported\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"intensity_reported\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lora_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"app_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 0,\n \"port\": 100,\n \"app_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"configuration_factory_reset\": {\n \"header\": \"0x72\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"resp_to_dl_command_format\": {\n \"header\": \"0x6F\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n }\n };\n function make_multiple_of_8(bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits(bits1, bits2) {\n if (bits1.length === bits2.length) {\n return;\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros(bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift();\n }\n }\n\n function make_copy(bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits(literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if (isFinite(literal)) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal;\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr);\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr); // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1; // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false;\n } else {\n bit_arr[index] = true;\n carry = 0;\n }\n if (!index)\n break;\n index--;\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\" + bits;\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val) {\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\");\n make_multiple_of_8(char_bits);\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = [];\n while (string.length > 0) {\n var splice = string.substring(0, 2);\n string = string.substring(2);\n byte_array.push(parseInt(splice, 16));\n }\n\n for (var k = 0; k < byte_array.length; k++) {\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el) => el !== \"0\");\n make_multiple_of_8(byte_bits);\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask(length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr(bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0;\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1;\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left(bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND(bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT(bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits;\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function (e) {\n return obj[e];\n });\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return { status: false, error_code: 'Tried reading from write-only field' };\n }\n else if (typeof (group_or_field[\"read\"]) == \"object\") {\n return { status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"' };\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return { status: false, error_code: 'Tried writing to read-only field' };\n }\n if (typeof (group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return { status: false, error_code: 'Invalid number of fields in group' };\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return { status: false, error_code: 'Field \"' + fields[i] + '\" does not exist' };\n }\n }\n }\n\n }\n return { status: true, error_code: \"No error\" };\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg;\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return { valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist' };\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return { valid: false, message: msg, error_code: valid[\"error_code\"] };\n }\n }\n }\n return { valid: true, message: \"no message\", error_code: \"no error code\" };\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \");\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80;\n }\n headersInt.push(int);\n }\n return headersInt;\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ((lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\")) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0);\n value = Number(value) / Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size;\n if ((lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined)) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length / 8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"]);\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ((lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\")) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0);\n value = Number(value) / Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if ((lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined)) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length / 8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return { error: message, error_code: error_code };\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof (command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data);\n }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor = \n{\n \"loramac_config\": {\n \"loramac_join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dr_number_rx2\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ambient_temperature\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_relative_humidity\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_hall_effect\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ambient_light\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_accelerometer\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_mcu_temperature\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_pir\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_external_connector_a\": {\n \"header\": \"0x55\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_external_connector_b\": {\n \"header\": \"0x29\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"battery_management_config\": {\n \"battery_report_opts\": {\n \"header\": \"0x5C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"battery_voltage_report\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"battery_lifetime_pct_report\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"hall_effect\": {\n \"mode\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising_edge_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"hall_effect_count_threshold\": {\n \"header\": \"0x2B\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"hall_effect_report_opts\": {\n \"header\": \"0x2C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_count_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"light\": {\n \"light_values_to_transmit\": {\n \"header\": \"0x49\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_intensity_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"light_sample_period\": {\n \"header\": \"0x47\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"light_thresholds\": {\n \"header\": \"0x48\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"threshold\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"external_connector\": {\n \"external_a_mode\": {\n \"header\": \"0x4D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising_edge_enabled_ex_a\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge_enabled_ex_a\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_b_mode\": {\n \"header\": \"0x2D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising_edge_enabled_ex_b\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge_enabled_ex_b\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"connection_mode\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_connector_a_count_threshold\": {\n \"header\": \"0x56\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"external_connector_b_count_threshold\": {\n \"header\": \"0x2E\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"external_values_to_transmit_a\": {\n \"header\": \"0x4F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state_enabled_ex_a\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count_enabled_ex_a\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"count_type_a\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_values_to_transmit_b\": {\n \"header\": \"0x2F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state_enabled_ex_b\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count_enabled_ex_b\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"count_type_b\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_connector_a_reset_count\": {\n \"header\": \"0x5B\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"external_connector_b_reset_count\": {\n \"header\": \"0x5A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"digital_output_mode\": {\n \"header\": \"0x57\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ssr_state\": {\n \"header\": \"0x58\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ssr_energization_duration\": {\n \"header\": \"0x59\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"temperature_humidity_analogIn\": {\n \"analog_sample_period_idle\": {\n \"header\": \"0x44\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"analog_sample_period_active\": {\n \"header\": \"0x45\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"analog_threshold\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_analog_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_analog_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"analog_input_threshold_enabled\": {\n \"header\": \"0x4A\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_rh_sample_period_idle\": {\n \"header\": \"0x39\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_rh_sample_period_active\": {\n \"header\": \"0x3A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_threshold\": {\n \"header\": \"0x3B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"temp_threshold_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temp_threshold_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"temp_thresholds_enabled\": {\n \"header\": \"0x3C\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rh_threshold\": {\n \"header\": \"0x3D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rh_threshold_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"rh_threshold_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"rh_thresholds_enabled\": {\n \"header\": \"0x3E\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_idle\": {\n \"header\": \"0x40\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_active\": {\n \"header\": \"0x41\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temp_threshold\": {\n \"header\": \"0x42\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_mcu_temp_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_mcu_temp_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mcu_temperature_threshold_enabled\": {\n \"header\": \"0x43\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"pir_config\": {\n \"pir_grace_period\": {\n \"header\": \"0x50\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_threshold\": {\n \"header\": \"0x51\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_threshold_period\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_mode\": {\n \"header\": \"0x53\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"motion_count_reported\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"motion_state_reported\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"event_transmission_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"transducer_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"hold_off_int\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"post_turn_on\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"post_disturbance\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"pir_sensitivity\": {\n \"header\": \"0x4E\",\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"fov_object_temp_mode\": {\n \"header\": \"0x3F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"pir_fov_object_temp\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"fov_object_temp_high\": {\n \"header\": \"0x4C\",\n \"data_size\": 3,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"fov_object_temp_low\": {\n \"header\": \"0x4C\",\n \"data_size\": 3,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"fov_object_temp_thresholds_enabled\": {\n \"header\": \"0x4C\",\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 23,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"accelerometer\": {\n \"acceleration_mode\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"impact_threshold_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_threshold_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_power_mode\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"xaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"yaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"zaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"poweron\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"sensitivity\": {\n \"header\": \"0x35\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"accelerometer_sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"accelerometer_measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"impact_event_threshold\": {\n \"header\": \"0x30\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"values_to_transmit\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_periodic_alarm_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_periodic_magnitude_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_periodic_vector_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_event_magnitude_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_event_vector_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"impact_alarm_grace_period\": {\n \"header\": \"0x36\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"impact_alarm_threshold_count\": {\n \"header\": \"0x37\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"impact_alarm_threshold_period\": {\n \"header\": \"0x38\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold\": {\n \"header\": \"0x31\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_debounce_period\": {\n \"header\": \"0x33\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"enhanced_accel\": {\n \"AE2_thresholds\": {\n \"header\": \"0x67\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"threshold_enabled\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 64,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae20_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 63,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae21_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae22_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae23_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"sample_analysis_mode\": {\n \"header\": \"0x60\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"iir_recall_factor\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"analysis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"hpf_mode\": {\n \"header\": \"0x61\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"enabled_on_outputs\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"enabled_on_interrupts\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"enabled_on_sample_analysis\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"cutoff\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"acceleration_event_stop_threshold\": {\n \"header\": \"0x62\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_report_duration_min\": {\n \"header\": \"0x62\",\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ml_config\": {\n \"header\": \"0x63\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"num\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml1upper\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml1lower\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml_step\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ml2_dlim_config\": {\n \"header\": \"0x65\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"num_dims\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dlim0\": {\n \"data_size\": 5,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dlim_step\": {\n \"data_size\": 5,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"AE1_thresholds\": {\n \"header\": \"0x66\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"thresholds_enabled\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 64,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae10_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 63,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae11_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae12_threshold \": {\n \"data_size\": 9,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae13_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"accelerometer_analysis_tx\": {\n \"header\": \"0x68\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"duration_total_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duration_min_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duration_max_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duration_sd_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"count_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cdda_config\": {\n \"pir_init_retries\": {\n \"header\": \"0x6A\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"cdda_event_mode\": {\n \"header\": \"0x6C\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"cdda_critical_event_options\": {\n \"header\": \"0x6D\",\n \"data_size\": 2,\n \"bit_start\": 12,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"cdda_retransmission\": {\n \"header\": \"0x6E\",\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"resp_to_dl_command_format\": {\n \"header\": \"0x6F\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 0,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"modem_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"modem_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"modem_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"configuration_factory_reset\": {\n \"header\": \"0x72\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"resp_to_dl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lora_config\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"app_config\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n }\n }\n}\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor = \n{\n \"loramac_config\": {\n \"loramac_join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dr_number_rx2\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_report_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ambient_temperature\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_relative_humidity\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_hall_effect\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ambient_light\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_accelerometer\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_mcu_temperature\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_pir\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_external_connector_a\": {\n \"header\": \"0x55\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_external_connector_b\": {\n \"header\": \"0x29\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"battery_management_config\": {\n \"battery_report_opts\": {\n \"header\": \"0x5C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"battery_voltage_report\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"battery_lifetime_pct_report\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"hall_effect\": {\n \"hall_effect_mode\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising_edge_enabled_hall\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge_enabled_hall\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"hall_effect_count_threshold\": {\n \"header\": \"0x2B\",\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"hall_effect_report_options\": {\n \"header\": \"0x2C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state_enabled_hall\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count_enabled_hall\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"external_connector\": {\n \"external_a_mode\": {\n \"header\": \"0x4D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising_edge_enabled_ex_a\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge_enabled_ex_a\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_b_mode\": {\n \"header\": \"0x2D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising_edge_enabled_ex_b\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge_enabled_ex_b\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"connection_mode\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_connector_a_count_threshold\": {\n \"header\": \"0x56\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"external_connector_b_count_threshold\": {\n \"header\": \"0x2E\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"external_values_to_transmit_a\": {\n \"header\": \"0x4F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state_enabled_ex_a\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count_enabled_ex_a\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"count_type_a\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_values_to_transmit_b\": {\n \"header\": \"0x2F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state_enabled_ex_b\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count_enabled_ex_b\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"count_type_b\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"external_connector_a_reset_count\": {\n \"header\": \"0x5B\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"external_connector_b_reset_count\": {\n \"header\": \"0x5A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"digital_output_mode\": {\n \"header\": \"0x57\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ssr_state\": {\n \"header\": \"0x58\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ssr_energization_duration\": {\n \"header\": \"0x59\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"analog_config\": {\n \"analog_input_sample_period_idle\": {\n \"header\": \"0x44\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"analog_input_sample_period_active\": {\n \"header\": \"0x45\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"analog_threshold\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_analog_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_analog_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"analog_input_threshold_status\": {\n \"header\": \"0x4A\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"pir_config\": {\n \"pir_grace_period\": {\n \"header\": \"0x50\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_threshold\": {\n \"header\": \"0x51\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_threshold_period\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_mode\": {\n \"header\": \"0x53\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"pir_count_reported\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"pir_state_reported\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"pir_value_reported\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"pir_range\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"pir_presence_flag\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"event_transmission_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"transducer_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"pir_holdoff\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"post_turn_on\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"post_disturbance\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"pir_sensitivity\": {\n \"header\": \"0x4E\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"pir_sens_threshold\": {\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"pir_sens_hysteresis\": {\n \"data_size\": 3,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"pir_init_retries\": {\n \"header\": \"0x6A\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_init_mode\": {\n \"header\": \"0x6B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pir_fov_object_temp\": {\n \"header\": \"0x3F\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"fov_temp_thresholds\": {\n \"header\": \"0x4C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"fov_object_temp_high\": {\n \"data_size\": 3,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fov_object_temp_low\": {\n \"data_size\": 3,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fov_object_temp_thresholds_enabled\": {\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 23,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"accelerometer_config\": {\n \"accelerometer\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"impact_threshold_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_threshold_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_power_mode\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"xaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"yaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"zaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"poweron\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"accelerometer_sensitivityAccelerometer Sensitivity\": {\n \"header\": \"0x35\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"accelerometer_sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"accelerometer_measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"impact_event_threshold\": {\n \"header\": \"0x30\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"values_to_transmit\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_periodic_alarm_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_periodic_magnitude_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_periodic_vector_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_event_magnitude_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_event_vector_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"impact_alarm_grace_period\": {\n \"header\": \"0x36\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"impact_alarm_threshold_count\": {\n \"header\": \"0x37\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"impact_alarm_threshold_period\": {\n \"header\": \"0x38\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold\": {\n \"header\": \"0x31\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_debounce_period\": {\n \"header\": \"0x33\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"temperature_humidity_config\": {\n \"temp_rh_sample_period_idle\": {\n \"header\": \"0x39\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_rh_sample_period_active\": {\n \"header\": \"0x3A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_threshold\": {\n \"header\": \"0x3B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"temp_threshold_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temp_threshold_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"temp_thresholds_enabled\": {\n \"header\": \"0x3C\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rh_threshold\": {\n \"header\": \"0x3D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rh_threshold_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": \"0.5\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"rh_threshold_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": \"0.5\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"rh_thresholds_enabled\": {\n \"header\": \"0x3E\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_idle\": {\n \"header\": \"0x40\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_active\": {\n \"header\": \"0x41\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temp_threshold\": {\n \"header\": \"0x42\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_mcu_temp_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_mcu_temp_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mcu_temperature_threshold_enabled\": {\n \"header\": \"0x43\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"light_config\": {\n \"light_sample_period\": {\n \"header\": \"0x47\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"light_thresholds\": {\n \"header\": \"0x48\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"threshold_light\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"threshold_enabled_light\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"light_values_to_transmit\": {\n \"header\": \"0x49\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_state_enabled_light\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_intensity_enabled_light\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"enhanced_accel_config\": {\n \"sample_analysis_mode\": {\n \"header\": \"0x60\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"iir_recall_factor\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"analysis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"hpf_mode\": {\n \"header\": \"0x61\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"enabled_on_outputs\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"enabled_on_interrupts\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"enabled_on_sample_analysis\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"cutoff\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"acceleration_event_thresholds\": {\n \"header\": \"0x62\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"acceleration_event_stop_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_event_report_duration_min\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ml_config\": {\n \"header\": \"0x63\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"num\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml1upper\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml1lower\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml_step\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ml1_dlim_config\": {\n \"header\": \"0x64\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ml1_num_dims\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml1_dlim0\": {\n \"data_size\": 5,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml1_dlim_step\": {\n \"data_size\": 5,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ml2_dlim_config\": {\n \"header\": \"0x65\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ml2_num_dims\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml2_dlim0\": {\n \"data_size\": 5,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ml2_dlim_step\": {\n \"data_size\": 5,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"AE1_thresholds\": {\n \"header\": \"0x66\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ae1_thresholds_enabled\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 64,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae10_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 63,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae11_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae12_threshold \": {\n \"data_size\": 9,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae13_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"AE2_thresholds\": {\n \"header\": \"0x67\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ae2_thresholds_enabled\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 64,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae20_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 63,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae21_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae22_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ae23_threshold\": {\n \"data_size\": 9,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"accelerometer_analysis_tx\": {\n \"header\": \"0x68\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"duration_total_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duration_min_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duration_max_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duration_sd_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"count_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cdda_config\": {\n \"cdda_event_mode\": {\n \"header\": \"0x6C\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"cdda_critical_event_options\": {\n \"header\": \"0x6D\",\n \"data_size\": 2,\n \"bit_start\": 12,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"cdda_retransmission\": {\n \"header\": \"0x6E\",\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"resp_to_dl\": {\n \"resp_to_dl_command_format\": {\n \"header\": \"0x6F\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lora_config\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"app_config\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 0,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"modem_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"modem_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"modem_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"configuration_factory_reset\": {\n \"header\": \"0x72\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n }\n}\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor =\n{\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"tx_power\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_net_id_msb\": {\n \"header\": \"0x19\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_net_id_lsb\": {\n \"header\": \"0x1A\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"periodic_tx_config\": {\n \"core\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_digital_input\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_temperature\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_humidity\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_input1\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_input2\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_input3\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_mcu_temperature\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_output1\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_output2\": {\n \"header\": \"0x29\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"input1\": {\n \"edge\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"input1_count_threshold\": {\n \"header\": \"0x2B\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"report\": {\n \"header\": \"0x2C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"input_state\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"counter_value\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"sensor_config\": {\n \"input23_sample_period_idle\": {\n \"header\": \"0x30\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"input23_sample_period_active\": {\n \"header\": \"0x31\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"input2_threshold\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"input2_current_high_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 4,\n \"coefficient\": \"0.0001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"input2_current_low_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": 4,\n \"coefficient\": \"0.0001\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"input3_threshold\": {\n \"header\": \"0x33\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"input3_current_high_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": \"0.05\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"input3_current_low_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": \"0.05\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"input23_threshold_enable\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"input2_threshold_enable\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"input3_threshold_enable\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"temperature_relative_humidity_sample_period_idle\": {\n \"header\": \"0x39\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_relative_humidity_sample_period_active\": {\n \"header\": \"0x3A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_threshold\": {\n \"header\": \"0x3B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"temperature_high_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temperature_low_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"temperature_threshold_enable\": {\n \"header\": \"0x3C\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_idle\": {\n \"header\": \"0x40\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_active\": {\n \"header\": \"0x41\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temp_threshold\": {\n \"header\": \"0x42\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"mcu_temperature_high_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"mcu_temperature_low_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mcu_temperature_threshold_enable\": {\n \"header\": \"0x43\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"out1_out2_config\": {\n \"output1_control\": {\n \"header\": \"0x50\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"output1_delay\": {\n \"header\": \"0x51\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"output2_control\": {\n \"header\": \"0x52\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"output2_delay\": {\n \"header\": \"0x53\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"serial_config\": {\n \"serial_interface_type\": {\n \"header\": \"0x60\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"serial_baud_rate\": {\n \"header\": \"0x61\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"serial_parity_bits\": {\n \"header\": \"0x63\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"serial_stop_bits\": {\n \"header\": \"0x64\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"serial_duplex_mode\": {\n \"header\": \"0x65\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"serial_upink_format\": {\n \"header\": \"0x66\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"continuous_serial_receive\": {\n \"header\": \"0x67\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"modbus_rtu_config\": {\n \"serial_interface_symbol_timeout\": {\n \"header\": \"0x68\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"serial_interface_rx_timeout\": {\n \"header\": \"0x69\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"modbus_rtu_polling_command_6A\": {\n \"header\": \"0x6A\",\n \"or_80_to_write\": 1,\n \"port\": 21,\n \"polling_A\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"command_A\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"modbus_rtu_polling_command_6B\": {\n \"header\": \"0x6B\",\n \"or_80_to_write\": 1,\n \"port\": 22,\n \"polling_B\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"command_B\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"modbus_rtu_polling_command_6C\": {\n \"header\": \"0x6C\",\n \"or_80_to_write\": 1,\n \"port\": 23,\n \"polling_C\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"command_C\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"modbus_rtu_polling_command_6D\": {\n \"header\": \"0x6D\",\n \"or_80_to_write\": 1,\n \"port\": 24,\n \"polling_D\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"command_D\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"modbus_rtu_polling_command_6E\": {\n \"header\": \"0x6E\",\n \"or_80_to_write\": 1,\n \"port\": 25,\n \"polling_E\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"command_E\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"modbus_rtu_polling_command_6F\": {\n \"header\": \"0x6F\",\n \"or_80_to_write\": 1,\n \"port\": 26,\n \"polling_F\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"command_F\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"lora_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"factory_reset\": {\n \"header\": \"0x72\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"configuration_factory_reset\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n }\n },\n \"one_wire\": {\n \"thermometer_tick_idle\": {\n \"header\": \"0x73\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"thermometer_tick_active\": {\n \"header\": \"0x74\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"thermometer_periodic_enable_h0\": {\n \"header\": \"0x75\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"thermometer_periodic_enable_h1\": {\n \"header\": \"0x76\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"thermometer_sample_idle\": {\n \"header\": \"0x77\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"thermometer_sample_active\": {\n \"header\": \"0x78\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"thermometer_threshold_high\": {\n \"header\": \"0x79\",\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"thermometer_threshold_low\": {\n \"header\": \"0x79\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"thermometer_threshold_enable_h0\": {\n \"header\": \"0x7A\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"thermometer_threshold_enable_h1\": {\n \"header\": \"0x7B\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"thermometer_resolution\": {\n \"header\": \"0x7C\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n }\n}\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor =\n{\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lora_class\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"tx_power\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_net_id_msb\": {\n \"header\": \"0x19\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_net_id_lsb\": {\n \"header\": \"0x1A\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"periodic_tx_config\": {\n \"core\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_digital_input\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_temperature\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_humidity\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_input1\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_input2\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_input3\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_mcu_temperature\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_output1\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"per_output2\": {\n \"header\": \"0x29\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"input1\": {\n \"edge\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rising\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"input1_count_threshold\": {\n \"header\": \"0x2B\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"report\": {\n \"header\": \"0x2C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"input_state\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"counter_value\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"sensor_config\": {\n \"input23_sample_period_idle\": {\n \"header\": \"0x30\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"input23_sample_period_active\": {\n \"header\": \"0x31\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"input2_threshold\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"input2_current_high_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 4,\n \"coefficient\": \"0.0001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"input2_current_low_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": 4,\n \"coefficient\": \"0.0001\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"input3_threshold\": {\n \"header\": \"0x33\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"input3_current_high_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": \"0.05\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"input3_current_low_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": \"0.05\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"input23_threshold_enable\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"input2_threshold_enable\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"input3_threshold_enable\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"temperature_relative_humidity_sample_period_idle\": {\n \"header\": \"0x39\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_relative_humidity_sample_period_active\": {\n \"header\": \"0x3A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_threshold\": {\n \"header\": \"0x3B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"temperature_high_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temperature_low_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"temperature_threshold_enable\": {\n \"header\": \"0x3C\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_idle\": {\n \"header\": \"0x40\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_active\": {\n \"header\": \"0x41\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temp_threshold\": {\n \"header\": \"0x42\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"mcu_temperature_high_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"mcu_temperature_low_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mcu_temperature_threshold_enable\": {\n \"header\": \"0x43\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"out1_out2_config\": {\n \"output1_control\": {\n \"header\": \"0x50\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"output1_delay\": {\n \"header\": \"0x51\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"output2_control\": {\n \"header\": \"0x52\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"output2_delay\": {\n \"header\": \"0x53\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"serial_config\": {\n \"serial_interface_type\": {\n \"header\": \"0x60\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"serial_baud_rate\": {\n \"header\": \"0x61\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"serial_parity_bits\": {\n \"header\": \"0x63\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"serial_stop_bits\": {\n \"header\": \"0x64\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"serial_duplex_mode\": {\n \"header\": \"0x65\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"serial_upink_format\": {\n \"header\": \"0x66\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"continuous_serial_receive\": {\n \"header\": \"0x67\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"modbus_rtu_config\": {\n \"modbus_rtu_symbol_timeout\": {\n \"header\": \"0x68\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"modbus_rtu_rx_timeout\": {\n \"header\": \"0x69\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"modbus_rtu_polling_command_6A\": {\n \"header\": \"0x6A\",\n \"or_80_to_write\": 1,\n \"port\": 21,\n \"polling_A\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"command_A\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"modbus_rtu_polling_command_6B\": {\n \"header\": \"0x6B\",\n \"or_80_to_write\": 1,\n \"port\": 22,\n \"polling_B\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"command_B\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"modbus_rtu_polling_command_6C\": {\n \"header\": \"0x6C\",\n \"or_80_to_write\": 1,\n \"port\": 23,\n \"polling_C\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"command_C\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"modbus_rtu_polling_command_6D\": {\n \"header\": \"0x6D\",\n \"or_80_to_write\": 1,\n \"port\": 24,\n \"polling_D\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"command_D\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"modbus_rtu_polling_command_6E\": {\n \"header\": \"0x6E\",\n \"or_80_to_write\": 1,\n \"port\": 25,\n \"polling_E\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"command_E\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"modbus_rtu_polling_command_6F\": {\n \"header\": \"0x6F\",\n \"or_80_to_write\": 1,\n \"port\": 26,\n \"polling_F\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"command_F\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"lora_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"factory_reset\": {\n \"header\": \"0x72\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"configuration_factory_reset\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n }\n }\n}\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor = \n {\n \"lorawan\": {\n \"loramac_join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lora_class\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 12,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dr_number_rx2\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_ambient_temperature\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_relative_humidity\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_light\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_input1\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_input2\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_input3\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_input4\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_watermark1\": {\n \"header\": \"0x29\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_watermark2\": {\n \"header\": \"0x2A\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_accelerometer\": {\n \"header\": \"0x2C\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_orientation_alarm\": {\n \"header\": \"0x2D\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_mcu_temperature\": {\n \"header\": \"0x2E\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"RFU_1\": {\n \"header\": \"0x2F\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"threshold\": {\n \"temperature_relative_humidity_idle\": {\n \"header\": \"0x30\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_relative_humidity_active\": {\n \"header\": \"0x31\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_thresholds\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_ambient_temp\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_ambient_temp\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ambient_temperature_threshold_enabled\": {\n \"header\": \"0x33\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rh_threshold\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_rh\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_rh\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"relative_humidity_threshold_enabled\": {\n \"header\": \"0x35\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"input_sample_period_idle\": {\n \"header\": \"0x36\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"input_sample_period_active\": {\n \"header\": \"0x37\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"input1\": {\n \"header\": \"0x38\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_input1\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_input1\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"input2\": {\n \"header\": \"0x39\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_input2\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_input2\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"input3\": {\n \"header\": \"0x3A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_input3\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_input3\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"input4\": {\n \"header\": \"0x3B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_input4\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_input4\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"watermark1\": {\n \"header\": \"0x3C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_watermark1\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_watermark1\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"watermark2\": {\n \"header\": \"0x3D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_watermark2\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_watermark2\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"input_enable\": {\n \"header\": \"0x3F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"input1\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"input2\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"input3\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"input4\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"watermark1_enable\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"watermark2_enable\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mcu_temperature_sample_period_idle\": {\n \"header\": \"0x40\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_sample_period_active\": {\n \"header\": \"0x41\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature\": {\n \"header\": \"0x42\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_mcu_temp\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_mcu_temp\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mcu_temperature_enable\": {\n \"header\": \"0x43\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"input3_thresh\": {\n \"header\": \"0x44\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_input3_onewire\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_input3_onewire\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"input4_thresh\": {\n \"header\": \"0x45\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_input4_onewire\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_input4_onewire\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"light_sensor\": {\n \"ALS_interrupt_enabled\": {\n \"header\": \"0x48\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ALS_upper_threshold\": {\n \"header\": \"0x49\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ALS_lower_threshold\": {\n \"header\": \"0x4A\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"light_sample_period_idle\": {\n \"header\": \"0x4B\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"light_sample_period_active\": {\n \"header\": \"0x4C\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"values_to_report\": {\n \"header\": \"0x4D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"light_alarm_reported\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"light_intensity_reported\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"accelerometer\": {\n \"orientation_alarm_threshold\": {\n \"header\": \"0x50\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"report\": {\n \"header\": \"0x51\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"orientation_vector_report\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"orientation_alarm_report\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mode\": {\n \"header\": \"0x52\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"accelerometer_power_on\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"orientation_alarm_mode\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"battery_management\": {\n \"battery_reports\": {\n \"header\": \"0x61\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_capacity_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_lifetime_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"avg_current_window\": {\n \"header\": \"0x62\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lora_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"app_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"configuration_factory_reset\": {\n \"header\": \"0x72\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n }\n }\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n \n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n \n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n \n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n \n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n \n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n \n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n \n make_multiple_of_8(bit_arr)\n \n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n \n dv.setFloat64(0, literal, false);\n \n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n \n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n \n }\n \n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n \n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n \n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n \n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n \n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n \n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n \n if (size === undefined) {\n return bytes_arr;\n }\n \n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n \n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n \n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n \n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n \n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n \n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n \n return new_bits;\n }\n \n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n \n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n \n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n \n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n \n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n \n }\n return {status: true, error_code: \"No error\"};\n }\n \n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n \n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n \n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n \n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n \n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n \n var bits_to_write = get_bits(write_value, type);\n \n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n \n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n \n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n \n return current_bits;\n }\n \n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n \n }\n \n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n \n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n \n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n \n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n \n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n \n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n \n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n \n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n \n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n \n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n \n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n \n var value = values[i];\n \n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n \n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n \n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n \n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n \n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n \n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n \n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n \n return {error : message, error_code: error_code};\n }\n \n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n \n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n \n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n \n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n \n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n \n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n \n \n }\n }\n return encoded_data;\n }\n \n return encode(input, sensor);\n }","module.exports = {encodeDownlink : encodeDownlink}\n\nfunction encodeDownlink(input) {\n if (\"demo_menu\" in input){\n if (\"custom_screen\" in input.demo_menu){\n return {\n \"110\" : [80]\n }\n } else if (\"text_group\" in input.demo_menu){\n if (\"write\" in input.demo_menu.text_group){\n var type = input.demo_menu.text_group.write.value_type\n if (type === \"\"){\n type = 0\n }\n var text = input.demo_menu.text_group.write.string_text\n var text_length = text.length\n var temp = new Array(text_length)\n for (var i = 0; i < text_length; i++){\n temp[i] = text.charCodeAt(i)\n }\n if (text_length > 255){\n text_length = 255\n }\n return {\n \"102\": [0xC5, 0x01, type, text_length].concat(temp)\n }\n }\n\n } else if (\"icon_group\" in input.demo_menu){\n if (\"write\" in input.demo_menu.icon_group){\n var icontype = input.demo_menu.icon_group.write.icon_type\n if (icontype === \"\"){\n icontype = 0\n }\n var visibility = input.demo_menu.icon_group.write.icon_visibility\n if (visibility === \"\"){\n visibility = 0\n }\n return {\n \"102\": [0xC5, 0x02, icontype, visibility]\n }\n }\n\n }\n\n }\n \n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor = \n {\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": 1,\n \"coefficient\": \"\",\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": 1,\n \"coefficient\": \"\",\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": 1,\n \"coefficient\": \"\",\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": 1,\n \"coefficient\": \"\",\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": 1,\n \"coefficient\": \"\",\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": 1,\n \"coefficient\": \"\",\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"loramac_join_mode\": {\n \"header\": \"0x10\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"loramac_join_mode\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rx2_dr_number\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_gnss_stillness\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_gnss_mobility\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_accelerometer\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ble_default\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ble_stillness\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ble_mobility\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_temperature\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_fsm_state\": {\n \"header\": \"0x29\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"reed_switch_config\": {\n \"reed_switch_tx\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"battery\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_vector\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temperature_tx\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_log\": {\n \"data_size\": 2,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fsm_state_tx\": {\n \"data_size\": 2,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"gnss_rx_config\": {\n \"gnss_enabled\": {\n \"header\": \"0x30\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"speed_threshold\": {\n \"header\": \"0x31\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"stillness\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"mobility\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"gnss_tx\": {\n \"header\": \"0x33\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"utc_tx\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"coordinates\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ground_speed_tx\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"geofence\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"num_satellites_tx\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"avg_satellite_snr_tx\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fix_type_tx\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"log_num_tx\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"geofence0\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"fence_radius_0\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 10,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rlongitude_0\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 6,\n \"coefficient\": \"0.000025\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rlatitude_0\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.0000125\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"geofence1\": {\n \"header\": \"0x35\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"fence_rradius_1\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 10,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rlongitude_1\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 6,\n \"coefficient\": \"0.000025\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rlatitude_1\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.0000125\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"geofence2\": {\n \"header\": \"0x36\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"fence_rradius_2\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 10,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rlongitude_2\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 6,\n \"coefficient\": \"0.000025\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rlatitude_2\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.0000125\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"geofence3\": {\n \"header\": \"0x37\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"fence_rradius_3\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 10,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rlongitude_3\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 6,\n \"coefficient\": \"0.000025\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rlatitude_3\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.0000125\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"accelerometer_config\": {\n \"accelerometer_mode\": {\n \"header\": \"0x40\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"xaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"yaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"zaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"assist_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"poweron\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"accelerometer_sensitivity\": {\n \"header\": \"0x41\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"acceleration_alarm_threshold_count\": {\n \"header\": \"0x42\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_alarm_threshold_period\": {\n \"header\": \"0x43\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_alarm_threshold\": {\n \"header\": \"0x44\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_alarm_grace_period\": {\n \"header\": \"0x45\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_alarm_enabled\": {\n \"header\": \"0x46\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"ble_config\": {\n \"ble_mode\": {\n \"header\": \"0x50\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"num_reported_devices\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"repitition_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_duration\": {\n \"header\": \"0x51\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"periodic\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"event_based\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_interval\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ble_scan_window\": {\n \"header\": \"0x53\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"bd_addr_range0\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lap_end_0\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_0\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"oui_0\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"bd_addr_range1\": {\n \"header\": \"0x55\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lap_end_1\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_1\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"oui_1\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"bd_addr_range2\": {\n \"header\": \"0x56\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lap_end_2\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_2\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"oui_2\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"bd_addr_range3\": {\n \"header\": \"0x57\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lap_end_3\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_3\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"oui_3\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"temp_threshold_config\": {\n \"temperature_sample_period_idle\": {\n \"header\": \"0x60\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_sample_period_active\": {\n \"header\": \"0x61\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_thresholds\": {\n \"header\": \"0x62\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"temp_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temp_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"temperature_thresholds_enabled\": {\n \"header\": \"0x63\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"app_config\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"lora_config\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"loramac_region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"factory_reset\": {\n \"header\": \"0x72\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"configuration_factory_reset\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n }\n },\n \"gnss_log\": {\n \"log_request_utc\": {\n \"header\": \"0x0A\",\n \"or_80_to_write\": \"\",\n \"port\": 15,\n \"year_0a\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 34,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"month_0a\": {\n \"data_size\": 5,\n \"bit_start\": 33,\n \"bit_end\": 30,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"day_0a\": {\n \"data_size\": 5,\n \"bit_start\": 29,\n \"bit_end\": 25,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"hour_0a\": {\n \"data_size\": 5,\n \"bit_start\": 24,\n \"bit_end\": 20,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"minute_0a\": {\n \"data_size\": 5,\n \"bit_start\": 19,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"second_0a\": {\n \"data_size\": 5,\n \"bit_start\": 13,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"number_0a\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"number_0b\": {\n \"header\": \"0x0B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 15,\n \"or_80_to_write\": \"\"\n },\n \"log_utc\": {\n \"header\": \"0x01\",\n \"or_80_to_write\": \"\",\n \"port\": 15,\n \"fragment_number_1\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 56,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"year_1\": {\n \"data_size\": 8,\n \"bit_start\": 55,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"month_1\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"day_1\": {\n \"data_size\": 8,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"hour_1\": {\n \"data_size\": 8,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"minute_1\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"second_1\": {\n \"data_size\": 8,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"log_coordinates\": {\n \"header\": \"0x02\",\n \"or_80_to_write\": \"\",\n \"port\": 15,\n \"fragment_number_2\": {\n \"data_size\": 10,\n \"bit_start\": 79,\n \"bit_end\": 72,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"lattitude_2\": {\n \"data_size\": 10,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.0000125\",\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"longitude_2\": {\n \"data_size\": 10,\n \"bit_start\": 47,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.0000001\",\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"altitude_2\": {\n \"data_size\": 10,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": 1,\n \"coefficient\": \"0.5\",\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"log_all\": {\n \"header\": \"0x03\",\n \"or_80_to_write\": \"\",\n \"port\": 15,\n \"fragment_number_3\": {\n \"data_size\": 17,\n \"bit_start\": 135,\n \"bit_end\": 128,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"year_3\": {\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 112,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"month_3\": {\n \"data_size\": 16,\n \"bit_start\": 111,\n \"bit_end\": 104,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"day_3\": {\n \"data_size\": 16,\n \"bit_start\": 103,\n \"bit_end\": 96,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"hour_3\": {\n \"data_size\": 16,\n \"bit_start\": 95,\n \"bit_end\": 88,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"minute_3\": {\n \"data_size\": 16,\n \"bit_start\": 87,\n \"bit_end\": 80,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"second_3\": {\n \"data_size\": 16,\n \"bit_start\": 79,\n \"bit_end\": 72,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"lattitude_3\": {\n \"data_size\": 16,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": \"0.0000125\",\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"longitude_3\": {\n \"data_size\": 16,\n \"bit_start\": 47,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.0000001\",\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"altitude_3\": {\n \"data_size\": 16,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": 1,\n \"coefficient\": \"0.5\",\n \"access\": \"R\",\n \"multiple\": 1\n }\n }\n }\n }\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n \n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n \n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n \n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n \n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n \n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n \n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n \n make_multiple_of_8(bit_arr)\n \n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n \n dv.setFloat64(0, literal, false);\n \n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n \n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n \n }\n \n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n \n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n \n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n \n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n \n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n \n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n \n if (size === undefined) {\n return bytes_arr;\n }\n \n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n \n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n \n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n \n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n \n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n \n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n \n return new_bits;\n }\n \n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n \n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n \n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n \n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n \n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n \n }\n return {status: true, error_code: \"No error\"};\n }\n \n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n \n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n \n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n \n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n \n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n \n var bits_to_write = get_bits(write_value, type);\n \n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n \n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n \n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n \n return current_bits;\n }\n \n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n \n }\n \n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n \n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n \n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n \n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n \n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n \n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n \n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n \n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n \n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n \n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n \n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n \n var value = values[i];\n \n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n \n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n \n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n \n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n \n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n \n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n \n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n \n return {error : message, error_code: error_code};\n }\n \n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n \n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n \n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n \n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n \n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n \n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n \n \n }\n }\n return encoded_data;\n }\n \n return encode(input, sensor);\n }","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor =\n{\n \"loramac_config\": {\n \"loramac_join_mode\": {\n \"header\": \"0x10\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"loramac_join_mode\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"rx2_dr_number\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_gnss_stillness\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_gnss_mobility\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_accelerometer\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ble_default\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ble_stillness\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ble_mobility\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_mcu_temperature\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_fsm_state\": {\n \"header\": \"0x29\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"reed_switch_config\": {\n \"reed_switch_tx\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"battery\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_vector\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temperature_tx\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_log\": {\n \"data_size\": 2,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fsm_state_tx\": {\n \"data_size\": 2,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"gnss_rx_config\": {\n \"gnss_enabled\": {\n \"header\": \"0x30\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"speed_threshold\": {\n \"header\": \"0x31\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"speed_threshold\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"gnss_diagnostics_tx\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"gnss_num_satellites\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_avg_satellite_snr\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_fix_type\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_time_to_fix\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_log_num\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"gnss_data_tx\": {\n \"header\": \"0x33\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"gnss_utc_tx\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_coordinates\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_ground_speed_tx\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_geofence\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"geofence0\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"fence_rlatitude_0\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.0000125\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rlongitude_0\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 6,\n \"coefficient\": \"0.000025\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_radius_0\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 10,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"geofence1\": {\n \"header\": \"0x35\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"fence_rlatitude_1\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.0000125\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rlongitude_1\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 6,\n \"coefficient\": \"0.000025\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rradius_1\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 10,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"geofence2\": {\n \"header\": \"0x36\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"fence_rlatitude_2\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.0000125\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rlongitude_2\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 6,\n \"coefficient\": \"0.000025\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rradius_2\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 10,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"geofence3\": {\n \"header\": \"0x37\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"fence_rlatitude_3\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.0000125\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rlongitude_3\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 6,\n \"coefficient\": \"0.000025\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fence_rradius_3\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 10,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"accelerometer_config\": {\n \"accelerometer_mode\": {\n \"header\": \"0x40\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"xaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"yaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"zaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"assist_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"poweron\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"accelerometer_sensitivity\": {\n \"header\": \"0x41\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"acceleration_alarm_threshold_count\": {\n \"header\": \"0x42\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_alarm_threshold_period\": {\n \"header\": \"0x43\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_alarm_threshold\": {\n \"header\": \"0x44\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_alarm_grace_period\": {\n \"header\": \"0x45\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_alarm_enabled\": {\n \"header\": \"0x46\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"ble_config\": {\n \"ble_mode\": {\n \"header\": \"0x50\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"num_reported_devices\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"repetition_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_duration\": {\n \"header\": \"0x51\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"periodic\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"event_based\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_interval\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ble_scan_window\": {\n \"header\": \"0x53\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"bd_addr_range0\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lap_end_0\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_0\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"oui_0\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"bd_addr_range1\": {\n \"header\": \"0x55\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lap_end_1\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_1\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"oui_1\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"bd_addr_range2\": {\n \"header\": \"0x56\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lap_end_2\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_2\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"oui_2\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"bd_addr_range3\": {\n \"header\": \"0x57\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lap_end_3\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_3\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"oui_3\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"temp_threshold_config\": {\n \"temperature_sample_period_idle\": {\n \"header\": \"0x60\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_sample_period_active\": {\n \"header\": \"0x61\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_thresholds\": {\n \"header\": \"0x62\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"temp_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temp_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"temperature_thresholds_enabled\": {\n \"header\": \"0x63\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"app_config\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"lora_config\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"loramac_region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"factory_reset\": {\n \"header\": \"0x72\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"configuration_factory_reset\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n }\n }\n}\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor =\n {\n \"loramac_config\": {\n \"join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"loramac_adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_ul_type\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_confirmed\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"loramac_default_dr\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_default_tx_pwr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"loramac_rx2_freq\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_rx2_dr\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_normal_state\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_emergency_state\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_accelerometer\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_temperature\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_safety_status_normal\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_pressure\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"eb_config\": {\n \"eb_active_buzz_config\": {\n \"header\": \"0x28\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"eb_buzz_active_on_time\": {\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eb_buzz_active_off_time\": {\n \"data_size\": 3,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eb_buzz_active_num_on_offs\": {\n \"data_size\": 3,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"eb_inactive_buzz_config\": {\n \"header\": \"0x29\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"eb_buzz_inactive_on_time\": {\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eb_buzz_inactive_off_time\": {\n \"data_size\": 3,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eb_buzz_inactive_num_on_offs\": {\n \"data_size\": 3,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"sh_config\": {\n \"sh_debounce_interval\": {\n \"header\": \"0x2C\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"sh_buzz_config\": {\n \"header\": \"0x2D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"sh_buzz_when_to\": {\n \"data_size\": 5,\n \"bit_start\": 33,\n \"bit_end\": 32,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sh_buzz_on_time\": {\n \"data_size\": 5,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sh_buzz_off_time\": {\n \"data_size\": 5,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sh_buzz_num_on_offs\": {\n \"data_size\": 5,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sh_buzz_period\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"gnss_config\": {\n \"gnss_receiver\": {\n \"header\": \"0x30\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"gnss_report_options\": {\n \"header\": \"0x31\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"gnss_dz_status_report\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_ground_speed_report\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_utc_coordinates_report\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"gnss_dz0\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"gnss_dz0_latitude\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.00001072883606\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_dz0_longitude\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.00002145767212\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_dz0_radius\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": 1,\n \"coefficient\": 10,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"gnss_dz1\": {\n \"header\": \"0x33\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"gnss_dz1_latitude\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.00001072883606\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_dz1_longitude\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.00002145767212\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_dz1_radius\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": 1,\n \"coefficient\": 10,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"gnss_dz2\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"gnss_dz2_latitude\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.00001072883606\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_dz2_longitude\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.00002145767212\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_dz2_radius\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": 1,\n \"coefficient\": 10,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"gnss_dz3\": {\n \"header\": \"0x35\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"gnss_dz3_latitude\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.00001072883606\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_dz3_longitude\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.00002145767212\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"gnss_dz3_radius\": {\n \"data_size\": 8,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": 1,\n \"coefficient\": 10,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"gnss_diagnostics_tx\": {\n \"header\": \"0x36\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"num_of_sats\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"avg_sat_snr\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"reported_fix_type\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"time_to_reported_fix\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fix_log_num\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fix_acc_and_num_fixes_report\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 5,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"emergency_config\": {\n \"emergency_state_trigger\": {\n \"header\": \"0x38\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"emergency_trigger_by_ble_dz\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"emergency_trigger_by_gnss_dz\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"emergency_state_led_config\": {\n \"header\": \"0x39\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"emergency_led_on_time\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": \"0.01\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"emergency_led_off_time\": {\n \"data_size\": 4,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": \"0.01\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"emergency_led_num_on_offs\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"emergency_led_period\": {\n \"data_size\": 4,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"barometer_config\": {\n \"seconds_pressure_sample\": {\n \"header\": \"0x3B\",\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"calibration_reference_pressure\": {\n \"header\": \"0x3C\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pressure_threshold_max\": {\n \"header\": \"0x3D\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pressure_threshold_min\": {\n \"header\": \"0x3D\",\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"accelerometer_config\": {\n \"accelerometer_sensitivity\": {\n \"header\": \"0x41\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"accelerometer_measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"accelerometer_sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"sleep_acceleration_threshold\": {\n \"header\": \"0x42\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"timeout_to_sleep\": {\n \"header\": \"0x43\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"fall_config\": {\n \"free_fall\": {\n \"header\": \"0x48\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"free_fall_acceleration_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"free_fall_acceleration_interval\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"impact\": {\n \"header\": \"0x49\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"impact_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"impact_blackout_duration\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"torpidity\": {\n \"header\": \"0x4A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"torpidity_threshold\": {\n \"data_size\": 3,\n \"bit_start\": 23,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"torpidity_interval\": {\n \"data_size\": 3,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"ble_config\": {\n \"ble_mode\": {\n \"header\": \"0x50\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ble_avg_mode\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_dz_status_report\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_num_reported_devices\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_duration_periodic\": {\n \"header\": \"0x51\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ble_scan_interval\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ble_scan_window\": {\n \"header\": \"0x53\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ble_range0\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ble_range0_bd_addr_oui\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_range0_bd_addr_start\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_range0_bd_addr_end\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_range1\": {\n \"header\": \"0x55\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ble_range1_bd_addr_oui\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_range1_bd_addr_start\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_range1_bd_addr_end\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_range2\": {\n \"header\": \"0x56\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ble_range2_bd_addr_oui\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_range2_bd_addr_start\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_range2_bd_addr_end\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_range3\": {\n \"header\": \"0x57\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ble_range3_bd_addr_oui\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_range3_bd_addr_start\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_range3_bd_addr_end\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_dz0\": {\n \"header\": \"0x58\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ble_dz0_bd_addr\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 8,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_dz0_rssi\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_dz1\": {\n \"header\": \"0x59\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ble_dz1_bd_addr\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 8,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_dz1_rssi\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_dz2\": {\n \"header\": \"0x5A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ble_dz2_bd_addr\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 8,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_dz2_rssi\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_dz3\": {\n \"header\": \"0x5B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ble_dz3_bd_addr\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 8,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_dz3_rssi\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"battery_config\": {\n \"battery_report_options\": {\n \"header\": \"0x68\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"battery_lifetime_dys_report\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"battery_lifetime_pct_report\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"low_battery_threshold\": {\n \"header\": \"0x69\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"low_battery_threshold_type\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_battery_threshold_value\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"low_battery_led_config\": {\n \"header\": \"0x6A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"low_battery_led_on_time\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": \"0.01\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_battery_led_off_time\": {\n \"data_size\": 4,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": \"0.01\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_battery_led_num_on_offs\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_battery_led_period\": {\n \"data_size\": 4,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"general\": {\n \"avg_energy_trend_window\": {\n \"header\": \"0x6B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"buzz_config\": {\n \"buzzer_disable_timeout\": {\n \"header\": \"0x6C\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"resp_config\": {\n \"resp_format\": {\n \"header\": \"0x6F\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"write_to_flash_loramac_config\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"write_to_flash_app_config\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"lorawan_region_id\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"factory_reset_config\": {\n \"header\": \"0x72\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"gnss_diagnostics\": {\n \"num_satellites\": {\n \"header\": \"0x0D 0x3C\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 16,\n \"or_80_to_write\": 1\n },\n \"avg_satellite_snr\": {\n \"header\": \"0x0D 0x64\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"0.1\",\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 16,\n \"or_80_to_write\": 1\n },\n \"fix_type\": {\n \"header\": \"0x0D 0x95\",\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 16,\n \"or_80_to_write\": 1\n },\n \"time_to_fix\": {\n \"header\": \"0x0D 0x96\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 16,\n \"or_80_to_write\": 1\n },\n \"fix_accuracy\": {\n \"header\": \"0x0D 0x97\",\n \"or_80_to_write\": 1,\n \"port\": 16,\n \"gnss_vertical_accuracy\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"gnss_horizontal_accuracy\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 2,\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"ground_speed_accuracy\": {\n \"header\": \"0x0D 0x98\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 16,\n \"or_80_to_write\": 1\n },\n \"num_of_fixes\": {\n \"header\": \"0x0D 0x99\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 16,\n \"or_80_to_write\": 1\n },\n \"log_num\": {\n \"header\": \"0x0D 0x0F\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 16,\n \"or_80_to_write\": 1\n }\n },\n \"gnss_log\": {\n \"log_request_utc_type_a\": {\n \"header\": \"0x0A\",\n \"or_80_to_write\": 1,\n \"port\": 15,\n \"year_0a\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 34,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"month_0a\": {\n \"data_size\": 5,\n \"bit_start\": 33,\n \"bit_end\": 30,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"day_0a\": {\n \"data_size\": 5,\n \"bit_start\": 29,\n \"bit_end\": 25,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"hour_0a\": {\n \"data_size\": 5,\n \"bit_start\": 24,\n \"bit_end\": 20,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"minute_0a\": {\n \"data_size\": 5,\n \"bit_start\": 19,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"second_0a\": {\n \"data_size\": 5,\n \"bit_start\": 13,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"number_0a\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"log_request_utc_type_b\": {\n \"header\": \"0x0B\",\n \"or_80_to_write\": 1,\n \"port\": 15,\n \"number_0b\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"log_utc\": {\n \"header\": \"0x01\",\n \"or_80_to_write\": \"\",\n \"port\": 15,\n \"fragment_number_1\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"year_1\": {\n \"data_size\": 5,\n \"bit_start\": 31,\n \"bit_end\": 26,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"month_1\": {\n \"data_size\": 5,\n \"bit_start\": 25,\n \"bit_end\": 22,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"day_1\": {\n \"data_size\": 5,\n \"bit_start\": 21,\n \"bit_end\": 17,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"hour_1\": {\n \"data_size\": 5,\n \"bit_start\": 16,\n \"bit_end\": 12,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"minute_1\": {\n \"data_size\": 5,\n \"bit_start\": 11,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"second_1\": {\n \"data_size\": 5,\n \"bit_start\": 5,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"log_coordinates\": {\n \"header\": \"0x02\",\n \"or_80_to_write\": \"\",\n \"port\": 15,\n \"fragment_number_2\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 64,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"latitude_2\": {\n \"data_size\": 9,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.00001072883606\",\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"longitude_2\": {\n \"data_size\": 9,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.00002145767212\",\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"altitude_2\": {\n \"data_size\": 9,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": 3,\n \"coefficient\": \"0.144958496\",\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"log_all\": {\n \"header\": \"0x03\",\n \"or_80_to_write\": \"\",\n \"port\": 15,\n \"year_3\": {\n \"data_size\": 12,\n \"bit_start\": 95,\n \"bit_end\": 90,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"month_3\": {\n \"data_size\": 12,\n \"bit_start\": 89,\n \"bit_end\": 86,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"day_3\": {\n \"data_size\": 12,\n \"bit_start\": 85,\n \"bit_end\": 81,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"hour_3\": {\n \"data_size\": 12,\n \"bit_start\": 80,\n \"bit_end\": 76,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"minute_3\": {\n \"data_size\": 12,\n \"bit_start\": 75,\n \"bit_end\": 70,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"second_3\": {\n \"data_size\": 12,\n \"bit_start\": 69,\n \"bit_end\": 64,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"latitude_3\": {\n \"data_size\": 12,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.00001072883606\",\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"longitude_3\": {\n \"data_size\": 12,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": 7,\n \"coefficient\": \"0.00002145767212\",\n \"access\": \"R\",\n \"multiple\": 1\n },\n \"altitude_3\": {\n \"data_size\": 12,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": 3,\n \"coefficient\": \"0.144958496\",\n \"access\": \"R\",\n \"multiple\": 1\n }\n }\n }\n }\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n }","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor =\n {\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n }\n },\n \"mode\": {\n \"tracker_beacon_mode\": {\n \"header\": \"0x0A\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"loramac_join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dr_number_rx2\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_accelerometer\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ble\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_mcu_temperature\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"function_button\": {\n \"report_enable\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"event_type\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ble_report\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temperature_report\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_vector_report\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"battery_voltage_report\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"event1\": {\n \"header\": \"0x2B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"n_value\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"m_value\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"t_value\": {\n \"header\": \"0x2C\",\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"accelerometer\": {\n \"accelerometer_enable\": {\n \"header\": \"0x40\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"poweron\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"zaxis_enable\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"yaxis_enable\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"xaxis_enable\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"sensitivity\": {\n \"header\": \"0x41\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"acceleration_event_threshold_count\": {\n \"header\": \"0x42\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold_period\": {\n \"header\": \"0x43\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold\": {\n \"header\": \"0x44\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_grace_period\": {\n \"header\": \"0x45\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_tx\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ble\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_alarm_tx\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"battery_management\": {\n \"battery_tx\": {\n \"header\": \"0x4A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_voltage_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_capacity_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_lifetime_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"avg_energy_trend_window\": {\n \"header\": \"0x4B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"ble\": {\n \"ble_mode\": {\n \"header\": \"0x50\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"averaging_mode\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"num_reported_devices\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_duration\": {\n \"header\": \"0x51\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"event_based\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"periodic\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_interval\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ble_scan_window\": {\n \"header\": \"0x53\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"whitelist0\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_0\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_0\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_0\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"whitelist1\": {\n \"header\": \"0x55\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_1\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_1\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_1\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"whitelist2\": {\n \"header\": \"0x56\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_2\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_2\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_2\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"whitelist3\": {\n \"header\": \"0x57\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_3\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_3\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_3\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"ble_ad\": {\n \"advertising_enabled\": {\n \"header\": \"0x58\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"min_advertising_interval\": {\n \"header\": \"0x59\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tx_advertising_power\": {\n \"header\": \"0x5B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ad_packet_format\": {\n \"header\": \"0x5C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ibeacon\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eddystone_uid\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eddystone_tlm\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"rfu\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mac_address\": {\n \"header\": \"0x5F\",\n \"data_size\": 6,\n \"bit_start\": 47,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"temperature\": {\n \"temperature_sample_period_idle\": {\n \"header\": \"0x60\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_sample_period_active\": {\n \"header\": \"0x61\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_threshold\": {\n \"header\": \"0x62\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"temperature_thresholds_enabled\": {\n \"header\": \"0x63\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lora_config\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"app_config\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"factory_reset\": {\n \"header\": \"0x72\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"config_factory_reset\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n }\n },\n \"deep_sleep\": {\n \"deep_sleep\": {\n \"header\": \"0x00\",\n \"data_size\": 0,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 99,\n \"or_80_to_write\": 0\n }\n }\n }\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n }\n","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor =\n {\n \"mode\": {\n \"tracker_beacon_mode\": {\n \"header\": \"0x0A\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"loramac_join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dr_number_rx2\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cmd_response_register\": {\n \"command_response_opt\": {\n \"header\": \"0x6F\",\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_accelerometer\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ble\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_mcu_temperature\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"battery_seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"battery_ticks_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"mcu_config_settings\": {\n \"mcu_seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_ticks_per_mcu_temperature\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"fb_mode\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"mcu_event_type\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"mcu_ble_scan\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"mcu_temp\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"mcu_accl_vector\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"mcu_battery_voltage_report\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"battery_management\": {\n \"battery_tx\": {\n \"header\": \"0x4A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_voltage_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_capacity_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_lifetime_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"avg_energy_trend_window\": {\n \"header\": \"0x4B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"function_button\": {\n \"report_enable\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"fb_event_type\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fb_ble_scan\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fb_mcu_temp\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fb_accl_vector\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"fb_battery_report\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"event_type_I\": {\n \"header\": \"0x2B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"n_value\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"m_value\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"fb_event_type2_t_value\": {\n \"header\": \"0x2C\",\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lora_config\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"app_config\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"factory_reset\": {\n \"header\": \"0x72\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"config_factory_reset\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"ble_metadata\": {\n \"header\": \"0x73\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"stack_ver_major\": {\n \"data_size\": 6,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"stack_ver_minor\": {\n \"data_size\": 6,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"stack_ver_revision\": {\n \"data_size\": 6,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"W\",\n \"multiple\": 0\n }\n }\n },\n \"tracker_mode_config\": {\n \"tracker_seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tracker_ticks_per_ble\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"fb_mode\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"tracker_event_type\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tracker_ble_scan\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tracker_temp\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tracker_accl_vector\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tracker_battery_voltage_report\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"acceleration_event_tx\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"accl_assist_ble\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_alarm_tx\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_mode\": {\n \"header\": \"0x50\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"averaging_mode\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"num_reported_devices\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_duration\": {\n \"header\": \"0x51\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"event_based\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"periodic\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_interval\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ble_scan_window\": {\n \"header\": \"0x53\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"whitelist0\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_0\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_0\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_0\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"whitelist1\": {\n \"header\": \"0x55\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_1\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_1\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_1\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"whitelist2\": {\n \"header\": \"0x56\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_2\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_2\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_2\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"whitelist3\": {\n \"header\": \"0x57\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_3\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_3\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_3\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"ble_ad\": {\n \"advertising_enabled\": {\n \"header\": \"0x58\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"min_advertising_interval\": {\n \"header\": \"0x59\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tx_advertising_power\": {\n \"header\": \"0x5B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ad_packet_format\": {\n \"header\": \"0x5C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ibeacon\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eddystone_uid\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eddystone_tlm\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"rfu\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mac_address\": {\n \"header\": \"0x5F\",\n \"data_size\": 6,\n \"bit_start\": 47,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"accelerometer\": {\n \"accelerometer_enable\": {\n \"header\": \"0x40\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"poweron\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"zaxis_enable\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"yaxis_enable\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"xaxis_enable\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"sensitivity\": {\n \"header\": \"0x41\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"accl_vector_registers\": {\n \"accl_seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"accl_ticks_per_accelerometer\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"report_enable\": {\n \"header\": \"0x2A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"accl_event_type\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"accl_ble_scan\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"accl_mcu_temp\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"accl_accl_vector\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"accl_battery_report\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"accl_motion_config\": {\n \"motion_accl_trigger_threshold_count\": {\n \"header\": \"0x42\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"motion_accl_trigger_threshold_period\": {\n \"header\": \"0x43\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"motion_accl_trigger_threshold\": {\n \"header\": \"0x44\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"motion_accl_event_grace_period\": {\n \"header\": \"0x45\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_tx\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"motion_accl_assist_ble\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"motion_accl_alarms\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"accl_assist_config\": {\n \"assist_accl_trigger_threshold_count\": {\n \"header\": \"0x42\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"assist_accl_trigger_threshold_period\": {\n \"header\": \"0x43\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"assist_accl_trigger_threshold\": {\n \"header\": \"0x44\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"assist_accl_event_grace_period\": {\n \"header\": \"0x45\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_tx\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"assist_accl_assist_ble\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"assist_accl_alarms\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n }\n }\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n }\n","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor =\n {\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_opts\": {\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"ambient_report\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ambient_temp\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ambient_rh\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"battery_management\": {\n \"ticks_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"battery_tx\": {\n \"header\": \"0x4A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_capacity_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_lifetime_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"avg_energy_trend_window\": {\n \"header\": \"0x4B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"geolocation_config\": {\n \"ticks_per_geolocation_update_stillness\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_geolocations_update_mobility\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"geolocation_strategy\": {\n \"header\": \"0x30\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"scan_1\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"scan_2\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"scan_3\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"scan_order_logic\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"clock_sync\": {\n \"header\": \"0x33\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"interval\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"invalid_delay_multiplier\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"service\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"almanac__update_request_period\": {\n \"header\": \"0x34\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"almanac_update_check_period\": {\n \"header\": \"0x35\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"assist_coordinates\": {\n \"header\": \"0x36\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"latitude\": {\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"longitude\": {\n \"data_size\": 8,\n \"bit_start\": 39,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"enable\": {\n \"data_size\": 8,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"gnss_constellation_option\": {\n \"header\": \"0x37\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"default_gnss_scan_mode\": {\n \"header\": \"0x38\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"num_satellites\": {\n \"header\": \"0x32\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"avg_satellite_snr\": {\n \"header\": \"0x32\",\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"min_max_satellite_snr\": {\n \"header\": \"0x32\",\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"accelerometer_vector_report_config\": {\n \"ticks_per_accelerometer\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"loramac_write\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"app_write\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"modem_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"modem_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"modem_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"config_factory_reset\": {\n \"header\": \"0x72\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_config\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"loramac_config\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"ble_metadata\": {\n \"header\": \"0x73\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"stack_ver_major\": {\n \"data_size\": 6,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"stack_ver_minor\": {\n \"data_size\": 6,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"stack_ver_revision\": {\n \"data_size\": 6,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n }\n },\n \"general\": {\n \"geolocation_cycle_failed\": {\n \"header\": \"0x00 0x95\",\n \"or_80_to_write\": 1,\n \"port\": 10,\n \"gnss\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"wi_fi\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"ble\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"duty_cycle_drop\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n }\n },\n \"gnss_diagnostics\": {\n \"min\": {\n \"header\": \"0x0D 0x63\",\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 16,\n \"or_80_to_write\": 1\n },\n \"max\": {\n \"header\": \"0x0D 0x63\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 16,\n \"or_80_to_write\": 1\n }\n },\n \"tracker_mode_config\": {\n \"ble_mode\": {\n \"header\": \"0x50\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"averaging_mode\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"num_reported_devices\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_duration\": {\n \"header\": \"0x51\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"periodic\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_interval\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ble_scan_window\": {\n \"header\": \"0x53\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"filter_range_3\": {\n \"header\": \"0x57\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"ble_ad\": {\n \"advertising_enabled\": {\n \"header\": \"0x58\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"min_advertising_interval\": {\n \"header\": \"0x59\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tx_advertising_power\": {\n \"header\": \"0x5B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"advertising_packet_format\": {\n \"header\": \"0x5C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ibeacon\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eddystone_uid\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eddystone_tlm\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mac_address\": {\n \"header\": \"0x5F\",\n \"data_size\": 6,\n \"bit_start\": 47,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"mode\": {\n \"tracker_beacon_mode\": {\n \"header\": \"0x0A\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"accelerometer\": {\n \"accl_mode\": {\n \"header\": \"0x40\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"power_on\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"zaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"yaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"xaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"accl_sensitivity\": {\n \"header\": \"0x41\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"accelerometer_motion_detection\": {\n \"accl_trigger_threshold_count\": {\n \"header\": \"0x42\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"accl_trigger_threshold_period\": {\n \"header\": \"0x43\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"accl_trigger_threshold\": {\n \"header\": \"0x44\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 3,\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"accl_event_grace_period\": {\n \"header\": \"0x45\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_tx\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"accl_assist\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"accl_alarm\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"ambient_envr_threshold\": {\n \"temp_rh_sample_period_idle\": {\n \"header\": \"0x39\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_rh_sample_period_active\": {\n \"header\": \"0x3A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"low_high_temp_thresholds\": {\n \"header\": \"0x3B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"temp_threshold_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temp_threshold_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"temp_thresholds_enabled\": {\n \"header\": \"0X3C\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"low_high_rh_thresholds\": {\n \"header\": \"0x3D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rh_threshold_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"rh_threshold_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"rh_thresholds_enabled\": {\n \"header\": \"0x3E\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"lora_cloud\": {\n \"lora_cloud_communications\": {\n \"header\": \"\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"\",\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 199,\n \"or_80_to_write\": 1\n }\n }\n }\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n }\n","module.exports = { encodeDownlink: encodeDownlink };\nfunction encodeDownlink(input) {\n var sensor =\n {\n \"accelerometer\": {\n \"acceleration_event_tx\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"acceleration_alarm\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_assist\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"accelerometer_mode\": {\n \"header\": \"0x40\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"poweron\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"zaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"yaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"xaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"accelormeter_sensitivity\": {\n \"header\": \"0x41\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"acceleration_event_threshold_count\": {\n \"header\": \"0x42\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold_period\": {\n \"header\": \"0x43\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold\": {\n \"header\": \"0x44\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_grace_period\": {\n \"header\": \"0x45\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"mode\": {\n \"operational_mode\": {\n \"header\": \"0x0A\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_geo_update_stillness\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_geo_update_mobility\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_accelerometer\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ambient_temperature\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ambient_humidity\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"geolocation_config\": {\n \"geolocation_strategy\": {\n \"header\": \"0x30\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"scan_1_geo\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"scan_2_geo\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"scan_3_geo\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"scan_order_logic_geo\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"clock_sync\": {\n \"header\": \"0x33\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"interval_clock_sync\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"invalid_delay_multiplier_clock_sync\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"service_clock_sync\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"gnss_config\": {\n \"gnss_diagnostics_tx\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"num_satellites_gnss\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"avg_satellite_snr_gnss\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"min_maxi_satellite_snr_gnss\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"almanac__update_request_backoff\": {\n \"header\": \"0x34\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"almanac_update_check_period\": {\n \"header\": \"0x35\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"assist_coordinates_type\": {\n \"header\": \"0x36\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"latitude\": {\n \"data_size\": 9,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"longitude\": {\n \"data_size\": 9,\n \"bit_start\": 63,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"enabled\": {\n \"data_size\": 9,\n \"bit_start\": 64,\n \"bit_end\": 64,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"gnss_constellation_option\": {\n \"header\": \"0x37\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"default_gnss_scan_mode\": {\n \"header\": \"0x38\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"temp_rh_config\": {\n \"temp_rh_sample_period_idle\": {\n \"header\": \"0x39\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_rh_sample_period_active\": {\n \"header\": \"0x3A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_threshold_high\": {\n \"header\": \"0x3B\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_threshold_low\": {\n \"header\": \"0x3B\",\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_thresholds_enabled\": {\n \"header\": \"0X3C\",\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rh_threshold_high\": {\n \"header\": \"0x3D\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rh_threshold_low\": {\n \"header\": \"0x3D\",\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rh_thresholds_enabled\": {\n \"header\": \"0x3E\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"battery_management\": {\n \"battery_tx\": {\n \"header\": \"0x4A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_capacity_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_lifetime_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"avg_energy_trend_window\": {\n \"header\": \"0x4B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"ble\": {\n \"ble_mode\": {\n \"header\": \"0x50\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"averaging_mode\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"num_reported_devices\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_duration\": {\n \"header\": \"0x51\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"event_based\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"periodic\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_interval\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ble_scan_window\": {\n \"header\": \"0x53\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"filter_range_0\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_0\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_0\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_0\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"filter_range_1\": {\n \"header\": \"0x55\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_1\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_1\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_1\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"filter_range_2\": {\n \"header\": \"0x56\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_2\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_2\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_2\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"filter_range_3\": {\n \"header\": \"0x57\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_3\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_3\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_3\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"ble_ad\": {\n \"advertising_enabled\": {\n \"header\": \"0x58\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"min_advertising_interval\": {\n \"header\": \"0x59\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tx_advertising_power\": {\n \"header\": \"0x5B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"advertising_packet_format\": {\n \"header\": \"0x5C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ibeacon\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eddystone_uid\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eddystone_tlm\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mac_address\": {\n \"header\": \"0x5F\",\n \"data_size\": 6,\n \"bit_start\": 47,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"write_to_flash_loramac_config\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"write_to_flash_app_config\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_region_id\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"factory_reset\": {\n \"header\": \"0x72\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"factory_reset_config_app\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"factory_reset_config_loramac\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"ble_metadata\": {\n \"header\": \"0x73\",\n \"or_80_to_write\": \"\",\n \"port\": 100,\n \"stack_ver_major\": {\n \"data_size\": 6,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"stack_ver_minor\": {\n \"data_size\": 6,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"stack_ver_revision\": {\n \"data_size\": 6,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n }\n },\n \"lora_cloud\": {\n \"lora_cloud_communications\": {\n \"header\": \"\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 199,\n \"or_80_to_write\": 1\n }\n },\n \"general\": {\n \"mac_addr_only\": {\n \"header\": \"0x00\",\n \"data_size\": 6,\n \"bit_start\": 47,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1,\n \"port\": 192,\n \"or_80_to_write\": 1\n },\n \"rssi\": {\n \"header\": \"0x01\",\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1,\n \"port\": 197,\n \"or_80_to_write\": 1\n },\n \"mac_addr\": {\n \"header\": \"0x01\",\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1,\n \"port\": 197,\n \"or_80_to_write\": 1\n }\n }\n };\n function make_multiple_of_8(bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits(bits1, bits2) {\n if (bits1.length === bits2.length) {\n return;\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros(bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift();\n }\n }\n\n function make_copy(bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits(literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if (isFinite(literal)) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal;\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr);\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr); // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1; // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false;\n } else {\n bit_arr[index] = true;\n carry = 0;\n }\n if (!index)\n break;\n index--;\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\" + bits;\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val) {\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\");\n make_multiple_of_8(char_bits);\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = [];\n while (string.length > 0) {\n var splice = string.substring(0, 2);\n string = string.substring(2);\n byte_array.push(parseInt(splice, 16));\n }\n\n for (var k = 0; k < byte_array.length; k++) {\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el) => el !== \"0\");\n make_multiple_of_8(byte_bits);\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask(length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr(bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0;\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1;\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left(bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND(bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT(bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits;\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function (e) {\n return obj[e];\n });\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return { status: false, error_code: 'Tried reading from write-only field' };\n }\n else if (typeof (group_or_field[\"read\"]) == \"object\") {\n return { status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"' };\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return { status: false, error_code: 'Tried writing to read-only field' };\n }\n if (typeof (group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return { status: false, error_code: 'Invalid number of fields in group' };\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return { status: false, error_code: 'Field \"' + fields[i] + '\" does not exist' };\n }\n }\n }\n\n }\n return { status: true, error_code: \"No error\" };\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg;\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return { valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist' };\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return { valid: false, message: msg, error_code: valid[\"error_code\"] };\n }\n }\n }\n return { valid: true, message: \"no message\", error_code: \"no error code\" };\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \");\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80;\n }\n headersInt.push(int);\n }\n return headersInt;\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ((lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\")) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0);\n value = Number(value) / Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size;\n if ((lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined)) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length / 8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"]);\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ((lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\")) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0);\n value = Number(value) / Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if ((lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined)) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length / 8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return { error: message, error_code: error_code };\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof (command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data);\n }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}\n","module.exports = { encodeDownlink: encodeDownlink };\nfunction encodeDownlink(input) {\n var sensor =\n {\n \"accelerometer\": {\n \"acceleration_event_tx\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"acceleration_alarm\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"acceleration_assist\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"accelerometer_mode\": {\n \"header\": \"0x40\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"poweron\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"zaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"yaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"xaxis_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"accelormeter_sensitivity\": {\n \"header\": \"0x41\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"acceleration_event_threshold_count\": {\n \"header\": \"0x42\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold_period\": {\n \"header\": \"0x43\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_threshold\": {\n \"header\": \"0x44\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"0.001\",\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"acceleration_event_grace_period\": {\n \"header\": \"0x45\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"mode\": {\n \"operational_mode\": {\n \"header\": \"0x0A\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_geo_update_stillness\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_geo_update_mobility\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_accelerometer\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ambient_temperature\": {\n \"header\": \"0x25\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_ambient_humidity\": {\n \"header\": \"0x26\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"geolocation_config\": {\n \"geolocation_strategy\": {\n \"header\": \"0x30\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"scan_1_geo\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"scan_2_geo\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"scan_3_geo\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"scan_order_logic_geo\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"clock_sync\": {\n \"header\": \"0x33\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"interval_clock_sync\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"invalid_delay_multiplier_clock_sync\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"service_clock_sync\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"gnss_config\": {\n \"gnss_diagnostics_tx\": {\n \"header\": \"0x32\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"num_satellites_gnss\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"avg_satellite_snr_gnss\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"min_maxi_satellite_snr_gnss\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 6,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"almanac__update_request_backoff\": {\n \"header\": \"0x34\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"almanac_update_check_period\": {\n \"header\": \"0x35\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"assist_coordinates_type\": {\n \"header\": \"0x36\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"latitude\": {\n \"data_size\": 9,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"longitude\": {\n \"data_size\": 9,\n \"bit_start\": 63,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"enabled\": {\n \"data_size\": 9,\n \"bit_start\": 64,\n \"bit_end\": 64,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"gnss_constellation_option\": {\n \"header\": \"0x37\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"default_gnss_scan_mode\": {\n \"header\": \"0x38\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"temp_rh_config\": {\n \"temp_rh_sample_period_idle\": {\n \"header\": \"0x39\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_rh_sample_period_active\": {\n \"header\": \"0x3A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_threshold_high\": {\n \"header\": \"0x3B\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_threshold_low\": {\n \"header\": \"0x3B\",\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temp_thresholds_enabled\": {\n \"header\": \"0X3C\",\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rh_threshold_high\": {\n \"header\": \"0x3D\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rh_threshold_low\": {\n \"header\": \"0x3D\",\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rh_thresholds_enabled\": {\n \"header\": \"0x3E\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"battery_management\": {\n \"battery_tx\": {\n \"header\": \"0x4A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_capacity_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_lifetime_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"ble\": {\n \"ble_mode\": {\n \"header\": \"0x50\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"averaging_mode\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"num_reported_devices\": {\n \"data_size\": 1,\n \"bit_start\": 6,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_duration\": {\n \"header\": \"0x51\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"event_based\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"periodic\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ble_scan_interval\": {\n \"header\": \"0x52\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ble_scan_window\": {\n \"header\": \"0x53\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"filter_range_0\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_0\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_0\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_0\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"filter_range_1\": {\n \"header\": \"0x55\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_1\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_1\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_1\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"filter_range_2\": {\n \"header\": \"0x56\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_2\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_2\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_2\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"filter_range_3\": {\n \"header\": \"0x57\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"oui_3\": {\n \"data_size\": 9,\n \"bit_start\": 71,\n \"bit_end\": 48,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_start_3\": {\n \"data_size\": 9,\n \"bit_start\": 47,\n \"bit_end\": 24,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"lap_end_3\": {\n \"data_size\": 9,\n \"bit_start\": 23,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"ble_ad\": {\n \"advertising_enabled\": {\n \"header\": \"0x58\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"min_advertising_interval\": {\n \"header\": \"0x59\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tx_advertising_power\": {\n \"header\": \"0x5B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"advertising_packet_format\": {\n \"header\": \"0x5C\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ibeacon\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eddystone_uid\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"eddystone_tlm\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"mac_address\": {\n \"header\": \"0x5F\",\n \"data_size\": 6,\n \"bit_start\": 47,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"write_to_flash_loramac_config\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"write_to_flash_app_config\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_region_id\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"factory_reset\": {\n \"header\": \"0x72\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"factory_reset_config_app\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"factory_reset_config_loramac\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"ble_metadata\": {\n \"header\": \"0x73\",\n \"or_80_to_write\": \"\",\n \"port\": 100,\n \"stack_ver_major\": {\n \"data_size\": 6,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"stack_ver_minor\": {\n \"data_size\": 6,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"stack_ver_revision\": {\n \"data_size\": 6,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n }\n },\n \"lora_cloud\": {\n \"lora_cloud_communications\": {\n \"header\": \"\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 199,\n \"or_80_to_write\": 1\n }\n },\n \"general\": {\n \"mac_addr_only\": {\n \"header\": \"0x00\",\n \"data_size\": 6,\n \"bit_start\": 47,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1,\n \"port\": 192,\n \"or_80_to_write\": 1\n },\n \"rssi\": {\n \"header\": \"0x01\",\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"signed\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1,\n \"port\": 197,\n \"or_80_to_write\": 1\n },\n \"mac_addr\": {\n \"header\": \"0x01\",\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 1,\n \"port\": 197,\n \"or_80_to_write\": 1\n }\n }\n };\n function make_multiple_of_8(bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits(bits1, bits2) {\n if (bits1.length === bits2.length) {\n return;\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros(bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift();\n }\n }\n\n function make_copy(bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits(literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if (isFinite(literal)) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal;\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr);\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr); // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1; // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false;\n } else {\n bit_arr[index] = true;\n carry = 0;\n }\n if (!index)\n break;\n index--;\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\" + bits;\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val) {\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\");\n make_multiple_of_8(char_bits);\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = [];\n while (string.length > 0) {\n var splice = string.substring(0, 2);\n string = string.substring(2);\n byte_array.push(parseInt(splice, 16));\n }\n\n for (var k = 0; k < byte_array.length; k++) {\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el) => el !== \"0\");\n make_multiple_of_8(byte_bits);\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask(length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr(bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0;\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1;\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left(bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND(bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT(bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits;\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function (e) {\n return obj[e];\n });\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return { status: false, error_code: 'Tried reading from write-only field' };\n }\n else if (typeof (group_or_field[\"read\"]) == \"object\") {\n return { status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"' };\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return { status: false, error_code: 'Tried writing to read-only field' };\n }\n if (typeof (group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return { status: false, error_code: 'Invalid number of fields in group' };\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return { status: false, error_code: 'Field \"' + fields[i] + '\" does not exist' };\n }\n }\n }\n\n }\n return { status: true, error_code: \"No error\" };\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg;\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return { valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist' };\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return { valid: false, message: msg, error_code: valid[\"error_code\"] };\n }\n }\n }\n return { valid: true, message: \"no message\", error_code: \"no error code\" };\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \");\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80;\n }\n headersInt.push(int);\n }\n return headersInt;\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ((lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\")) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0);\n value = Number(value) / Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size;\n if ((lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined)) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length / 8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"]);\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ((lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\")) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0);\n value = Number(value) / Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if ((lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined)) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length / 8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return { error: message, error_code: error_code };\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof (command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data);\n }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor = \n {\n \"deep_sleep\": {\n \"deep_sleep\": {\n \"header\": \"0x00\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 99,\n \"or_80_to_write\": 0\n }\n },\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 0\n }\n },\n \"sf_config\": {\n \"tagged_telemetry\": {\n \"header\": \"0x0F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"rh_tag_status\": {\n \"data_size\": 2,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"temp_tag_status\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ext_probe_tag_status\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"loramac_config\": {\n \"loramac_join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"dr_number_rx2\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_net_id_msb\": {\n \"header\": \"0x19\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_net_id_lsb\": {\n \"header\": \"0x1A\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"periodic_tx_config\": {\n \"seconds_per_core_tick\": {\n \"header\": \"0x20\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_battery\": {\n \"header\": \"0x21\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_ambient_temperature\": {\n \"header\": \"0x22\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_relative_humidity\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ticks_per_accelerometer\": {\n \"header\": \"0x24\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_mcu_temperature\": {\n \"header\": \"0x27\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"tick_per_external_probe\": {\n \"header\": \"0x28\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"ext_probe\": {\n \"probe_varaint\": {\n \"header\": \"0x2D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"mode\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"falling_edge_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"rising_edge_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ext_reed_switch_count_threshold\": {\n \"header\": \"0x2E\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ext_reed_switch_tx\": {\n \"header\": \"0x2F\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"report_voltage_temperature_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_count_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"report_state_enabled\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"temperature_humidity\": {\n \"temperature_relative_humidity_sample_period_idle\": {\n \"header\": \"0x39\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"temperature_relative_humidity_sample_period_active\": {\n \"header\": \"0x3A\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ambient_temperature_threshold\": {\n \"header\": \"0x3B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"low_temp\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": 1,\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"high_temp\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": 1,\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ambient_temperature_threshold_enabled\": {\n \"header\": \"0x3C\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"relative_humidity_threshold\": {\n \"header\": \"0x3D\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"low_humidity\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"high_humidity\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": 1,\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"rh_threshold_enable\": {\n \"header\": \"0x3E\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"mcu_temperature\": {\n \"mcu_temperature_sample_period_idle\": {\n \"header\": \"0x41\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"mcu_temperature_threshold\": {\n \"header\": \"0x42\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_mcu\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"signed\",\n \"round\": 1,\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_mc\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"signed\",\n \"round\": 1,\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"threshold_enable\": {\n \"header\": \"0x43\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"thermistor\": {\n \"ext_thermistor_sample_period_idle\": {\n \"header\": \"0x44\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ext_thermistor_sample_period_active\": {\n \"header\": \"0x45\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ext_thermistor\": {\n \"header\": \"0x46\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"ext_thermistor_high_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"ext_thermistor_low_threshold\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"ext_thermistor_threshold_enable\": {\n \"header\": \"0x4A\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"lora_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"app_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_major_version\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_minor_version\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"factory_reset\": {\n \"header\": \"0x72\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"configuration_factory_reset\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n }\n },\n \"fwd_stored_data\": {\n \"single_tag_request\": {\n \"header\": \"none\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 112,\n \"or_80_to_write\": 1\n }\n }\n }\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n \n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n \n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n \n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n \n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n \n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n \n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n \n make_multiple_of_8(bit_arr)\n \n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n \n dv.setFloat64(0, literal, false);\n \n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n \n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n \n }\n \n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n \n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n \n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n \n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n \n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n \n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n \n if (size === undefined) {\n return bytes_arr;\n }\n \n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n \n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n \n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n \n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n \n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n \n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n \n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n \n return new_bits;\n }\n \n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n \n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n \n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n \n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n \n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n \n }\n return {status: true, error_code: \"No error\"};\n }\n \n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n \n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n \n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n \n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n \n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n \n var bits_to_write = get_bits(write_value, type);\n \n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n \n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n \n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n \n return current_bits;\n }\n \n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n \n }\n \n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n \n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n \n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n \n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n \n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n \n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n \n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n \n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n \n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n \n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n \n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n \n var value = values[i];\n \n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n \n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n \n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n \n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n \n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n \n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n \n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n \n return {error : message, error_code: error_code};\n }\n \n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n \n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n \n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n \n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n \n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n \n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n \n \n }\n }\n return encoded_data;\n }\n \n return encode(input, sensor);\n }","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor = \n{\n \"general\": {\n \"acknowledged_warnings\": {\n \"header\": \"0x01\",\n \"or_80_to_write\": 1,\n \"port\": 10,\n \"battery_is_low\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"calibration_failed\": {\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"SpO2_out_of_threshold\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"pr_out_of_threshold\": {\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"rr_out_of_thrsehold\": {\n \"data_size\": 1,\n \"bit_start\": 4,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"report_mode\": {\n \"header\": \"0x00\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 10,\n \"or_80_to_write\": 1\n },\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_config\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"lora_config\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"app_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"loramac_region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"config_factory_reset\": {\n \"header\": \"0x72\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsinged\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac\": {\n \"loramac_join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 2,\n \"bit_start\": 11,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"rx2_dr_number\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_reporting\": {\n \"norm_report_enabled\": {\n \"header\": \"0x20\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"deep_sleep_report_period\": {\n \"header\": \"0x21\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"calibration\": {\n \"failed_calibration_warning_count\": {\n \"header\": \"0x61\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"pulse_rate\": {\n \"pr_limits\": {\n \"header\": \"0x34\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_pr\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_pr\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"pr_limits_ER\": {\n \"header\": \"0x35\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_pr_ER\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_pr_ER\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"pr_win_length\": {\n \"header\": \"0x36\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"pr_stat_function\": {\n \"header\": \"0x37\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"SpO2\": {\n \"SpO2_limits\": {\n \"header\": \"0x40\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_SpO2\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_SpO2\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"SpO2_win_length\": {\n \"header\": \"0x42\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"SpO2_stat_function\": {\n \"header\": \"0x43\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"skin_temperature\": {\n \"ST_win_len\": {\n \"header\": \"0x51\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ST_stat_function\": {\n \"header\": \"0x52\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"respiration_rate\": {\n \"rr_limits\": {\n \"header\": \"0x54\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_rr\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_rr\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"rr_limits_ER\": {\n \"header\": \"0x55\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"high_rr_ER\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"low_rr_ER\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"rr_win_length\": {\n \"header\": \"0x56\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rr_stat_function\": {\n \"header\": \"0x57\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n }\n}\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor =\n{\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"normal_report_period\": {\n \"header\": \"0x20\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"bsm_report_period\": {\n \"header\": \"0x24\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"af_configuration\": {\n \"parameters\": {\n \"header\": \"0x4A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"time_percentage\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"intensity\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"lora_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"fw_ver\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"lorawan_region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"configuration_factory_reset\": {\n \"header\": \"0x72\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n }\n}\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor = \n{\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 7,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"tx_power\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_net_id_msb\": {\n \"header\": \"0x19\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_net_id_lsb\": {\n \"header\": \"0x1A\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"periodic_tx_config\": {\n \"normal_report_period\": {\n \"header\": \"0x20\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ua_report_period\": {\n \"header\": \"0x21\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rest_report_period\": {\n \"header\": \"0x22\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"metadata_report_period\": {\n \"header\": \"0x23\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"rest_mode_configuration\": {\n \"enabled\": {\n \"header\": \"0x2A\",\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"transition_parameters\": {\n \"header\": \"0x2B\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"gamma\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"beta\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"alpha\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"transition_threshold_period\": {\n \"header\": \"0x2C\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"body_temperature_configuration\": {\n \"a0\": {\n \"header\": \"0x34\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"double\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"a1\": {\n \"header\": \"0x35\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"double\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"a2\": {\n \"header\": \"0x36\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"double\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"bt_count_threshold\": {\n \"header\": \"0x37\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"bt_limits\": {\n \"header\": \"0x38\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"bt_limits_high\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"bt_limits_low\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"bt_ma_len\": {\n \"header\": \"0x39\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"respiratory_rate_configuration\": {\n \"rr_window_size\": {\n \"header\": \"0x3B\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rr_limits_high\": {\n \"header\": \"0x3C\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"rr_limits_low\": {\n \"header\": \"0x3C\",\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ce_conversion_factor\": {\n \"header\": \"0x3D\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"double\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"ce_stat_function\": {\n \"header\": \"0x3E\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"accelerometer\": {\n \"sensitivity\": {\n \"header\": \"0x40\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"sample_rate\": {\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"measurement_range\": {\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"af_configuration\": {\n \"parameters\": {\n \"header\": \"0x4A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"time_percentage\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"intensity\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"heart_rate_configuration\": {\n \"r_to_r_window_averaging\": {\n \"header\": \"0x50\",\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"r_to_r_gain\": {\n \"header\": \"0x51\",\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"r_to_r_peak_averaging_weight_factor\": {\n \"header\": \"0x52\",\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"r_to_r_peak_threshold_scaling_factor\": {\n \"header\": \"0x53\",\n \"data_size\": 1,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"r_to_r_minimum_hold_off\": {\n \"header\": \"0x54\",\n \"data_size\": 1,\n \"bit_start\": 5,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"r_to_r_interval_averaging_weight_factor\": {\n \"header\": \"0x55\",\n \"data_size\": 1,\n \"bit_start\": 1,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"r_to_r_interval_hold_off_scaling_factor\": {\n \"header\": \"0x56\",\n \"data_size\": 1,\n \"bit_start\": 2,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"hr_window_size\": {\n \"header\": \"0x57\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"hr_limits\": {\n \"header\": \"0x58\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"hr_step_limit_m\": {\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"hr_step_limit_s\": {\n \"data_size\": 2,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"lora_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"metadata\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_major_version\": {\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_minor_version\": {\n \"data_size\": 4,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_revision\": {\n \"data_size\": 4,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"region\": {\n \"data_size\": 4,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"configuration_factory_reset\": {\n \"header\": \"0x72\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n }\n}\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor = \n{\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"normal_report_period\": {\n \"header\": \"0x20\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"bsm_report_period\": {\n \"header\": \"0x24\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"af_configuration\": {\n \"parameters\": {\n \"header\": \"0x4A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"time_percentage\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"intensity\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"lora_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"fw_ver\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"lorawan_region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"configuration_factory_reset\": {\n \"header\": \"0x72\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n }\n}\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n}\n","module.exports = {encodeDownlink : encodeDownlink}\nfunction encodeDownlink(input) {\n var sensor =\n {\n \"lorawan\": {\n \"device_eui\": {\n \"header\": \"0x00\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_eui\": {\n \"header\": \"0x01\",\n \"data_size\": 8,\n \"bit_start\": 63,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_key\": {\n \"header\": \"0x02\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"device_address\": {\n \"header\": \"0x03\",\n \"data_size\": 4,\n \"bit_start\": 31,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"network_session_key\": {\n \"header\": \"0x04\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"app_session_key\": {\n \"header\": \"0x05\",\n \"data_size\": 16,\n \"bit_start\": 127,\n \"bit_end\": 0,\n \"type\": \"hexstring\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"loramac_config\": {\n \"join_mode\": {\n \"header\": \"0x10\",\n \"data_size\": 2,\n \"bit_start\": 15,\n \"bit_end\": 15,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"loramac_opts\": {\n \"header\": \"0x11\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"adr\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"duty_cycle\": {\n \"data_size\": 2,\n \"bit_start\": 2,\n \"bit_end\": 2,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"sync_word\": {\n \"data_size\": 2,\n \"bit_start\": 1,\n \"bit_end\": 1,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"confirm_mode\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_rx2\": {\n \"header\": \"0x13\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"dr_number\": {\n \"data_size\": 5,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"frequency\": {\n \"data_size\": 5,\n \"bit_start\": 39,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n },\n \"loramac_dr_tx\": {\n \"header\": \"0x12\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"tx_power_number\": {\n \"data_size\": 2,\n \"bit_start\": 3,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"periodic_tx_config\": {\n \"normal_report_period\": {\n \"header\": \"0x20\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n },\n \"bsm_report_period\": {\n \"header\": \"0x24\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"RW\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n },\n \"af_configuration\": {\n \"parameters\": {\n \"header\": \"0x4A\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"time_percentage\": {\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 4,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n },\n \"intensity\": {\n \"data_size\": 1,\n \"bit_start\": 0,\n \"bit_end\": 3,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": \"0.1\",\n \"access\": \"RW\",\n \"multiple\": 0\n }\n }\n },\n \"cmd_ctrl\": {\n \"write_to_flash\": {\n \"header\": \"0x70\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 13,\n \"bit_end\": 13,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"lora_configuration\": {\n \"data_size\": 2,\n \"bit_start\": 14,\n \"bit_end\": 14,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n },\n \"restart_sensor\": {\n \"data_size\": 2,\n \"bit_start\": 0,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0\n }\n },\n \"fw_ver\": {\n \"header\": \"0x71\",\n \"or_80_to_write\": 1,\n \"port\": 100,\n \"app_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 55,\n \"bit_end\": 48,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 47,\n \"bit_end\": 40,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"app_revision\": {\n \"data_size\": 7,\n \"bit_start\": 39,\n \"bit_end\": 32,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_major\": {\n \"data_size\": 7,\n \"bit_start\": 31,\n \"bit_end\": 24,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_minor\": {\n \"data_size\": 7,\n \"bit_start\": 23,\n \"bit_end\": 16,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"loramac_ver_revision\": {\n \"data_size\": 7,\n \"bit_start\": 15,\n \"bit_end\": 8,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n },\n \"lorawan_region\": {\n \"data_size\": 7,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"R\",\n \"multiple\": 0\n }\n },\n \"configuration_factory_reset\": {\n \"header\": \"0x72\",\n \"data_size\": 1,\n \"bit_start\": 7,\n \"bit_end\": 0,\n \"type\": \"unsigned\",\n \"round\": \"\",\n \"coefficient\": 1,\n \"access\": \"W\",\n \"multiple\": 0,\n \"port\": 100,\n \"or_80_to_write\": 1\n }\n }\n }\n function make_multiple_of_8 (bits) {\n // appends 0s to the bits until it's a multiple of 8\n while (bits.length % 8 !== 0) {\n bits.unshift(false);\n }\n }\n\n function make_equal_number_of_bits (bits1, bits2) {\n if (bits1.length === bits2.length) {\n return\n }\n while (bits1.length > bits2.length) {\n bits2.unshift(false);\n }\n while (bits2.length > bits1.length) {\n bits1.unshift(false);\n }\n }\n\n function remove_leading_zeros (bits) {\n while ((bits[0] !== true) && (bits.length > 1)) {\n bits.shift()\n }\n }\n\n function make_copy (bits) {\n // this function is needed since assignment in js doesn't actually make copies,\n // and I don't want any of the below functions to change the value of their arguments\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n return new_bits;\n }\n\n function get_bits (literal, type) {\n // literal is any datatype that is currently supported by this function:\n // SUPPORTS: unsigned, signed, string, hexstring, double\n var bit_arr = [];\n if (typeof (literal) == \"number\" && type === \"unsigned\") {\n if (literal === 0) {\n return [0];\n }\n while (literal > 0) {\n if(isFinite(literal)){\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n } else {\n return 0;\n }\n }\n\n } else if (typeof (literal) == \"number\" && type === \"signed\") {\n if (literal === 0) {\n return [0];\n }\n var negative = false;\n if (literal < 0) {\n literal = -literal\n negative = true;\n }\n\n while (literal > 0) {\n bit_arr.unshift(Boolean(literal % 2));\n literal = Math.floor(literal / 2);\n }\n\n make_multiple_of_8(bit_arr)\n\n if (negative) {\n // turning into two's complement\n bit_arr = NOT(bit_arr) // bitwise not all bits\n // adding one to the negated array\n var carry = 1;\n var index = bit_arr.length - 1 // we'll be iterating backwards until index = 0 or carry = 0\n while (carry) {\n if (bit_arr[index]) {\n bit_arr[index] = false\n } else {\n bit_arr[index] = true\n carry = 0\n }\n if (!index)\n break;\n index--\n }\n }\n } else if (typeof (literal) == \"number\" && type === \"double\") {\n var i, result = \"\";\n var dv = new DataView(new ArrayBuffer(8));\n\n dv.setFloat64(0, literal, false);\n\n for (i = 0; i < 8; i++) {\n var bits = dv.getUint8(i).toString(2);\n while (bits.length !== 8) {\n bits = \"0\"+bits\n }\n result += bits;\n }\n bit_arr = result.split(\"\").map(function (val){\n return val === '1';\n });\n } else if (typeof (literal) == \"string\" && type === \"string\") {\n for (var j = 0; j < literal.length; j++) {\n var char_val = literal[j].charCodeAt(0);\n var char_bits = this.get_bits(char_val, \"unsigned\")\n make_multiple_of_8(char_bits)\n bit_arr = bit_arr.concat(char_bits);\n }\n } else if (typeof (literal) == \"string\" && type === \"hexstring\") {\n var string = \"\";\n string += literal;\n if (literal.length % 2 !== 0) {\n string = \"0\" + string;\n }\n var byte_array = []\n while (string.length > 0) {\n var splice = string.substring(0, 2)\n string = string.substring(2)\n byte_array.push(parseInt(splice, 16))\n }\n\n for (var k = 0; k < byte_array.length; k++){\n var byte = byte_array[k];\n var byte_bits = byte.toString(2).split(\"\").map((el)=>el !== \"0\")\n make_multiple_of_8(byte_bits)\n bit_arr = bit_arr.concat(byte_bits);\n }\n\n }\n\n remove_leading_zeros(bit_arr);\n make_multiple_of_8(bit_arr);\n return bit_arr;\n }\n\n function init_mask (length, val) {\n // returns a mask of 1s or 0s, as given by the \"val\" argument\n if (val === undefined) {\n val = true;\n }\n\n var mask = new Array(length);\n for (var i = 0; i < length; i++) {\n mask[i] = val;\n }\n return mask;\n }\n\n function to_byte_arr (bits, size) {\n remove_leading_zeros(bits);\n make_multiple_of_8(bits);\n\n var bytes_arr = new Array(bits.length / 8);\n for (var i = 0; i < bits.length; i += 8) {\n var byte_val = 0;\n\n var k = 0\n for (var j = 7; j >= 0; j--) {\n byte_val += (bits[i + j] << k);\n k += 1\n }\n bytes_arr[i / 8] = byte_val;\n }\n\n if (size === undefined) {\n return bytes_arr;\n }\n\n while (bytes_arr.length < Number(size)) {\n bytes_arr.unshift(0);\n }\n return bytes_arr;\n }\n\n function shift_left (bits, shift_val) {\n var new_bits = new Array(bits.length + shift_val);\n for (var i = 0; i < bits.length; i++) {\n new_bits[i] = Boolean(bits[i]);\n }\n for (var j = bits.length; j < new_bits.length; j++) {\n new_bits[j] = false;\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function AND (bits1, bits2) {\n // returns bits1 & bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] & bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n return new_bits;\n }\n\n function OR(bits1, bits2) {\n // returns bits1 | bits2\n var bits1_copy = make_copy(bits1);\n var bits2_copy = make_copy(bits2);\n make_equal_number_of_bits(bits1_copy, bits2_copy);\n var new_bits = new Array(bits1_copy.length);\n\n for (var i = 0; i < bits1_copy.length; i++) {\n new_bits[i] = Boolean(bits1_copy[i] | bits2_copy[i]);\n }\n\n remove_leading_zeros(new_bits);\n make_multiple_of_8(new_bits);\n\n return new_bits;\n }\n\n function NOT (bits) {\n // return !bits\n var bits_copy = make_copy(bits);\n var new_bits = new Array(bits.length);\n for (var i = 0; i < bits_copy.length; i++) {\n new_bits[i] = !bits_copy[i];\n }\n return new_bits\n }\n\n if (!Object.values) {\n Object.values = function (obj) {\n return Object.keys(obj).map(function(e) {\n return obj[e]\n })\n };\n }\n\n function check_command(group_or_field, lookup) {\n // returns true if an individual command is valid, and false otherwise\n\n // There are 2 things we need to check:\n // 1. Access - read-only? write-only?\n // 2. Number of fields\n\n if (group_or_field.hasOwnProperty(\"read\")) {\n if (lookup[\"access\"] === \"W\") {\n return {status: false, error_code: 'Tried reading from write-only field'};\n }\n else if ( typeof(group_or_field[\"read\"]) == \"object\" ) {\n return {status: false, error_code: 'Syntax error, read commands cannot be of type \"object\"'};\n }\n }\n else if (group_or_field.hasOwnProperty(\"write\")) {\n if (lookup[\"access\"] === \"R\") {\n return {status: false, error_code: 'Tried writing to read-only field'};\n }\n if (typeof(group_or_field[\"write\"]) === \"object\") {\n var fields = Object.keys(group_or_field[\"write\"]);\n if (fields.length !== Object.keys(lookup).length - 3) {\n return {status: false, error_code: 'Invalid number of fields in group'};\n }\n for (var i = 0; i < fields.length; i++) {\n if (lookup[fields[i]] === undefined) {\n return {status: false, error_code: 'Field \"' + fields[i] + '\" does not exist'}\n }\n }\n }\n\n }\n return {status: true, error_code: \"No error\"};\n }\n\n function is_valid(commands, sensor) {\n // returns true if commands are valid, returns false otherwise\n var valid = true;\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) {\n var category_str = categories[i];\n var category = commands[category_str];\n\n var groups_and_fields = Object.keys(commands[category_str]);\n for (var j = 0; j < groups_and_fields.length; j++) {\n var group_or_field_str = groups_and_fields[j];\n var group_or_field = category[group_or_field_str];\n\n var lookup = sensor[category_str][group_or_field_str];\n var msg\n if (lookup === undefined) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: 'Field/group \"' + group_or_field_str + '\" does not exist'};\n }\n\n valid = check_command(group_or_field, lookup);\n if (!valid[\"status\"]) {\n msg = (category_str + \" -> \" + group_or_field_str);\n return {valid: false, message: msg, error_code: valid[\"error_code\"]};\n }\n }\n }\n return {valid: true, message: \"no message\", error_code: \"no error code\"};\n }\n\n function write_bits(write_value, start_bit, end_bit, type, current_bits) {\n // write the bits in write_value to the specified location in current_bits and returns the result as a bit array\n // Arguments:\n // write_value [Number or String] - value to write to \"current_bits\"\n // start_bit [Number] - start bit to write to\n // end_bit [Number] - end bit to write to\n // type [String] - apply type to the value\n // current_bits [Bit Array] - bits to write \"write_value\" to\n if (current_bits === undefined) {\n current_bits = get_bits(0);\n }\n\n var bits_to_write = get_bits(write_value, type);\n\n var length = Number(start_bit) - Number(end_bit) + 1;\n var mask = init_mask(length);\n\n bits_to_write = AND(bits_to_write, mask); // AND bits_to_write with a mask of 1s\n bits_to_write = shift_left(bits_to_write, end_bit); // Shift the bits_to_write to start_bit\n\n current_bits = OR(current_bits, bits_to_write); // OR the bits_to_write with the current_bits\n\n return current_bits;\n }\n\n function format_header(header, read, or_80_to_write) {\n // takes in the header as a string, and handles the case of where the header is 2 bytes long\n var headersStr = header.split(\" \")\n var headersInt = [];\n for (var i = 0; i < headersStr.length; i++) {\n var int = parseInt(headersStr[i]);\n if (!read && parseInt(or_80_to_write) === 1) {\n int = int | 0x80\n }\n headersInt.push(int)\n }\n return headersInt\n\n }\n\n function write_to_port(bytes, port, encoded_data) {\n // write \"bytes\" to the appropriate \"port\" in \"encoded_data\"\n if (encoded_data.hasOwnProperty(port)) {\n // try pushing \"bytes\" onto the appropriate port in \"encoded_data\"\n encoded_data[port] = encoded_data[port].concat(bytes);\n }\n else {\n // if the port doesn't exist as a key yet, create the key and push \"bytes\" onto it\n encoded_data[port] = bytes;\n }\n }\n\n function encode_read(lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], true, lookup[\"or_80_to_write\"]);\n write_to_port(bytes, lookup[\"port\"], encoded_data);\n }\n\n function encode_write_field(command, lookup, encoded_data) {\n var bytes = format_header(lookup[\"header\"], false, lookup[\"or_80_to_write\"]);\n\n var value = command[\"write\"];\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n var written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n 0\n );\n var size\n if ( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n size = lookup[\"data_size\"];\n }\n else {\n size = written_bits.length/8;\n }\n\n var written_bytes = to_byte_arr(written_bits, size);\n bytes = bytes.concat(written_bytes);\n\n write_to_port(bytes, lookup[\"port\"], encoded_data); // Add the bytes to the appropriate port in \"encoded data\"\n }\n\n function encode_write_group(commands, group_lookup, encoded_data) {\n var header = group_lookup[\"header\"];\n var bytes = format_header(header, false, group_lookup[\"or_80_to_write\"]);\n\n var written_bits = get_bits(0);\n var field_names = Object.keys(commands[\"write\"])\n var values = Object.values(commands[\"write\"]);\n\n var bytes_num = parseInt(group_lookup[field_names[0]][\"data_size\"]);\n var multiple_field_bits = []; // A variable to contain the bits of the \"multiple\" field if it exists\n\n for (var i = 0; i < field_names.length; i++) {\n var field_name = field_names[i];\n var lookup = group_lookup[field_name];\n\n var value = values[i];\n\n if ( (lookup[\"type\"] !== \"string\") && (lookup[\"type\"] !== \"hexstring\") ) {\n value = Number(value) - Number(lookup[\"addition\"] ? lookup[\"addition\"] : 0)\n value = Number(value)/Number(lookup[\"coefficient\"]);\n // TODO: ideally this should be done inside of write_bits, not before it\n }\n\n if( (lookup[\"multiple\"] === 0) || (lookup[\"multiple\"] === undefined) ) {\n written_bits = write_bits(\n value,\n parseInt(lookup[\"bit_start\"]),\n parseInt(lookup[\"bit_end\"]),\n lookup[\"type\"],\n written_bits\n );\n }\n else {\n multiple_field_bits = get_bits(value, lookup[\"type\"]);\n bytes_num += multiple_field_bits.length/8;\n }\n }\n\n written_bits = written_bits.concat(multiple_field_bits); // must add multiple_field_bits at the end\n\n var written_bytes = to_byte_arr(written_bits, bytes_num);\n bytes = bytes.concat(written_bytes)\n\n write_to_port(bytes, group_lookup[\"port\"], encoded_data);\n }\n\n function encode(commands, sensor) {\n // encodes the commands object into a nested array of bytes\n\n var valid = is_valid(commands, sensor);\n if (!valid[\"valid\"]) {\n // check if commands is valid. If not, raise an error\n var message = \"Commands are invalid, failed at: \" + valid[\"message\"];\n var error_code = valid[\"error_code\"];\n\n return {error : message, error_code: error_code};\n }\n\n var lookup_all = JSON.parse(JSON.stringify(sensor)); // clones the sensor json\n var encoded_data = {};\n var categories = Object.keys(commands);\n for (var i = 0; i < categories.length; i++) { // iterates over the categories of commands\n var command_categories = commands[categories[i]];\n var lookup_categories = lookup_all[categories[i]];\n\n var groups_and_fields = Object.keys(command_categories);\n for (var j = 0; j < groups_and_fields.length; j++) { // iterates over the groups of commands\n var command = command_categories[groups_and_fields[j]];\n var lookup = lookup_categories[groups_and_fields[j]];\n\n // Now that we are iterating over all of the commands, the cases that we have to handle are as such:\n // 1. The read case -> handled by encode_read(...)\n // 2. The write case where the current key is a field -> handled by encode_write_field(...)\n // 3. The write case where the current key is a group -> handled by encode_write_group(...)\n\n // Within cases 2 and 3, there is the case of \"multiple\" or not \"multiple\". These cases are handled\n // inside of their corresponding functions\n\n var case_1 = command.hasOwnProperty(\"read\");\n var case_2 = command.hasOwnProperty(\"write\") && (typeof(command[\"write\"]) != \"object\");\n var case_3 = !(case_1 || case_2);\n\n if (case_1) {\n encode_read(lookup, encoded_data);\n } else if (case_2) {\n encode_write_field(command, lookup, encoded_data);\n } else if (case_3) {\n encode_write_group(command, lookup, encoded_data); }\n\n\n }\n }\n return encoded_data;\n }\n\n return encode(input, sensor);\n }\n","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function\n /*: EmotionCache */\ncreateCache(options\n/*: Options */\n) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node\n /*: HTMLStyleElement */\n ) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n /* : Node */\n\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node\n /*: HTMLStyleElement */\n ) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n /*: (\n selector: string,\n serialized: SerializedStyles,\n sheet: StyleSheet,\n shouldCache: boolean\n ) => string | void */\n\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function\n /*: void */\n insert(selector\n /*: string */\n , serialized\n /*: SerializedStyles */\n , sheet\n /*: StyleSheet */\n , shouldCache\n /*: boolean */\n ) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache\n /*: EmotionCache */\n = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import { createContext, useContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = useContext(ThemeContext);\n return /*#__PURE__*/createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, useTheme as u, withEmotionCache as w };\n","import { createElement, useContext, useRef, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-6a883da9.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-6a883da9.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.10.5\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": \"./macro.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.10.5\",\n\t\t\"@emotion/cache\": \"^11.10.5\",\n\t\t\"@emotion/serialize\": \"^1.1.1\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.0\",\n\t\t\"@emotion/utils\": \"^1.2.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.0\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\t\"@babel/core\": \"^7.0.0\",\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@babel/core\": {\n\t\t\toptional: true\n\t\t},\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@babel/core\": \"^7.18.5\",\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.10.5\",\n\t\t\"@emotion/css-prettifier\": \"1.1.1\",\n\t\t\"@emotion/server\": \"11.10.0\",\n\t\t\"@emotion/styled\": \"11.10.5\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": \"./macro.js\"\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n var res = insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g;\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n }\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\nimport { useLayoutEffect } from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else if (className) {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)([/*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}, \"0\"), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n}, \"1\")], 'AccessTime');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6.23 20.23 8 22l10-10L8 2 6.23 3.77 14.46 12z\"\n}), 'ArrowForwardIos');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"\n}), 'Info');\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport SystemDefaultPropsProvider, { useDefaultProps as useSystemDefaultProps } from '@mui/system/DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction DefaultPropsProvider(props) {\n return /*#__PURE__*/_jsx(SystemDefaultPropsProvider, _extends({}, props));\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object.isRequired\n} : void 0;\nexport default DefaultPropsProvider;\nexport function useDefaultProps(params) {\n return useSystemDefaultProps(params);\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled from '../styles/styled';\nimport { getSvgIconUtilityClass } from './svgIconClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n fontSize,\n classes\n } = ownerState;\n const slots = {\n root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n };\n return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n name: 'MuiSvgIcon',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette2, _palette3;\n return {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n // the will define the property that has `currentColor`\n // for example heroicons uses fill=\"none\" and stroke=\"currentColor\"\n fill: ownerState.hasSvgAsChild ? undefined : 'currentColor',\n flexShrink: 0,\n transition: (_theme$transitions = theme.transitions) == null || (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n duration: (_theme$transitions2 = theme.transitions) == null || (_theme$transitions2 = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2.shorter\n }),\n fontSize: {\n inherit: 'inherit',\n small: ((_theme$typography = theme.typography) == null || (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n medium: ((_theme$typography2 = theme.typography) == null || (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n large: ((_theme$typography3 = theme.typography) == null || (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n }[ownerState.fontSize],\n // TODO v5 deprecate, v6 remove for sx\n color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null || (_palette = _palette[ownerState.color]) == null ? void 0 : _palette.main) != null ? _palette$ownerState$c : {\n action: (_palette2 = (theme.vars || theme).palette) == null || (_palette2 = _palette2.action) == null ? void 0 : _palette2.active,\n disabled: (_palette3 = (theme.vars || theme).palette) == null || (_palette3 = _palette3.action) == null ? void 0 : _palette3.disabled,\n inherit: undefined\n }[ownerState.color]\n };\n});\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiSvgIcon'\n });\n const {\n children,\n className,\n color = 'inherit',\n component = 'svg',\n fontSize = 'medium',\n htmlColor,\n inheritViewBox = false,\n titleAccess,\n viewBox = '0 0 24 24'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const hasSvgAsChild = /*#__PURE__*/React.isValidElement(children) && children.type === 'svg';\n const ownerState = _extends({}, props, {\n color,\n component,\n fontSize,\n instanceFontSize: inProps.fontSize,\n inheritViewBox,\n viewBox,\n hasSvgAsChild\n });\n const more = {};\n if (!inheritViewBox) {\n more.viewBox = viewBox;\n }\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SvgIconRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n focusable: \"false\",\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, more, other, hasSvgAsChild && children.props, {\n ownerState: ownerState,\n children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n children: titleAccess\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n * @default 'inherit'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n * @default 'medium'\n */\n fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n /**\n * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n * prop will be ignored.\n * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n * `component`'s viewBox to the root node.\n * @default false\n */\n inheritViewBox: PropTypes.bool,\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this prop.\n */\n shapeRendering: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n * @default '0 0 24 24'\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default SvgIcon;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nexport default function GlobalStyles(props) {\n const {\n styles,\n defaultTheme = {}\n } = props;\n const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n return /*#__PURE__*/_jsx(Global, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n defaultTheme: PropTypes.object,\n styles: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default isPropValid;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { useContext, createElement, Fragment } from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n if (process.env.NODE_ENV !== 'production') {\n if (tag === undefined) {\n throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n }\n }\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n styles.push.apply(styles, args);\n } else {\n if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[0][0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[i], args[0][i]);\n }\n } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if ( // $FlowFixMe\n finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n newProps.ref = ref;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n return 'NO_COMPONENT_SELECTOR';\n } // $FlowFixMe: coerce undefined to string\n\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n return createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n })).apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport default createStyled;\n","import '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n // $FlowFixMe: we can ignore this because its exposed type is defined by the CreateStyled type\n newStyled[tagName] = newStyled(tagName);\n});\n\nexport default newStyled;\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\n\n// prepend: true moves MUI styles to the top of the so they're loaded first.\n// It allows developers to easily override MUI styles with other styling solutions, like CSS modules.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nlet cache;\nif (typeof document === 'object') {\n cache = createCache({\n key: 'css',\n prepend: true\n });\n}\nexport default function StyledEngineProvider(props) {\n const {\n injectFirst,\n children\n } = props;\n return injectFirst && cache ? /*#__PURE__*/_jsx(CacheProvider, {\n value: cache,\n children: children\n }) : children;\n}\nprocess.env.NODE_ENV !== \"production\" ? StyledEngineProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * By default, the styles are injected last in the element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override MUI's styles, set this prop.\n */\n injectFirst: PropTypes.bool\n} : void 0;","/**\n * @mui/styled-engine v5.16.6\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n};\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.alpha = alpha;\nexports.blend = blend;\nexports.colorChannel = void 0;\nexports.darken = darken;\nexports.decomposeColor = decomposeColor;\nexports.emphasize = emphasize;\nexports.getContrastRatio = getContrastRatio;\nexports.getLuminance = getLuminance;\nexports.hexToRgb = hexToRgb;\nexports.hslToRgb = hslToRgb;\nexports.lighten = lighten;\nexports.private_safeAlpha = private_safeAlpha;\nexports.private_safeColorChannel = void 0;\nexports.private_safeDarken = private_safeDarken;\nexports.private_safeEmphasize = private_safeEmphasize;\nexports.private_safeLighten = private_safeLighten;\nexports.recomposeColor = recomposeColor;\nexports.rgbToHex = rgbToHex;\nvar _formatMuiErrorMessage2 = _interopRequireDefault(require(\"@mui/utils/formatMuiErrorMessage\"));\nvar _clamp = _interopRequireDefault(require(\"@mui/utils/clamp\"));\n/* eslint-disable @typescript-eslint/naming-convention */\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return (0, _clamp.default)(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nfunction hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nfunction decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : (0, _formatMuiErrorMessage2.default)(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : (0, _formatMuiErrorMessage2.default)(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nconst colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexports.colorChannel = colorChannel;\nconst private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexports.private_safeColorChannel = private_safeColorChannel;\nfunction recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nfunction rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nfunction hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nfunction getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nfunction getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nfunction private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nfunction private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nfunction private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nfunction private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nfunction blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createStyled;\nexports.shouldForwardProp = shouldForwardProp;\nexports.systemDefaultTheme = void 0;\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\nvar _styledEngine = _interopRequireWildcard(require(\"@mui/styled-engine\"));\nvar _deepmerge = require(\"@mui/utils/deepmerge\");\nvar _capitalize = _interopRequireDefault(require(\"@mui/utils/capitalize\"));\nvar _getDisplayName = _interopRequireDefault(require(\"@mui/utils/getDisplayName\"));\nvar _createTheme = _interopRequireDefault(require(\"./createTheme\"));\nvar _styleFunctionSx = _interopRequireDefault(require(\"./styleFunctionSx\"));\nconst _excluded = [\"ownerState\"],\n _excluded2 = [\"variants\"],\n _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nfunction shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nconst systemDefaultTheme = exports.systemDefaultTheme = (0, _createTheme.default)();\nconst lowercaseFirstLetter = string => {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n defaultTheme,\n theme,\n themeId\n}) {\n return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref) {\n let {\n ownerState\n } = _ref,\n props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);\n const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle((0, _extends2.default)({\n ownerState\n }, props)) : callableStyle;\n if (Array.isArray(resolvedStylesArg)) {\n return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, (0, _extends2.default)({\n ownerState\n }, props)));\n }\n if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n const {\n variants = []\n } = resolvedStylesArg,\n otherStyles = (0, _objectWithoutPropertiesLoose2.default)(resolvedStylesArg, _excluded2);\n let result = otherStyles;\n variants.forEach(variant => {\n let isMatch = true;\n if (typeof variant.props === 'function') {\n isMatch = variant.props((0, _extends2.default)({\n ownerState\n }, props, ownerState));\n } else {\n Object.keys(variant.props).forEach(key => {\n if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n isMatch = false;\n }\n });\n }\n if (isMatch) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.push(typeof variant.style === 'function' ? variant.style((0, _extends2.default)({\n ownerState\n }, props, ownerState)) : variant.style);\n }\n });\n return result;\n }\n return resolvedStylesArg;\n}\nfunction createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n const systemSx = props => {\n return (0, _styleFunctionSx.default)((0, _extends2.default)({}, props, {\n theme: resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n };\n systemSx.__mui_systemSx = true;\n return (tag, inputOptions = {}) => {\n // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n (0, _styledEngine.internal_processStyles)(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n } = inputOptions,\n options = (0, _objectWithoutPropertiesLoose2.default)(inputOptions, _excluded3);\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = (0, _styledEngine.default)(tag, (0, _extends2.default)({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n const transformStyleArg = stylesArg => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || (0, _deepmerge.isPlainObject)(stylesArg)) {\n return props => processStyleArg(stylesArg, (0, _extends2.default)({}, props, {\n theme: resolveTheme({\n theme: props.theme,\n defaultTheme,\n themeId\n })\n }));\n }\n return stylesArg;\n };\n const muiStyledResolver = (styleArg, ...expressions) => {\n let transformedStyleArg = transformStyleArg(styleArg);\n const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }));\n if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n return null;\n }\n const styleOverrides = theme.components[componentName].styleOverrides;\n const resolvedStyleOverrides = {};\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, (0, _extends2.default)({}, props, {\n theme\n }));\n });\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n var _theme$components;\n const theme = resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }));\n const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n return processStyleArg({\n variants: themeVariants\n }, (0, _extends2.default)({}, props, {\n theme\n }));\n });\n }\n if (!skipSx) {\n expressionsWithDefaultTheme.push(systemSx);\n }\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill('');\n // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n }\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n if (componentName) {\n displayName = `${componentName}${(0, _capitalize.default)(componentSlot || '')}`;\n }\n if (displayName === undefined) {\n displayName = `Styled(${(0, _getDisplayName.default)(tag)})`;\n }\n Component.displayName = displayName;\n }\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveProps from '@mui/utils/resolveProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PropsContext = /*#__PURE__*/React.createContext(undefined);\nfunction DefaultPropsProvider({\n value,\n children\n}) {\n return /*#__PURE__*/_jsx(PropsContext.Provider, {\n value: value,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object\n} : void 0;\nfunction getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name]) {\n return props;\n }\n const config = theme.components[name];\n if (config.defaultProps) {\n // compatible with v5 signature\n return resolveProps(config.defaultProps, props);\n }\n if (!config.styleOverrides && !config.variants) {\n // v6 signature, no property 'defaultProps'\n return resolveProps(config, props);\n }\n return props;\n}\nexport function useDefaultProps({\n props,\n name\n}) {\n const ctx = React.useContext(PropsContext);\n return getThemeProps({\n props,\n name,\n theme: {\n components: ctx\n }\n });\n}\nexport default DefaultPropsProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme\n }, props[key]));\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n var _breakpointsInput$key;\n const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n // If CssVarsProvider is used as a provider,\n // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return _extends({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5\n } = breakpoints,\n other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return _extends({\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit\n }, other);\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: _extends({\n mode: 'light'\n }, paletteInput),\n spacing,\n shape: _extends({}, shape, shapeInput)\n }, other);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n\n // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://m2.material.io/design/layout/understanding-layout.html\n const transform = createUnarySpacing({\n spacing: spacingInput\n });\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n var _getPath;\n const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n if (typeof themeSpacing === 'number') {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n if (propValue >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import merge from './merge';\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme2;\n const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sx\"];\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from './defaultSxConfig';\nconst splitProps = props => {\n var _props$theme$unstable, _props$theme;\n const result = {\n systemProps: {},\n otherProps: {}\n };\n const config = (_props$theme$unstable = props == null || (_props$theme = props.theme) == null ? void 0 : _props$theme.unstable_sxConfig) != null ? _props$theme$unstable : defaultSxConfig;\n Object.keys(props).forEach(prop => {\n if (config[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\nexport default function extendSxProp(props) {\n const {\n sx: inSx\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n if (!isPlainObject(result)) {\n return systemProps;\n }\n return _extends({}, systemProps, result);\n };\n } else {\n finalSx = _extends({}, systemProps, inSx);\n }\n return _extends({}, otherProps, {\n sx: finalSx\n });\n}","import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n var _theme$unstable_sxCon;\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return removeUnusedBreakpoints(breakpointsKeys, css);\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _styledEngine = require(\"@mui/styled-engine\");\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(_styledEngine.ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nvar _default = exports.default = useTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n return _extends({\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n }\n }, mixins);\n}","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport const dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2\n } = palette,\n other = _objectWithoutPropertiesLoose(palette, _excluded);\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = _extends({}, color);\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n const modes = {\n dark,\n light\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!modes[mode]) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: _extends({}, common),\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const _ref = typeof typography === 'function' ? typography(palette) : typography,\n {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge(_extends({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n const {\n mixins: mixinsInput = {},\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (options.vars) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: _extends({}, zIndex)\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (key in node) {\n const child = node[key];\n if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.indexOf('Mui') === 0) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createTheme(...args);\n}\nexport default createTheme;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = _extends({}, easing, inputTransitions.easing);\n const mergedDuration = _extends({}, duration, inputTransitions.duration);\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n const isNumber = value => !isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return _extends({\n getAutoHeightDuration,\n create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}","'use client';\n\nimport createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","import slotShouldForwardProp from './slotShouldForwardProp';\nconst rootShouldForwardProp = prop => slotShouldForwardProp(prop) && prop !== 'classes';\nexport default rootShouldForwardProp;","// copied from @mui/system/createStyled\nfunction slotShouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport default slotShouldForwardProp;","'use client';\n\nimport createStyled from '@mui/system/createStyled';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nimport rootShouldForwardProp from './rootShouldForwardProp';\nexport { default as slotShouldForwardProp } from './slotShouldForwardProp';\nexport { default as rootShouldForwardProp } from './rootShouldForwardProp';\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","import capitalize from '@mui/utils/capitalize';\nexport default capitalize;","import createChainedFunction from '@mui/utils/createChainedFunction';\nexport default createChainedFunction;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n function Component(props, ref) {\n return /*#__PURE__*/_jsx(SvgIcon, _extends({\n \"data-testid\": `${displayName}Icon`,\n ref: ref\n }, props, {\n children: path\n }));\n }\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = `${displayName}Icon`;\n }\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","import debounce from '@mui/utils/debounce';\nexport default debounce;","import deprecatedPropType from '@mui/utils/deprecatedPropType';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import requirePropFactory from '@mui/utils/requirePropFactory';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import setRef from '@mui/utils/setRef';\nexport default setRef;","import unsupportedProp from '@mui/utils/unsupportedProp';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/utils';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import isMuiElement from '@mui/utils/isMuiElement';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","import ownerDocument from '@mui/utils/ownerDocument';\nexport default ownerDocument;","import ownerWindow from '@mui/utils/ownerWindow';\nexport default ownerWindow;","'use client';\n\nimport useControlled from '@mui/utils/useControlled';\nexport default useControlled;","'use client';\n\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport default useEnhancedEffect;","'use client';\n\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport default useEventCallback;","'use client';\n\nimport useForkRef from '@mui/utils/useForkRef';\nexport default useForkRef;","'use client';\n\nimport useId from '@mui/utils/useId';\nexport default useId;","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","'use client';\n\nimport useIsFocusVisible from '@mui/utils/useIsFocusVisible';\nexport default useIsFocusVisible;","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n Object.keys(slots).forEach(\n // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n const utilityClass = getUtilityClass(key);\n if (utilityClass !== '') {\n acc.push(utilityClass);\n }\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n }\n return acc;\n }, []).join(' ');\n });\n return output;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n // @ts-ignore\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (!isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (isPlainObject(source[key]) &&\n // Avoid prototype pollution\n Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe if we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n const match = `${fn}`.match(fnNameMatchRegex);\n const name = match && match[1];\n return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n const functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n if (typeof Component === 'string') {\n return Component;\n }\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n if (typeof Component === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n default:\n return undefined;\n }\n }\n return undefined;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n Object.keys(defaultProps).forEach(propName => {\n if (propName.toString().match(/^(components|slots)$/)) {\n output[propName] = _extends({}, defaultProps[propName], output[propName]);\n } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n const defaultSlotProps = defaultProps[propName] || {};\n const slotProps = props[propName];\n output[propName] = {};\n if (!slotProps || !Object.keys(slotProps)) {\n // Reduce the iteration if the slot props is empty\n output[propName] = defaultSlotProps;\n } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n // Reduce the iteration if the default slot props is empty\n output[propName] = slotProps;\n } else {\n output[propName] = _extends({}, slotProps);\n Object.keys(defaultSlotProps).forEach(slotPropName => {\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n });\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && !Object.is(defaultValue, defaultProp)) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n constructor() {\n this.currentId = null;\n this.clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","module.exports = require('./browser/algorithms.json')\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nvar _default = longFormatters;\nexports.default = _default;\nmodule.exports = exports.default;","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AesCmac = void 0;\nconst crypto_1 = require(\"crypto\");\nconst BufferTools_1 = require(\"./BufferTools\");\nclass AesCmac {\n constructor(key) {\n this.key = key;\n this.algos = {\n 16: `aes-128-cbc`,\n 24: `aes-192-cbc`,\n 32: `aes-256-cbc`,\n };\n this.blockSize = 16;\n if ((key instanceof Buffer) === false) {\n throw new Error(`The key must be provided as a Buffer.`);\n }\n if ((key.length in this.algos) === false) {\n throw new Error(`Key size must be 128, 192, or 256 bits.`);\n }\n this.algo = this.algos[key.length];\n this.subkeys = this.generateSubkeys();\n }\n generateSubkeys() {\n const rb = Buffer.from(`00000000000000000000000000000087`, `hex`);\n const z = Buffer.alloc(this.blockSize, 0);\n const l = this.aes(z);\n let key1 = BufferTools_1.BufferTools.bitShiftLeft(l);\n if (l[0] & 0x80) {\n key1 = BufferTools_1.BufferTools.xor(key1, rb);\n }\n let key2 = BufferTools_1.BufferTools.bitShiftLeft(key1);\n if (key1[0] & 0x80) {\n key2 = BufferTools_1.BufferTools.xor(key2, rb);\n }\n return { key1, key2 };\n }\n getSubKeys() {\n const key1 = Buffer.alloc(this.blockSize);\n const key2 = Buffer.alloc(this.blockSize);\n this.subkeys.key1.copy(key1);\n this.subkeys.key2.copy(key2);\n return { key1, key2 };\n }\n calculate(message) {\n if ((message instanceof Buffer) === false) {\n throw new Error(`The message must be provided as a Buffer.`);\n }\n const blockCount = this.getBlockCount(message);\n let x = Buffer.alloc(this.blockSize, 0);\n let y = Buffer.alloc(0);\n for (let i = 0; i < blockCount - 1; i++) {\n const from = i * this.blockSize;\n const block = message.slice(from, from + this.blockSize);\n y = BufferTools_1.BufferTools.xor(x, block);\n x = this.aes(y);\n }\n y = BufferTools_1.BufferTools.xor(x, this.getLastBlock(message));\n x = this.aes(y);\n return x;\n }\n getBlockCount(message) {\n const blockCount = Math.ceil(message.length / this.blockSize);\n return blockCount === 0 ? 1 : blockCount;\n }\n aes(message) {\n const z = Buffer.alloc(this.blockSize, 0);\n const cipher = (0, crypto_1.createCipheriv)(this.algo, this.key, z);\n const result = cipher.update(message);\n cipher.final();\n return result;\n }\n getLastBlock(message) {\n const blockCount = this.getBlockCount(message);\n const paddedBlock = this.padding(message, blockCount - 1);\n let complete = false;\n if (message.length > 0) {\n complete = (message.length % this.blockSize) === 0;\n }\n const key = complete ? this.subkeys.key1 : this.subkeys.key2;\n return BufferTools_1.BufferTools.xor(paddedBlock, key);\n }\n padding(message, blockIndex) {\n const block = Buffer.alloc(this.blockSize, 0);\n const from = blockIndex * this.blockSize;\n const bytes = message.copy(block, 0, from);\n if (bytes !== this.blockSize) {\n block[bytes] = 0x80;\n }\n return block;\n }\n}\nexports.AesCmac = AesCmac;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BufferTools = void 0;\nclass BufferTools {\n static bitShiftLeft(input) {\n const output = Buffer.alloc(input.length);\n let overflow = 0;\n for (let i = input.length - 1; i >= 0; i--) {\n output[i] = (input[i] << 1) | overflow;\n overflow = input[i] & 0x80 ? 1 : 0;\n }\n return output;\n }\n static xor(a, b) {\n const length = Math.min(a.length, b.length);\n const output = Buffer.alloc(length);\n for (let i = 0; i < length; i++) {\n output[i] = a[i] ^ b[i];\n }\n return output;\n }\n static toBinaryString(buffer) {\n let binary = ``;\n for (let i = 0; i < buffer.length; i++) {\n for (let b = 7; b >= 0; b--) {\n binary += buffer[i] & (1 << b) ? `1` : `0`;\n }\n }\n return binary;\n }\n}\nexports.BufferTools = BufferTools;\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe=true) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe=true) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","import {\n decrypt,\n decryptJoin,\n generateSessionKeys,\n decryptJoinAccept,\n encrypt,\n generateSessionKeys11,\n generateSessionKeys10,\n generateJSKeys,\n} from \"./lib/crypto\";\nimport { calculateMIC, recalculateMIC, verifyMIC } from \"./lib/mic\";\nimport LoraPacket from \"./lib/LoraPacket\";\n\nconst modules = {\n fromWire: LoraPacket.fromWire,\n fromFields: LoraPacket.fromFields,\n decrypt,\n decryptJoin,\n generateSessionKeys,\n generateSessionKeys10,\n generateSessionKeys11,\n generateJSKeys,\n decryptJoinAccept,\n encrypt,\n calculateMIC,\n recalculateMIC,\n verifyMIC,\n};\n\nexport default modules;\nmodule.exports = modules;\n","import { reverseBuffer, asHexString, asBinaryString } from \"./util\";\nimport { decrypt, decryptJoin, decryptFOpts } from \"./crypto\";\nimport { recalculateMIC } from \"./mic\";\nimport { Buffer } from \"buffer\";\n\nenum MType {\n JOIN_REQUEST,\n JOIN_ACCEPT,\n UNCONFIRMED_DATA_UP,\n UNCONFIRMED_DATA_DOWN,\n CONFIRMED_DATA_UP,\n CONFIRMED_DATA_DOWN,\n REJOIN_REQUEST,\n}\n\nenum LorawanVersion {\n V1_0 = \"1.0\",\n V1_1 = \"1.1\",\n}\nenum Constants {\n FCTRL_ADR = 0x80,\n FCTRL_ADRACKREQ = 0x40,\n FCTRL_ACK = 0x20,\n FCTRL_FPENDING = 0x10,\n FCTRL_CLASSB = 0x10,\n MHDR_MAJOR_MASK = 0x3,\n MHDR_MAJOR_POS = 0,\n DLSETTINGS_RXONEDROFFSET_MASK = 0x70,\n DLSETTINGS_RXONEDROFFSET_POS = 4,\n DLSETTINGS_RXTWODATARATE_MASK = 0x0f,\n DLSETTINGS_RXTWODATARATE_POS = 0,\n DLSETTINGS_OPTNEG_MASK = 0x80,\n DLSETTINGS_OPTNEG_POS = 7,\n RXDELAY_DEL_MASK = 0x0f,\n RXDELAY_DEL_POS = 0,\n}\n\nconst MTYPE_DESCRIPTIONS = [\n \"Join Request\",\n \"Join Accept\",\n \"Unconfirmed Data Up\",\n \"Unconfirmed Data Down\",\n \"Confirmed Data Up\",\n \"Confirmed Data Down\",\n \"Rejoin Request\",\n \"Proprietary\",\n];\n\nexport interface IUserFields {\n CFList?: Buffer;\n RxDelay?: Buffer | number;\n DLSettings?: Buffer | number;\n NetID?: Buffer;\n AppNonce?: Buffer;\n DevNonce?: Buffer;\n DevEUI?: Buffer;\n AppEUI?: Buffer;\n FPort?: number;\n FOpts?: string | Buffer;\n FCnt?: number | Buffer;\n MType?: string | number;\n DevAddr?: Buffer;\n payload?: string | Buffer;\n FCtrl?: {\n ADR?: boolean;\n ADRACKReq?: boolean;\n ACK?: boolean;\n FPending?: boolean;\n };\n JoinReqType?: Buffer | number;\n}\n\nclass LoraPacket {\n static fromWire(buffer: Buffer): LoraPacket {\n const payload = new LoraPacket();\n payload._initfromWire(buffer);\n return payload;\n }\n\n static fromFields(\n fields: IUserFields,\n AppSKey?: Buffer,\n NwkSKey?: Buffer,\n AppKey?: Buffer,\n FCntMSBytes?: Buffer,\n ConfFCntDownTxDrTxCh?: Buffer\n ): LoraPacket {\n if (!FCntMSBytes) FCntMSBytes = Buffer.alloc(2, 0);\n const payload = new LoraPacket();\n\n payload._initFromFields(fields);\n if (payload.isDataMessage()) {\n // to encrypt, need NwkSKey if port=0, else AppSKey\n\n const port = payload.getFPort();\n\n if (port != null && ((port === 0 && NwkSKey?.length === 16) || (port > 0 && AppSKey?.length === 16))) {\n // crypto is reversible (just XORs FRMPayload), so we can\n // just do \"decrypt\" on the plaintext to get ciphertext\n\n let ciphertext: Buffer;\n if (port === 0 && NwkSKey?.length === 16 && AppSKey?.length === 16 && AppKey?.length === 16) {\n ciphertext = decrypt(payload, undefined, AppSKey, FCntMSBytes);\n } else {\n ciphertext = decrypt(payload, AppSKey, NwkSKey, FCntMSBytes);\n }\n\n // overwrite payload with ciphertext\n payload.FRMPayload = ciphertext;\n // recalculate buffers to be ready for MIC calc'n\n payload._mergeGroupFields();\n if (NwkSKey?.length === 16) {\n recalculateMIC(payload, NwkSKey, AppKey, FCntMSBytes, ConfFCntDownTxDrTxCh);\n payload._mergeGroupFields();\n }\n }\n } else if (payload._getMType() === MType.JOIN_REQUEST) {\n if (AppKey?.length === 16) {\n recalculateMIC(payload, NwkSKey, AppKey, FCntMSBytes);\n payload._mergeGroupFields();\n }\n } else if (payload._getMType() === MType.JOIN_ACCEPT) {\n if (AppKey?.length === 16) {\n recalculateMIC(payload, NwkSKey, AppKey, FCntMSBytes);\n payload._mergeGroupFields();\n const ciphertext = decryptJoin(payload, AppKey);\n // overwrite payload with ciphertext\n if (payload.MACPayloadWithMIC) ciphertext.copy(payload.MACPayloadWithMIC);\n }\n }\n\n return payload;\n }\n\n private _initfromWire(contents: Buffer): void {\n const incoming = Buffer.from(contents);\n\n this.PHYPayload = incoming;\n\n this.MHDR = incoming.slice(0, 1);\n this.MACPayload = incoming.slice(1, incoming.length - 4);\n this.MACPayloadWithMIC = incoming.slice(1, incoming.length);\n this.MIC = incoming.slice(incoming.length - 4);\n\n const mtype = this._getMType();\n\n if (mtype == MType.JOIN_REQUEST) {\n this.AppEUI = reverseBuffer(incoming.slice(1, 1 + 8));\n this.DevEUI = reverseBuffer(incoming.slice(9, 9 + 8));\n this.DevNonce = reverseBuffer(incoming.slice(17, 17 + 2));\n } else if (mtype == MType.JOIN_ACCEPT) {\n this.AppNonce = reverseBuffer(incoming.slice(1, 1 + 3));\n this.NetID = reverseBuffer(incoming.slice(4, 4 + 3));\n this.DevAddr = reverseBuffer(incoming.slice(7, 7 + 4));\n this.DLSettings = incoming.slice(11, 11 + 1);\n this.RxDelay = incoming.slice(12, 12 + 1);\n this.JoinReqType = Buffer.from([0xff]);\n\n if (incoming.length == 13 + 16 + 4) {\n this.CFList = incoming.slice(13, 13 + 16);\n } else {\n this.CFList = Buffer.alloc(0);\n }\n } else if (mtype == MType.REJOIN_REQUEST) {\n this.RejoinType = incoming.slice(1, 1 + 1);\n if (this.RejoinType[0] === 0 || this.RejoinType[0] === 2) {\n this.NetID = reverseBuffer(incoming.slice(2, 2 + 3));\n this.DevEUI = reverseBuffer(incoming.slice(5, 5 + 8));\n this.RJCount0 = reverseBuffer(incoming.slice(13, 13 + 2));\n } else if (this.RejoinType[0] === 1) {\n this.JoinEUI = reverseBuffer(incoming.slice(2, 2 + 8));\n this.DevEUI = reverseBuffer(incoming.slice(10, 10 + 8));\n this.RJCount1 = reverseBuffer(incoming.slice(13, 13 + 2));\n }\n } else if (this.isDataMessage()) {\n this.FCtrl = this.MACPayload.slice(4, 5);\n const FCtrl = this.FCtrl.readInt8(0);\n const FOptsLen = FCtrl & 0x0f;\n this.FOpts = this.MACPayload.slice(7, 7 + FOptsLen);\n const FHDR_length = 7 + FOptsLen;\n this.FHDR = this.MACPayload.slice(0, 0 + FHDR_length);\n this.DevAddr = reverseBuffer(this.FHDR.slice(0, 4));\n\n this.FCnt = reverseBuffer(this.FHDR.slice(5, 7));\n\n if (FHDR_length == this.MACPayload.length) {\n this.FPort = Buffer.alloc(0);\n this.FRMPayload = Buffer.alloc(0);\n } else {\n this.FPort = this.MACPayload.slice(FHDR_length, FHDR_length + 1);\n this.FRMPayload = this.MACPayload.slice(FHDR_length + 1);\n }\n }\n }\n\n private _initFromFields(userFields: IUserFields): void {\n if (typeof userFields.MType !== \"undefined\") {\n let MTypeNo;\n if (typeof userFields.MType === \"number\") {\n MTypeNo = userFields.MType;\n } else if (typeof userFields.MType == \"string\") {\n const mhdr_idx = MTYPE_DESCRIPTIONS.indexOf(userFields.MType);\n if (mhdr_idx >= 0) {\n MTypeNo = mhdr_idx;\n } else {\n throw new Error(\"MType is unknown\");\n }\n } else {\n throw new Error(\"MType is required in a suitable format\");\n }\n\n if (MTypeNo == MType.JOIN_REQUEST) {\n this._initialiseJoinRequestPacketFromFields(userFields);\n } else if (MTypeNo == MType.JOIN_ACCEPT) {\n this._initialiseJoinAcceptPacketFromFields(userFields);\n } else {\n this._initialiseDataPacketFromFields(userFields);\n }\n } else {\n if (userFields.DevAddr && typeof userFields.payload !== \"undefined\") {\n this._initialiseDataPacketFromFields(userFields);\n } else if (userFields.AppEUI && userFields.DevEUI && userFields.DevNonce) {\n this._initialiseJoinRequestPacketFromFields(userFields);\n } else if (userFields.AppNonce && userFields.NetID && userFields.DevAddr) {\n this._initialiseJoinAcceptPacketFromFields(userFields);\n } else {\n throw new Error(\"No plausible packet\");\n }\n }\n }\n\n private _mergeGroupFields(): void {\n if (this.MHDR && this.MIC) {\n if (this._getMType() === MType.JOIN_REQUEST && this.AppEUI && this.DevEUI && this.DevNonce) {\n this.MACPayload = Buffer.concat([\n reverseBuffer(this.AppEUI),\n reverseBuffer(this.DevEUI),\n reverseBuffer(this.DevNonce),\n ]);\n this.PHYPayload = Buffer.concat([this.MHDR, this.MACPayload, this.MIC]);\n this.MACPayloadWithMIC = this.PHYPayload.slice(this.MHDR.length, this.PHYPayload.length);\n } else if (\n this._getMType() === MType.JOIN_ACCEPT &&\n this.AppNonce &&\n this.NetID &&\n this.DevAddr &&\n this.DLSettings &&\n this.RxDelay &&\n this.CFList\n ) {\n this.MACPayload = Buffer.concat([\n reverseBuffer(this.AppNonce),\n reverseBuffer(this.NetID),\n reverseBuffer(this.DevAddr),\n this.DLSettings,\n this.RxDelay,\n this.CFList,\n ]);\n this.PHYPayload = Buffer.concat([this.MHDR, this.MACPayload, this.MIC]);\n this.MACPayloadWithMIC = this.PHYPayload.slice(this.MHDR.length, this.PHYPayload.length);\n } else if (this.FCtrl && this.DevAddr && this.FPort && this.FCnt && this.FRMPayload && this.FOpts) {\n this.FHDR = Buffer.concat([reverseBuffer(this.DevAddr), this.FCtrl, reverseBuffer(this.FCnt), this.FOpts]);\n this.MACPayload = Buffer.concat([this.FHDR, this.FPort, this.FRMPayload]);\n this.PHYPayload = Buffer.concat([this.MHDR, this.MACPayload, this.MIC]);\n this.MACPayloadWithMIC = this.PHYPayload.slice(this.MHDR.length, this.PHYPayload.length);\n }\n }\n }\n\n private _initialiseDataPacketFromFields(userFields: IUserFields): void {\n if (userFields.DevAddr && userFields.DevAddr.length == 4) {\n this.DevAddr = Buffer.from(userFields.DevAddr);\n } else {\n throw new Error(\"DevAddr is required in a suitable format\");\n }\n\n if (typeof userFields.payload === \"string\") {\n this.FRMPayload = Buffer.from(userFields.payload);\n } else if (userFields.payload instanceof Buffer) {\n this.FRMPayload = Buffer.from(userFields.payload);\n }\n\n if (typeof userFields.MType !== \"undefined\") {\n if (typeof userFields.MType === \"number\") {\n this.MHDR = Buffer.alloc(1);\n this.MHDR.writeUInt8(userFields.MType << 5, 0);\n } else if (typeof userFields.MType === \"string\") {\n const mhdr_idx = MTYPE_DESCRIPTIONS.indexOf(userFields.MType);\n if (mhdr_idx >= 0) {\n this.MHDR = Buffer.alloc(1);\n this.MHDR.writeUInt8(mhdr_idx << 5, 0);\n } else {\n throw new Error(\"MType is unknown\");\n }\n } else {\n throw new Error(\"MType is required in a suitable format\");\n }\n }\n\n if (userFields.FCnt) {\n if (userFields.FCnt instanceof Buffer && userFields.FCnt.length == 2) {\n this.FCnt = Buffer.from(userFields.FCnt);\n } else if (typeof userFields.FCnt === \"number\") {\n this.FCnt = Buffer.alloc(2);\n this.FCnt.writeUInt16BE(userFields.FCnt, 0);\n } else {\n throw new Error(\"FCnt is required in a suitable format\");\n }\n }\n\n if (typeof userFields.FOpts !== \"undefined\") {\n if (typeof userFields.FOpts === \"string\") {\n this.FOpts = Buffer.from(userFields.FOpts, \"hex\");\n } else if (userFields.FOpts instanceof Buffer) {\n this.FOpts = Buffer.from(userFields.FOpts);\n } else {\n throw new Error(\"FOpts is required in a suitable format\");\n }\n if (15 < this.FOpts.length) {\n throw new Error(\"Too many options for piggybacking\");\n }\n } else {\n this.FOpts = Buffer.from(\"\", \"hex\");\n }\n\n let fctrl = 0;\n if (userFields.FCtrl?.ADR) {\n fctrl |= Constants.FCTRL_ADR;\n }\n if (userFields.FCtrl?.ADRACKReq) {\n fctrl |= Constants.FCTRL_ADRACKREQ;\n }\n if (userFields.FCtrl?.ACK) {\n fctrl |= Constants.FCTRL_ACK;\n }\n if (userFields.FCtrl?.FPending) {\n fctrl |= Constants.FCTRL_FPENDING;\n }\n\n fctrl |= this.FOpts.length & 0x0f;\n this.FCtrl = Buffer.alloc(1);\n this.FCtrl.writeUInt8(fctrl, 0);\n\n if (!isNaN(userFields.FPort) && userFields.FPort >= 0 && userFields.FPort <= 255) {\n this.FPort = Buffer.alloc(1);\n this.FPort.writeUInt8(userFields.FPort, 0);\n }\n\n if (!this?.MHDR) {\n this.MHDR = Buffer.alloc(1);\n this.MHDR.writeUInt8(MType.UNCONFIRMED_DATA_UP << 5, 0);\n }\n\n if (this?.FPort == null) {\n if (this?.FRMPayload && this.FRMPayload.length > 0) {\n this.FPort = Buffer.from(\"01\", \"hex\");\n } else {\n this.FPort = Buffer.alloc(0);\n }\n }\n\n if (!this?.FPort == null) {\n this.FPort = Buffer.from(\"01\", \"hex\");\n }\n\n if (!this.FCnt) {\n this.FCnt = Buffer.from(\"0000\", \"hex\");\n }\n\n if (!this.MIC) {\n this.MIC = Buffer.from(\"EEEEEEEE\", \"hex\");\n }\n\n this._mergeGroupFields();\n }\n\n private _initialiseJoinRequestPacketFromFields(userFields: IUserFields): void {\n if (userFields.AppEUI && userFields.AppEUI.length == 8) {\n this.AppEUI = Buffer.from(userFields.AppEUI);\n } else {\n throw new Error(\"AppEUI is required in a suitable format\");\n }\n\n if (userFields.DevEUI && userFields.DevEUI.length == 8) {\n this.DevEUI = Buffer.from(userFields.DevEUI);\n } else {\n throw new Error(\"DevEUI is required in a suitable format\");\n }\n\n if (userFields.DevNonce && userFields.DevNonce.length == 2) {\n this.DevNonce = Buffer.from(userFields.DevNonce);\n } else {\n throw new Error(\"DevNonce is required in a suitable format\");\n }\n\n if (userFields.FCnt) {\n if (userFields.FCnt instanceof Buffer && userFields.FCnt.length == 2) {\n this.FCnt = Buffer.from(userFields.FCnt);\n } else if (typeof userFields.FCnt === \"number\") {\n this.FCnt = Buffer.alloc(2);\n this.FCnt.writeUInt16BE(userFields.FCnt, 0);\n } else {\n throw new Error(\"FCnt is required in a suitable format\");\n }\n }\n this.MHDR = Buffer.alloc(1);\n this.MHDR.writeUInt8(MType.JOIN_REQUEST << 5, 0);\n\n if (!this.MIC) {\n this.MIC = Buffer.from(\"EEEEEEEE\", \"hex\");\n }\n\n this._mergeGroupFields();\n }\n\n private _initialiseJoinAcceptPacketFromFields(userFields: IUserFields): void {\n if (userFields.AppNonce && userFields.AppNonce.length == 3) {\n this.AppNonce = Buffer.from(userFields.AppNonce);\n } else {\n throw new Error(\"AppNonce is required in a suitable format\");\n }\n\n if (userFields.NetID && userFields.NetID.length == 3) {\n this.NetID = Buffer.from(userFields.NetID);\n } else {\n throw new Error(\"NetID is required in a suitable format\");\n }\n\n if (userFields.DevAddr && userFields.DevAddr.length == 4) {\n this.DevAddr = Buffer.from(userFields.DevAddr);\n } else {\n throw new Error(\"DevAddr is required in a suitable format\");\n }\n\n if (userFields.DLSettings) {\n if (userFields.DLSettings instanceof Buffer && userFields.DLSettings.length == 1) {\n this.DLSettings = Buffer.from(userFields.DLSettings);\n } else if (typeof userFields.DLSettings === \"number\") {\n this.DLSettings = Buffer.alloc(1);\n this.DLSettings.writeUInt8(userFields.DLSettings, 0);\n } else {\n throw new Error(\"DLSettings is required in a suitable format\");\n }\n }\n\n if (userFields.RxDelay) {\n if (userFields.RxDelay instanceof Buffer && userFields.RxDelay.length == 1) {\n this.RxDelay = Buffer.from(userFields.RxDelay);\n } else if (typeof userFields.RxDelay == \"number\") {\n this.RxDelay = Buffer.alloc(1);\n this.RxDelay.writeUInt8(userFields.RxDelay, 0);\n } else {\n throw new Error(\"RxDelay is required in a suitable format\");\n }\n }\n\n if (userFields.CFList) {\n if (userFields.CFList instanceof Buffer && (userFields.CFList.length == 0 || userFields.CFList.length == 16)) {\n this.CFList = Buffer.from(userFields.CFList);\n } else {\n throw new Error(\"CFList is required in a suitable format\");\n }\n }\n\n if (!userFields.JoinReqType) {\n this.JoinReqType = Buffer.from(\"ff\", \"hex\");\n } else {\n if (userFields.JoinReqType instanceof Buffer && userFields.JoinReqType.length == 1) {\n this.JoinReqType = Buffer.from(userFields.JoinReqType);\n } else if (typeof userFields.JoinReqType === \"number\") {\n this.JoinReqType = Buffer.alloc(1);\n this.JoinReqType.writeUInt8(userFields.JoinReqType, 0);\n } else {\n throw new Error(\"JoinReqType is required in a suitable format\");\n }\n }\n\n if (userFields.AppEUI && userFields.AppEUI.length == 8) {\n this.AppEUI = Buffer.from(userFields.AppEUI);\n } else if (this.getDLSettingsOptNeg()) {\n throw new Error(\"AppEUI/JoinEUI is required in a suitable format\");\n }\n\n if (userFields.DevNonce && userFields.DevNonce.length == 2) {\n this.DevNonce = Buffer.from(userFields.DevNonce);\n } else if (this.getDLSettingsOptNeg()) {\n throw new Error(\"DevNonce is required in a suitable format\");\n }\n\n if (!this.DLSettings) {\n this.DLSettings = Buffer.from(\"00\", \"hex\");\n }\n if (!this.RxDelay) {\n this.RxDelay = Buffer.from(\"00\", \"hex\");\n }\n if (!this.CFList) {\n this.CFList = Buffer.from(\"\", \"hex\");\n }\n this.MHDR = Buffer.alloc(1);\n this.MHDR.writeUInt8(MType.JOIN_ACCEPT << 5, 0);\n\n if (!this.MIC) {\n this.MIC = Buffer.from(\"EEEEEEEE\", \"hex\");\n }\n\n this._mergeGroupFields();\n }\n\n private _getMType(): number {\n if (this.MHDR) return (this.MHDR.readUInt8(0) & 0xff) >> 5;\n return -1;\n }\n\n public isDataMessage(): boolean {\n const mtype = this._getMType();\n if (mtype >= MType.UNCONFIRMED_DATA_UP && mtype <= MType.CONFIRMED_DATA_DOWN) return true;\n return false;\n }\n\n public isConfirmed(): boolean {\n const mtype = this._getMType();\n if (mtype === MType.CONFIRMED_DATA_DOWN || mtype === MType.CONFIRMED_DATA_UP) return true;\n return false;\n }\n\n /**\n * Provide MHDR.Major as a number\n */\n public getMHDRMajor(): number {\n if (this.MHDR) return (this.MHDR.readUInt8(0) & Constants.MHDR_MAJOR_MASK) >> Constants.MHDR_MAJOR_POS;\n return -1;\n }\n\n /**\n * Provide DevNonce as a number\n */\n public getDevNonce(): number {\n return this.DevNonce.readUInt16BE(0);\n }\n\n /**\n * Provide FOptsLen as a number\n */\n public getFOptsLen(): number {\n const FCtrl = this.FCtrl.readInt8(0);\n return FCtrl & 0x0f;\n }\n\n /**\n * Provide MType as a string\n */\n public getMType(): string {\n return MTYPE_DESCRIPTIONS[this._getMType()];\n }\n\n /**\n * Provide Direction as a string\n */\n public getDir(): string | null {\n const mType = this._getMType();\n if (mType > 5) return null;\n if (mType % 2 == 0) return \"up\";\n return \"down\";\n }\n\n /**\n * Provide FPort as a number\n */\n public getFPort(): number | null {\n if (this.FPort && this.FPort.length) return this.FPort.readUInt8(0);\n return null;\n }\n\n /**\n * Provide FCnt as a number\n */\n public getFCnt(): number | null {\n if (this.FCnt) return this.FCnt.readUInt16BE(0);\n return null;\n }\n\n /**\n * Provide FCtrl.ACK as a flag\n */\n public getFCtrlACK(): boolean | null {\n if (!this.FCtrl) return null;\n return !!(this.FCtrl.readUInt8(0) & Constants.FCTRL_ACK);\n }\n\n /**\n * Provide FCtrl.ADR as a flag\n */\n public getFCtrlADR(): boolean | null {\n if (!this.FCtrl) return null;\n return !!(this.FCtrl.readUInt8(0) & Constants.FCTRL_ADR);\n }\n\n /**\n * Provide FCtrl.ADRACKReq as a flag\n */\n public getFCtrlADRACKReq(): boolean | null {\n if (!this.FCtrl) return null;\n return !!(this.FCtrl.readUInt8(0) & Constants.FCTRL_ADRACKREQ);\n }\n\n /**\n * Provide FCtrl.getFCtrlClassB as a flag\n */\n public getFCtrlClassB(): boolean | null {\n if (!this.FCtrl) return null;\n return !!(this.FCtrl.readUInt8(0) & Constants.FCTRL_CLASSB);\n }\n\n /**\n * Provide FCtrl.FPending as a flag\n */\n public getFCtrlFPending(): boolean | null {\n if (!this.FCtrl) return null;\n return !!(this.FCtrl.readUInt8(0) & Constants.FCTRL_FPENDING);\n }\n\n /**\n * Provide DLSettings.RX1DRoffset as integer\n */\n public getDLSettingsRxOneDRoffset(): number | null {\n if (!this.DLSettings) return null;\n return (\n (this.DLSettings.readUInt8(0) & Constants.DLSETTINGS_RXONEDROFFSET_MASK) >> Constants.DLSETTINGS_RXONEDROFFSET_POS\n );\n }\n\n /**\n * Provide DLSettings.RX2DataRate as integer\n */\n public getDLSettingsRxTwoDataRate(): number | null {\n if (!this.DLSettings) return null;\n return (\n (this.DLSettings.readUInt8(0) & Constants.DLSETTINGS_RXTWODATARATE_MASK) >> Constants.DLSETTINGS_RXTWODATARATE_POS\n );\n }\n\n /**\n * Provide DLSettings.OptNeg as boolean\n */\n public getDLSettingsOptNeg(): boolean | null {\n if (!this.DLSettings) return null;\n return (this.DLSettings.readUInt8(0) & Constants.DLSETTINGS_OPTNEG_MASK) >> Constants.DLSETTINGS_OPTNEG_POS === 1;\n }\n\n /**\n * Provide RxDelay.Del as integer\n */\n public getRxDelayDel(): number | null {\n if (!this.RxDelay) return null;\n return (this.RxDelay.readUInt8(0) & Constants.RXDELAY_DEL_MASK) >> Constants.RXDELAY_DEL_POS;\n }\n\n /**\n * Provide CFList.FreqChFour as buffer\n */\n public getCFListFreqChFour(): Buffer {\n if (this.CFList && this.CFList.length === 16) {\n return reverseBuffer(this.CFList.slice(0, 0 + 3));\n } else {\n return Buffer.alloc(0);\n }\n }\n\n /**\n * Provide CFList.FreqChFive as buffer\n */\n public getCFListFreqChFive(): Buffer {\n if (this.CFList && this.CFList.length === 16) {\n return reverseBuffer(this.CFList.slice(3, 3 + 3));\n } else {\n return Buffer.alloc(0);\n }\n }\n\n /**\n * Provide CFList.FreqChSix as buffer\n */\n public getCFListFreqChSix(): Buffer {\n if (this.CFList && this.CFList.length === 16) {\n return reverseBuffer(this.CFList.slice(6, 6 + 3));\n } else {\n return Buffer.alloc(0);\n }\n }\n\n /**\n * Provide CFList.FreqChSeven as buffer\n */\n public getCFListFreqChSeven(): Buffer {\n if (this.CFList && this.CFList.length === 16) {\n return reverseBuffer(this.CFList.slice(9, 9 + 3));\n } else {\n return Buffer.alloc(0);\n }\n }\n\n /**\n * Provide CFList.FreqChEight as buffer\n */\n public getCFListFreqChEight(): Buffer {\n if (this.CFList && this.CFList.length === 16) {\n return reverseBuffer(this.CFList.slice(12, 12 + 3));\n } else {\n return Buffer.alloc(0);\n }\n }\n\n /**\n * Provide CFList.CFListType as buffer\n */\n public getCFListType(): Buffer {\n if (this.CFList && this.CFList.length === 16) {\n return reverseBuffer(this.CFList.slice(15, 15 + 1));\n } else {\n return Buffer.alloc(0);\n }\n }\n\n public getBuffers() {\n return this;\n }\n\n public decryptFOpts(\n NwkSEncKey: Buffer,\n NwkSKey?: Buffer,\n FCntMSBytes?: Buffer,\n ConfFCntDownTxDrTxCh?: Buffer\n ): Buffer {\n return this.encryptFOpts(NwkSEncKey, NwkSKey, FCntMSBytes, ConfFCntDownTxDrTxCh);\n }\n public encryptFOpts(\n NwkSEncKey: Buffer,\n SNwkSIntKey?: Buffer,\n FCntMSBytes?: Buffer,\n ConfFCntDownTxDrTxCh?: Buffer\n ): Buffer {\n if (!this.FOpts) return Buffer.alloc(0);\n if (!NwkSEncKey || NwkSEncKey?.length !== 16) throw new Error(\"NwkSEncKey must be 16 bytes\");\n this.FOpts = decryptFOpts(this, NwkSEncKey, FCntMSBytes);\n this._mergeGroupFields();\n if (SNwkSIntKey?.length === 16) {\n recalculateMIC(this, SNwkSIntKey, undefined, FCntMSBytes, ConfFCntDownTxDrTxCh);\n this._mergeGroupFields();\n }\n return this.FOpts;\n }\n\n public getPHYPayload(): Buffer | void {\n return this.PHYPayload;\n }\n\n public isJoinRequestMessage() {\n return this._getMType() == MType.JOIN_REQUEST;\n }\n\n public isReJoinRequestMessage() {\n return this._getMType() == MType.REJOIN_REQUEST;\n }\n\n public isJoinAcceptMessage() {\n return this._getMType() == MType.JOIN_ACCEPT;\n }\n\n public toString(): string {\n let msg = \"\";\n\n if (this.isJoinRequestMessage()) {\n msg += \" Message Type = Join Request\" + \"\\n\";\n msg += \" PHYPayload = \" + asHexString(this.PHYPayload).toUpperCase() + \"\\n\";\n msg += \"\\n\";\n msg += \" ( PHYPayload = MHDR[1] | MACPayload[..] | MIC[4] )\\n\";\n msg += \" MHDR = \" + asHexString(this.MHDR) + \", Major = \" + asBinaryString(this.getMHDRMajor()) + \"\\n\";\n msg += \" MACPayload = \" + asHexString(this.MACPayload) + \"\\n\";\n msg += \" MIC = \" + asHexString(this.MIC) + \"\\n\";\n msg += \"\\n\";\n msg += \" ( MACPayload = AppEUI[8] | DevEUI[8] | DevNonce[2] )\\n\";\n msg += \" AppEUI = \" + asHexString(this.AppEUI) + \"\\n\";\n msg += \" DevEUI = \" + asHexString(this.DevEUI) + \"\\n\";\n msg += \" DevNonce = \" + asHexString(this.DevNonce) + \" (\" + this.getDevNonce() + \")\"+ \"\\n\";\n } else if (this.isJoinAcceptMessage()) {\n msg += \" Message Type = Join Accept\" + \"\\n\";\n msg += \" PHYPayload = \" + asHexString(this.PHYPayload).toUpperCase() + \"\\n\";\n msg += \"\\n\";\n msg += \" ( PHYPayload = MHDR[1] | MACPayload[..] | MIC[4] )\\n\";\n msg += \" MHDR = \" + asHexString(this.MHDR) + \", Major = \" + asBinaryString(this.getMHDRMajor()) + \"\\n\";\n msg += \" MACPayload = \" + asHexString(this.MACPayload) + \"\\n\";\n msg += \" MIC = \" + asHexString(this.MIC) + \"\\n\";\n msg += \"\\n\";\n msg +=\n \" ( MACPayload = AppNonce[3] | NetID[3] | DevAddr[4] | DLSettings[1] | RxDelay[1] | CFList[0|15] )\\n\";\n msg += \" AppNonce = \" + asHexString(this.AppNonce) + \"\\n\";\n msg += \" NetID = \" + asHexString(this.NetID) + \"\\n\";\n msg += \" DevAddr = \" + asHexString(this.DevAddr) + \"\\n\";\n msg += \" DLSettings = \" + asHexString(this.DLSettings) + \"\\n\";\n msg += \" RxDelay = \" + asHexString(this.RxDelay) + \"\\n\";\n msg += \" CFList = \" + asHexString(this.CFList) + \"\\n\";\n msg += \"\\n\";\n msg += \"DLSettings.RX1DRoffset = \" + this.getDLSettingsRxOneDRoffset() + \"\\n\";\n msg += \"DLSettings.RX2DataRate = \" + this.getDLSettingsRxTwoDataRate() + \"\\n\";\n msg += \" RxDelay.Del = \" + this.getRxDelayDel() + \"\\n\";\n msg += \"\\n\";\n if (this.CFList.length === 16) {\n msg += \" ( CFList = FreqCh4[3] | FreqCh5[3] | FreqCh6[3] | FreqCh7[3] | FreqCh8[3] | CFListType[1] )\\n\";\n msg += \" FreqCh4 = \" + asHexString(this.getCFListFreqChFour()) + \"\\n\";\n msg += \" FreqCh5 = \" + asHexString(this.getCFListFreqChFive()) + \"\\n\";\n msg += \" FreqCh6 = \" + asHexString(this.getCFListFreqChSix()) + \"\\n\";\n msg += \" FreqCh7 = \" + asHexString(this.getCFListFreqChSeven()) + \"\\n\";\n msg += \" FreqCh8 = \" + asHexString(this.getCFListFreqChEight()) + \"\\n\";\n msg += \" CFListType = \" + asHexString(this.getCFListType()) + \"\\n\";\n }\n } else if (this.isDataMessage()) {\n msg += \"Message Type = Data\" + \"\\n\";\n msg += \" PHYPayload = \" + asHexString(this.PHYPayload).toUpperCase() + \"\\n\";\n msg += \"\\n\";\n msg += \" ( PHYPayload = MHDR[1] | MACPayload[..] | MIC[4] )\\n\";\n msg += \" MHDR = \" + asHexString(this.MHDR) + \", Major = \" + asBinaryString(this.getMHDRMajor()) + \"\\n\";\n msg += \" MACPayload = \" + asHexString(this.MACPayload) + \"\\n\";\n msg += \" MIC = \" + asHexString(this.MIC) + \"\\n\";\n msg += \"\\n\";\n msg += \" ( MACPayload = FHDR | FPort | FRMPayload )\\n\";\n msg += \" FHDR = \" + asHexString(this.FHDR) + \"\\n\";\n msg += \" FPort = \" + asHexString(this.FPort) + \"\\n\";\n msg += \" FRMPayload = \" + asHexString(this.FRMPayload) + \"\\n\";\n msg += \"\\n\";\n msg += \" ( FHDR = DevAddr[4] | FCtrl[1] | FCnt[2] | FOpts[0..15] )\\n\";\n msg += \" DevAddr = \" + asHexString(this.DevAddr) + \" (Big Endian)\\n\";\n msg += \" FCtrl = \" + asHexString(this.FCtrl) + \"\\n\"; //TODO as binary?\n msg += \" FCnt = \" + asHexString(this.FCnt) + \" (Big Endian)\\n\";\n msg += \" FOpts = \" + asHexString(this.FOpts) + \"\\n\";\n msg += \" FOptsLen = \" + this.getFOptsLen() + \"\\n\";\n msg += \"\\n\";\n msg += \" Message Type = \" + this.getMType() + \"\\n\";\n msg += \" Direction = \" + this.getDir() + \"\\n\";\n msg += \" FCnt = \" + this.getFCnt() + \"\\n\";\n msg += \" FCtrl.ACK = \" + this.getFCtrlACK() + \"\\n\";\n msg += \" FCtrl.ADR = \" + this.getFCtrlADR() + \"\\n\";\n if (this._getMType() == MType.CONFIRMED_DATA_DOWN || this._getMType() == MType.UNCONFIRMED_DATA_DOWN) {\n msg += \" FCtrl.FPending = \" + this.getFCtrlFPending() + \"\\n\";\n } else {\n msg += \" FCtrl.ADRACKReq = \" + this.getFCtrlADRACKReq() + \"\\n\";\n msg += \" FCtrl.ClassB = \" + this.getFCtrlClassB() + \"\\n\";\n }\n }\n return msg;\n }\n\n get JoinEUI(): Buffer {\n return this.AppEUI;\n }\n\n set JoinEUI(v: Buffer) {\n this.AppEUI = v;\n }\n\n get JoinNonce(): Buffer {\n return this.AppNonce;\n }\n\n set JoinNonce(v: Buffer) {\n this.AppNonce = v;\n }\n\n PHYPayload?: Buffer;\n MHDR?: Buffer;\n MACPayload?: Buffer;\n MACPayloadWithMIC?: Buffer;\n AppEUI?: Buffer;\n DevEUI?: Buffer;\n DevNonce?: Buffer;\n MIC?: Buffer;\n AppNonce?: Buffer;\n NetID?: Buffer;\n DevAddr?: Buffer;\n DLSettings?: Buffer;\n RxDelay?: Buffer;\n CFList?: Buffer;\n FCtrl?: Buffer;\n FOpts?: Buffer;\n FCnt?: Buffer;\n FHDR?: Buffer;\n FPort?: Buffer;\n FRMPayload?: Buffer;\n JoinReqType?: Buffer;\n RejoinType?: Buffer;\n RJCount0?: Buffer;\n RJCount1?: Buffer;\n}\n\nexport default LoraPacket;\nexport { LorawanVersion };\n","import LoraPacket, { LorawanVersion } from \"./LoraPacket\";\nimport { reverseBuffer } from \"./util\";\nimport CryptoJS from \"crypto-js\";\nimport { Buffer } from \"buffer\";\n\nconst LORAIV = CryptoJS.enc.Hex.parse(\"00000000000000000000000000000000\");\n\nenum KeyType11 {\n FNwkSIntKey = \"01\",\n AppSKey = \"02\",\n SNwkSIntKey = \"03\",\n NwkSEncKey = \"04\",\n}\n\nenum KeyType10 {\n NwkSKey = \"01\",\n AppSKey = \"02\",\n}\n\nenum KeyTypeJS {\n JSIntKey = \"06\",\n JSEncKey = \"05\",\n}\n\nfunction decrypt(payload: LoraPacket, AppSKey?: Buffer, NwkSKey?: Buffer, fCntMSB32?: Buffer): Buffer {\n if (!payload.PHYPayload || !payload.FRMPayload) throw new Error(\"Payload was not defined\");\n\n if (!fCntMSB32) fCntMSB32 = Buffer.alloc(2, 0);\n\n const blocks = Math.ceil(payload.FRMPayload.length / 16);\n\n const sequenceS = Buffer.alloc(16 * blocks);\n for (let block = 0; block < blocks; block++) {\n const ai = _metadataBlockAi(payload, block, fCntMSB32);\n\n ai.copy(sequenceS, block * 16);\n }\n\n const key = payload.getFPort() === 0 ? NwkSKey : AppSKey;\n if (!key || key.length !== 16) throw new Error(\"Expected a appropriate key with length 16\");\n\n const cipherstream_base64 = CryptoJS.AES.encrypt(\n CryptoJS.enc.Hex.parse(sequenceS.toString(\"hex\")),\n CryptoJS.enc.Hex.parse(key.toString(\"hex\")),\n {\n mode: CryptoJS.mode.ECB,\n iv: LORAIV,\n padding: CryptoJS.pad.NoPadding,\n }\n );\n\n const cipherstream = Buffer.from(cipherstream_base64.toString(), \"base64\");\n\n const plaintextPayload = Buffer.alloc(payload.FRMPayload.length);\n\n for (let i = 0; i < payload.FRMPayload.length; i++) {\n const Si = cipherstream.readUInt8(i);\n plaintextPayload.writeUInt8(Si ^ payload.FRMPayload.readUInt8(i), i);\n }\n\n return plaintextPayload;\n}\n\n// Check\nfunction decryptJoin(payload: LoraPacket, AppKey: Buffer): Buffer {\n if (!payload?.MACPayloadWithMIC) throw new Error(\"Expected parsed payload to be defined\");\n if (AppKey.length !== 16) throw new Error(\"Expected a appropriate key with length 16\");\n\n const cipherstream = CryptoJS.AES.decrypt(\n payload.MACPayloadWithMIC.toString(\"base64\"),\n CryptoJS.enc.Hex.parse(AppKey.toString(\"hex\")),\n {\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.NoPadding,\n }\n );\n return Buffer.from(cipherstream.toString(), \"hex\");\n}\n\nfunction decryptFOpts(payload: LoraPacket, NwkSEncKey: Buffer, fCntMSB32?: Buffer): Buffer {\n if (!fCntMSB32) fCntMSB32 = Buffer.alloc(2);\n\n if (!payload?.FOpts) throw new Error(\"Expected FOpts to be defined\");\n if (!payload?.DevAddr) throw new Error(\"Expected DevAddr to be defined\");\n if (NwkSEncKey.length !== 16) throw new Error(\"Expected a appropriate key with length 16\");\n if (!payload.FCnt) throw new Error(\"Expected FCnt to be defined\");\n\n const direction: Buffer = Buffer.alloc(1);\n let aFCntDown = false;\n\n if (payload.getDir() == \"up\") {\n direction.writeUInt8(0, 0);\n } else if (payload.getDir() == \"down\") {\n direction.writeUInt8(1, 0);\n if (payload.FPort != null && payload.getFPort() > 0) {\n aFCntDown = true;\n }\n } else {\n throw new Error(\"Decrypt error: expecting direction to be either 'up' or 'down'\");\n }\n\n // https://lora-alliance.org/wp-content/uploads/2020/11/00001.002.00001.001.cr-fcntdwn-usage-in-fopts-encryption-v2-r1.pdf\n const aBuffer = Buffer.concat([\n Buffer.alloc(1, 1),\n Buffer.alloc(3, 0),\n Buffer.alloc(1, aFCntDown ? 2 : 1),\n direction,\n reverseBuffer(payload.DevAddr),\n reverseBuffer(payload.FCnt),\n fCntMSB32,\n Buffer.alloc(1, 0),\n Buffer.alloc(1, 1),\n ]);\n\n const cipherstream_base64 = CryptoJS.AES.encrypt(\n CryptoJS.enc.Hex.parse(aBuffer.toString(\"hex\")),\n CryptoJS.enc.Hex.parse(NwkSEncKey.toString(\"hex\")),\n {\n mode: CryptoJS.mode.ECB,\n iv: LORAIV,\n padding: CryptoJS.pad.NoPadding,\n }\n );\n\n const cipherstream = Buffer.from(cipherstream_base64.toString(), \"base64\");\n\n const plaintextPayload = Buffer.alloc(payload.FOpts.length);\n\n for (let i = 0; i < payload.FOpts.length; i++) {\n plaintextPayload[i] = cipherstream[i] ^ payload.FOpts[i];\n }\n\n return plaintextPayload;\n}\n\nfunction generateKey(\n key: Buffer,\n AppNonce: Buffer,\n NetIdOrJoinEui: Buffer,\n DevNonce: Buffer,\n keyType: KeyType11 | KeyType10 | KeyTypeJS\n): Buffer {\n let keyNonceStr: string = keyType;\n keyNonceStr += reverseBuffer(AppNonce).toString(\"hex\");\n keyNonceStr += reverseBuffer(NetIdOrJoinEui).toString(\"hex\");\n keyNonceStr += reverseBuffer(DevNonce).toString(\"hex\");\n keyNonceStr = keyNonceStr.padEnd(32, \"0\");\n\n const keyNonce = Buffer.from(keyNonceStr, \"hex\");\n const nwkSKey_base64 = CryptoJS.AES.encrypt(\n CryptoJS.enc.Hex.parse(keyNonce.toString(\"hex\")),\n CryptoJS.enc.Hex.parse(key.toString(\"hex\")),\n {\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.NoPadding,\n }\n );\n return Buffer.from(nwkSKey_base64.toString(), \"base64\");\n}\n\nfunction generateSessionKeys(\n AppKey: Buffer,\n NetId: Buffer,\n AppNonce: Buffer,\n DevNonce: Buffer\n): { AppSKey: Buffer; NwkSKey: Buffer } {\n return generateSessionKeys10(AppKey, NetId, AppNonce, DevNonce);\n}\n\nfunction generateSessionKeys10(\n AppKey: Buffer,\n NetId: Buffer,\n AppNonce: Buffer,\n DevNonce: Buffer\n): { AppSKey: Buffer; NwkSKey: Buffer } {\n if (AppKey.length !== 16) throw new Error(\"Expected a AppKey with length 16\");\n if (NetId.length !== 3) throw new Error(\"Expected a NetId with length 3\");\n if (AppNonce.length !== 3) throw new Error(\"Expected a AppNonce with length 3\");\n if (DevNonce.length !== 2) throw new Error(\"Expected a DevNonce with length 2\");\n return {\n AppSKey: generateKey(AppKey, AppNonce, NetId, DevNonce, KeyType10.AppSKey),\n NwkSKey: generateKey(AppKey, AppNonce, NetId, DevNonce, KeyType10.NwkSKey),\n };\n}\n\nfunction generateSessionKeys11(\n AppKey: Buffer,\n NwkKey: Buffer,\n JoinEUI: Buffer,\n AppNonce: Buffer,\n DevNonce: Buffer\n): { AppSKey: Buffer; FNwkSIntKey: Buffer; SNwkSIntKey: Buffer; NwkSEncKey: Buffer } {\n if (AppKey.length !== 16) throw new Error(\"Expected a AppKey with length 16\");\n if (NwkKey.length !== 16) throw new Error(\"Expected a NwkKey with length 16\");\n if (AppNonce.length !== 3) throw new Error(\"Expected a AppNonce with length 3\");\n if (DevNonce.length !== 2) throw new Error(\"Expected a DevNonce with length 2\");\n return {\n AppSKey: generateKey(AppKey, AppNonce, JoinEUI, DevNonce, KeyType11.AppSKey),\n FNwkSIntKey: generateKey(NwkKey, AppNonce, JoinEUI, DevNonce, KeyType11.FNwkSIntKey),\n SNwkSIntKey: generateKey(NwkKey, AppNonce, JoinEUI, DevNonce, KeyType11.SNwkSIntKey),\n NwkSEncKey: generateKey(NwkKey, AppNonce, JoinEUI, DevNonce, KeyType11.NwkSEncKey),\n };\n}\n\nfunction generateJSKeys(NwkKey: Buffer, DevEui: Buffer): { JSIntKey: Buffer; JSEncKey: Buffer } {\n if (DevEui.length !== 8) throw new Error(\"Expected a DevEui with length 16\");\n if (NwkKey.length !== 16) throw new Error(\"Expected a NwkKey with length 16\");\n return {\n JSIntKey: generateKey(NwkKey, DevEui, Buffer.alloc(0), Buffer.alloc(0), KeyTypeJS.JSIntKey),\n JSEncKey: generateKey(NwkKey, DevEui, Buffer.alloc(0), Buffer.alloc(0), KeyTypeJS.JSEncKey),\n };\n}\n\nfunction encrypt(buffer: Buffer, key: Buffer): Buffer {\n // CHECK\n const ciphertext = CryptoJS.AES.encrypt(\n CryptoJS.enc.Hex.parse(buffer.toString(\"hex\")),\n CryptoJS.enc.Hex.parse(key.toString(\"hex\")),\n {\n mode: CryptoJS.mode.ECB,\n iv: LORAIV,\n padding: CryptoJS.pad.NoPadding,\n }\n ).ciphertext.toString(CryptoJS.enc.Hex);\n return Buffer.from(ciphertext, \"hex\");\n}\n\nfunction decryptJoinAccept(payload: LoraPacket, appKey: Buffer): Buffer {\n const payloadBuffer = payload.PHYPayload || Buffer.alloc(0);\n // Check\n const mhdr = payloadBuffer.slice(0, 1);\n const joinAccept = encrypt(payloadBuffer.slice(1), appKey);\n return Buffer.concat([mhdr, joinAccept]);\n}\n\n// Encrypt stream mixes in metadata blocks, as Ai =\n// 0x01\n// 0x00 0x00 0x00 0x00\n// direction-uplink/downlink [1]\n// DevAddr [4]\n// FCnt as 32-bit, lsb first [4]\n// 0x00\n// counter = i [1]\n\nfunction _metadataBlockAi(payload: LoraPacket, blockNumber: number, fCntMSB32?: Buffer): Buffer {\n if (!fCntMSB32) fCntMSB32 = Buffer.alloc(2);\n\n let direction;\n if (payload.getDir() == \"up\") {\n direction = Buffer.alloc(1, 0);\n } else if (payload.getDir() == \"down\") {\n direction = Buffer.alloc(1, 1);\n } else {\n throw new Error(\"Decrypt error: expecting direction to be either 'up' or 'down'\");\n }\n if (!payload.DevAddr) throw new Error(\"Decrypt error: DevAddr not defined'\");\n if (!payload.FCnt) throw new Error(\"Decrypt error: FCnt not defined'\");\n\n const aiBuffer = Buffer.concat([\n Buffer.from(\"0100000000\", \"hex\"),\n direction,\n reverseBuffer(payload.DevAddr),\n reverseBuffer(payload.FCnt),\n fCntMSB32,\n Buffer.alloc(1, 0),\n Buffer.alloc(1, blockNumber + 1),\n ]);\n\n return aiBuffer;\n}\n\nexport {\n encrypt,\n decrypt,\n decryptJoin,\n decryptFOpts,\n decryptJoinAccept,\n generateSessionKeys,\n generateSessionKeys11,\n generateSessionKeys10,\n generateJSKeys,\n};\n","import LoraPacket, { LorawanVersion } from \"./LoraPacket\";\nimport { reverseBuffer } from \"./util\";\n\nimport { AesCmac } from \"aes-cmac\";\nimport { Buffer } from \"buffer\";\n\n// calculate MIC from payload\nfunction calculateMIC(\n payload: LoraPacket,\n NwkSKey?: Buffer, //NwkSKey for DataUP/Down; SNwkSIntKey in data 1.1; SNwkSIntKey in Join 1.1\n AppKey?: Buffer, //AppSKey for DataUP/Down; FNwkSIntKey in data 1.1; JSIntKey in Join 1.1\n FCntMSBytes?: Buffer,\n ConfFCntDownTxDrTxCh?: Buffer\n): Buffer {\n let LWVersion: LorawanVersion = LorawanVersion.V1_0;\n if (payload.isJoinRequestMessage()) {\n if (AppKey && AppKey.length !== 16) throw new Error(\"Expected a AppKey with length 16\");\n if (!payload.MHDR) throw new Error(\"Expected MHDR to be defined\");\n if (!payload.AppEUI) throw new Error(\"Expected AppEUI to be defined\");\n if (!payload.DevEUI) throw new Error(\"Expected DevEUI to be defined\");\n if (!payload.DevNonce) throw new Error(\"Expected DevNonce to be defined\");\n if (!payload.MACPayload) throw new Error(\"Expected DevNonce to be defined\");\n\n // const msgLen = payload.MHDR.length + payload.AppEUI.length + payload.DevEUI.length + payload.DevNonce.length;\n\n // CMAC over MHDR | AppEUI | DevEUI | DevNonce\n // the seperate fields are not in little-endian format, use the concatenated field\n const cmacInput = Buffer.concat([payload.MHDR, payload.MACPayload]);\n\n // CMAC calculation (as RFC4493)\n let fullCmac = new AesCmac(AppKey).calculate(cmacInput);\n if (!(fullCmac instanceof Buffer)) fullCmac = Buffer.from(fullCmac);\n // only first 4 bytes of CMAC are used as MIC\n const MIC = fullCmac.slice(0, 4);\n\n return MIC;\n } else if (payload.isReJoinRequestMessage()) {\n if (payload.RejoinType[0] === 1 && (!AppKey || AppKey.length !== 16))\n throw new Error(\"Expected a JSIntKey with length 16\");\n if ((payload.RejoinType[0] === 0 || payload.RejoinType[0] === 2) && (!NwkSKey || NwkSKey.length !== 16))\n throw new Error(\"Expected a SNwkSIntKey with length 16\");\n if (AppKey && AppKey.length !== 16) throw new Error(\"Expected a AppKey with length 16\");\n if (!payload.MHDR) throw new Error(\"Expected MHDR to be defined\");\n if (!payload.RejoinType) throw new Error(\"Expected RejoinType to be defined\");\n if (!payload.NetID && !payload.AppEUI) throw new Error(\"Expected NetID or JoinEUI to be defined\");\n if (!payload.DevEUI) throw new Error(\"Expected DevEUI to be defined\");\n if (!payload.RJCount0 && !payload.RJCount1) throw new Error(\"Expected RJCount0 or RJCount1 to be defined\");\n // const msgLen = payload.MHDR.length + payload.AppEUI.length + payload.DevEUI.length + payload.DevNonce.length;\n\n // CMAC over MHDR | AppEUI | DevEUI | DevNonce\n // the seperate fields are not in little-endian format, use the concatenated field\n const cmacInput = Buffer.concat([payload.MHDR, payload.MACPayload]);\n\n // CMAC calculation (as RFC4493)\n const calcKey = payload.RejoinType[0] === 1 ? AppKey : NwkSKey;\n let fullCmac = new AesCmac(calcKey).calculate(cmacInput);\n if (!(fullCmac instanceof Buffer)) fullCmac = Buffer.from(fullCmac);\n // only first 4 bytes of CMAC are used as MIC\n const MIC = fullCmac.slice(0, 4);\n\n return MIC;\n } else if (payload.isJoinAcceptMessage()) {\n if (AppKey && AppKey.length !== 16) throw new Error(\"Expected a AppKey with length 16\");\n if (!payload.MHDR) throw new Error(\"Expected MHDR to be defined\");\n if (!payload.AppNonce) throw new Error(\"Expected AppNonce to be defined\");\n if (!payload.NetID) throw new Error(\"Expected NetID to be defined\");\n if (!payload.DevAddr) throw new Error(\"Expected DevAddr to be defined\");\n if (!payload.DLSettings) throw new Error(\"Expected DLSettings to be defined\");\n if (!payload.RxDelay) throw new Error(\"Expected RxDelay to be defined\");\n if (!payload.CFList) throw new Error(\"Expected CFList to be defined\");\n if (!payload.MACPayload) throw new Error(\"Expected MACPayload to be defined\");\n if (payload.getDLSettingsOptNeg()) LWVersion = LorawanVersion.V1_1;\n\n let cmacInput: Buffer = Buffer.alloc(0);\n\n let cmacKey: Buffer = AppKey;\n if (LWVersion === LorawanVersion.V1_0) {\n // const msgLen =\n // payload.MHDR.length +\n // payload.AppNonce.length +\n // payload.NetID.length +\n // payload.DevAddr.length +\n // payload.DLSettings.length +\n // payload.RxDelay.length +\n // payload.CFList.length;\n\n // CMAC over MHDR | AppNonce | NetID | DevAddr | DLSettings | RxDelay | CFList\n // the seperate fields are not encrypted, use the encrypted concatenated field\n\n cmacInput = Buffer.concat([payload.MHDR, payload.MACPayload]);\n } else if (LWVersion === LorawanVersion.V1_1) {\n if (!payload.JoinReqType) throw new Error(\"Expected JoinReqType to be defined\");\n if (!payload.JoinEUI) throw new Error(\"Expected JoinEUI to be defined\");\n if (!payload.DevNonce) throw new Error(\"Expected DevNonce to be defined\");\n if (!NwkSKey || NwkSKey.length !== 16) throw new Error(\"Expected a NwkSKey with length 16\");\n cmacKey = NwkSKey;\n cmacInput = Buffer.concat([\n payload.JoinReqType,\n reverseBuffer(payload.JoinEUI),\n reverseBuffer(payload.DevNonce),\n payload.MHDR,\n payload.MACPayload,\n ]);\n }\n\n // CMAC calculation (as RFC4493)\n let fullCmac = new AesCmac(cmacKey).calculate(cmacInput);\n if (!(fullCmac instanceof Buffer)) fullCmac = Buffer.from(fullCmac);\n // only first 4 bytes of CMAC are used as MIC\n const MIC = fullCmac.slice(0, 4);\n\n return MIC;\n } else {\n // ConfFCntDownTxDrTxCh = ConfFCntDownTxDrTxCh || Buffer.alloc(2, 0);\n if (NwkSKey && NwkSKey.length !== 16) throw new Error(\"Expected a NwkSKey with length 16\");\n if (payload.DevAddr && payload.DevAddr.length !== 4) throw new Error(\"Expected a payload DevAddr with length 4\");\n if (payload.FCnt && payload.FCnt.length !== 2) throw new Error(\"Expected a payload FCnt with length 2\");\n if (!payload.MHDR) throw new Error(\"Expected MHDR to be defined\");\n if (!payload.DevAddr) throw new Error(\"Expected DevAddr to be defined\");\n if (!payload.FCnt) throw new Error(\"Expected FCnt to be defined\");\n if (!payload.MACPayload) throw new Error(\"Expected MACPayload to be defined\");\n if (!FCntMSBytes) {\n FCntMSBytes = Buffer.from(\"0000\", \"hex\");\n }\n\n if (ConfFCntDownTxDrTxCh) {\n if (!AppKey || AppKey?.length !== 16) throw new Error(\"Expected a FNwkSIntKey with length 16\");\n LWVersion = LorawanVersion.V1_1;\n }\n\n // if (NwkSKey && AppKey) {\n // LWVersion = LorawanVersion.V1_1;\n // }\n\n let dir;\n const isUplinkAndIs1_1 = payload.getDir() === \"up\" && LWVersion === LorawanVersion.V1_1;\n const isDownlinkAndIs1_1 = payload.getDir() === \"down\" && LWVersion === LorawanVersion.V1_1;\n\n if (payload.getDir() == \"up\") {\n dir = Buffer.alloc(1, 0);\n } else if (payload.getDir() == \"down\") {\n dir = Buffer.alloc(1, 1);\n if (!ConfFCntDownTxDrTxCh) {\n ConfFCntDownTxDrTxCh = Buffer.alloc(4, 0);\n } else if (ConfFCntDownTxDrTxCh && ConfFCntDownTxDrTxCh?.length !== 2) {\n throw new Error(\"Expected a ConfFCntDown with length 2\");\n } else {\n ConfFCntDownTxDrTxCh = Buffer.concat([ConfFCntDownTxDrTxCh, Buffer.alloc(2, 0)]);\n }\n } else {\n throw new Error(\"expecting direction to be either 'up' or 'down'\");\n }\n\n if (isUplinkAndIs1_1) {\n if (!ConfFCntDownTxDrTxCh || ConfFCntDownTxDrTxCh?.length !== 4) {\n throw new Error(\"Expected a ConfFCntDownTxDrTxCh with length 4 Expected ( ConfFCnt | TxDr | TxCh)\");\n }\n\n if (payload.getFCtrlACK() || (isUplinkAndIs1_1 && payload.getFPort() === 0)) {\n ConfFCntDownTxDrTxCh.writeUInt16BE(ConfFCntDownTxDrTxCh.readUInt16LE(0));\n } else {\n ConfFCntDownTxDrTxCh.writeUInt16BE(0);\n }\n }\n\n const msgLen = payload.MHDR.length + payload.MACPayload.length;\n\n const B0 = Buffer.concat([\n Buffer.from([0x49]), // as spec\n isDownlinkAndIs1_1 ? ConfFCntDownTxDrTxCh : Buffer.alloc(4, 0), // LoraWan Spec 1.1, pag. 27\n dir, // direction ('Dir')\n reverseBuffer(payload.DevAddr),\n reverseBuffer(payload.FCnt),\n FCntMSBytes, // upper 2 bytes of FCnt (zeroes)\n Buffer.alloc(1, 0), // 0x00\n Buffer.alloc(1, msgLen), // len(msg)\n ]);\n\n // CMAC over B0 | MHDR | MACPayload\n const cmacInput = Buffer.concat([B0, payload.MHDR, payload.MACPayload]);\n\n // CMAC calculation (as RFC4493)\n let key = NwkSKey;\n if (isDownlinkAndIs1_1) key = AppKey;\n let fullCmac = new AesCmac(key).calculate(cmacInput);\n if (!(fullCmac instanceof Buffer)) fullCmac = Buffer.from(fullCmac);\n\n // only first 4 bytes of CMAC are used as MIC\n const MIC = fullCmac.slice(0, 4);\n\n if (isUplinkAndIs1_1) {\n const B1 = Buffer.concat([\n Buffer.from([0x49]), // as spec\n ConfFCntDownTxDrTxCh, // LoraWan Spec 1.1, pag. 27\n dir, // direction ('Dir')\n reverseBuffer(payload.DevAddr),\n reverseBuffer(payload.FCnt),\n FCntMSBytes, // upper 2 bytes of FCnt (zeroes)\n Buffer.alloc(1, 0), // 0x00\n Buffer.alloc(1, msgLen), // len(msg)\n ]);\n\n const cmacSInput = Buffer.concat([B1, payload.MHDR, payload.MACPayload]);\n let fullCmacS = new AesCmac(AppKey).calculate(cmacSInput);\n if (!(fullCmacS instanceof Buffer)) fullCmacS = Buffer.from(fullCmacS);\n\n // only first 2 bytes of CMAC and CMACS are used as MIC\n const MICS = fullCmacS.slice(0, 4);\n\n return Buffer.concat([MICS.slice(0, 2), MIC.slice(0, 2)]);\n }\n\n return MIC;\n }\n}\n\n// verify is just calculate & compare\nfunction verifyMIC(\n payload: LoraPacket,\n NwkSKey?: Buffer,\n AppKey?: Buffer,\n FCntMSBytes?: Buffer,\n ConfFCntDownTxDrTxCh?: Buffer\n): boolean {\n if (payload.MIC && payload.MIC.length !== 4) throw new Error(\"Expected a payload payload.MIC with length 4\");\n\n const calculated = calculateMIC(payload, NwkSKey, AppKey, FCntMSBytes, ConfFCntDownTxDrTxCh);\n if (!payload.MIC) return false;\n return Buffer.compare(payload.MIC, calculated) === 0;\n}\n\n// calculate MIC & store\nfunction recalculateMIC(\n payload: LoraPacket,\n NwkSKey?: Buffer,\n AppKey?: Buffer,\n FCntMSBytes?: Buffer,\n ConfFCntDownTxDrTxCh?: Buffer\n): void {\n const calculated = calculateMIC(payload, NwkSKey, AppKey, FCntMSBytes, ConfFCntDownTxDrTxCh);\n payload.MIC = calculated;\n if (!payload.MHDR) throw new Error(\"Missing MHDR\");\n if (!payload.MACPayload) throw new Error(\"Missing MACPayload\");\n if (!payload.MIC) throw new Error(\"Missing MIC\");\n if (!payload.MHDR) throw new Error(\"Missing MHDR\");\n payload.PHYPayload = Buffer.concat([payload.MHDR, payload.MACPayload, payload.MIC]);\n payload.MACPayloadWithMIC = payload.PHYPayload.slice(payload.MHDR.length, payload.PHYPayload.length);\n}\n\nexport { calculateMIC, verifyMIC, recalculateMIC };\n","export function reverseBuffer(buffer: Buffer): Buffer {\n const reversedBuffer = Buffer.from(buffer);\n return reversedBuffer.reverse();\n}\n\nexport function asHexString(buffer: Buffer) {\n return buffer.length > 0 ? \"0x\" + buffer.toString(\"hex\").toUpperCase() : \"\";\n}\n\nexport function asBinaryString(number: number) {\n return \"b\" + number.toString(2);\n}","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","/* @license\nPapa Parse\nv5.4.1\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n!function(e,t){\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()}(this,function s(){\"use strict\";var f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=f.IS_PAPA_WORKER||!1,a={},u=0,b={parse:function(e,t){var r=(t=t||{}).dynamicTyping||!1;J(r)&&(t.dynamicTypingFunction=r,r={});if(t.dynamicTyping=r,t.transform=!!J(t.transform)&&t.transform,t.worker&&b.WORKERS_SUPPORTED){var i=function(){if(!b.WORKERS_SUPPORTED)return!1;var e=(r=f.URL||f.webkitURL||null,i=s.toString(),b.BLOB_URL||(b.BLOB_URL=r.createObjectURL(new Blob([\"var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; \",\"(\",i,\")();\"],{type:\"text/javascript\"})))),t=new f.Worker(e);var r,i;return t.onmessage=_,t.id=u++,a[t.id]=t}();return i.userStep=t.step,i.userChunk=t.chunk,i.userComplete=t.complete,i.userError=t.error,t.step=J(t.step),t.chunk=J(t.chunk),t.complete=J(t.complete),t.error=J(t.error),delete t.worker,void i.postMessage({input:e,config:t,workerId:i.id})}var n=null;b.NODE_STREAM_INPUT,\"string\"==typeof e?(e=function(e){if(65279===e.charCodeAt(0))return e.slice(1);return e}(e),n=t.download?new l(t):new p(t)):!0===e.readable&&J(e.read)&&J(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,_=!0,m=\",\",y=\"\\r\\n\",s='\"',a=s+s,r=!1,i=null,o=!1;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter);(\"boolean\"==typeof t.quotes||\"function\"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes);\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(r=t.skipEmptyLines);\"string\"==typeof t.newline&&(y=t.newline);\"string\"==typeof t.quoteChar&&(s=t.quoteChar);\"boolean\"==typeof t.header&&(_=t.header);if(Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");i=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s);(\"boolean\"==typeof t.escapeFormulae||t.escapeFormulae instanceof RegExp)&&(o=t.escapeFormulae instanceof RegExp?t.escapeFormulae:/^[=+\\-@\\t\\r].*$/)}();var u=new RegExp(Q(s),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return h(null,e,r);if(\"object\"==typeof e[0])return h(i||Object.keys(e[0]),e,r)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||i),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:\"object\"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),h(e.fields||[],e.data||[],r);throw new Error(\"Unable to serialize unrecognized input\");function h(e,t,r){var i=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(J(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!J(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(e){J(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1})}}function l(e){var i;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),h.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(i=new XMLHttpRequest,this._config.withCredentials&&(i.withCredentials=this._config.withCredentials),n||(i.onload=v(this._chunkLoaded,this),i.onerror=v(this._chunkError,this)),i.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)i.setRequestHeader(t,e[t])}if(this._config.chunkSize){var r=this._start+this._config.chunkSize-1;i.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+r)}try{i.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===i.status&&this._chunkError()}},this._chunkLoaded=function(){4===i.readyState&&(i.status<200||400<=i.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:i.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substring(t.lastIndexOf(\"/\")+1))}(i),this.parseChunk(i.responseText)))},this._chunkError=function(e){var t=i.statusText||e;this._sendError(new Error(t))}}function c(e){var i,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),h.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((i=new FileReader).onload=v(this._chunkLoaded,this),i.onerror=v(this._chunkError,this)):i=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(i.error)}}function p(e){var r;h.call(this,e=e||{}),this.stream=function(e){return r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=r.substring(0,t),r=r.substring(t)):(e=r,r=\"\"),this._finished=!r,this.parseChunk(e)}}}function g(e){h.call(this,e=e||{});var t=[],r=!0,i=!1;this.pause=function(){h.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){h.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){i&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):r=!0},this._streamData=v(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),r&&(r=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=v(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=v(function(){this._streamCleanUp(),i=!0,this._streamData(\"\")},this),this._streamCleanUp=v(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function r(m){var a,o,u,i=Math.pow(2,53),n=-i,s=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)([eE][-+]?\\d+)?\\s*$/,h=/^((\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)))$/,t=this,r=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(J(m.step)){var p=m.step;m.step=function(e){if(c=e,_())g();else{if(g(),0===c.data.length)return;r+=e.data.length,m.preview&&r>m.preview?o.abort():(c.data=c.data[0],p(c,t))}}}function y(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){return c&&u&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+b.DefaultDelimiter+\"'\"),u=!1),m.skipEmptyLines&&(c.data=c.data.filter(function(e){return!y(e)})),_()&&function(){if(!c)return;function e(e,t){J(m.transformHeader)&&(e=m.transformHeader(e,t)),l.push(e)}if(Array.isArray(c.data[0])){for(var t=0;_()&&t=l.length?\"__parsed_extra\":l[r]),m.transform&&(s=m.transform(s,n)),s=v(n,s),\"__parsed_extra\"===n?(i[n]=i[n]||[],i[n].push(s)):i[n]=s}return m.header&&(r>l.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+l.length+\" fields but parsed \"+r,f+t):r=i.length/2?\"\\r\\n\":\"\\r\"}(e,i)),u=!1,m.delimiter)J(m.delimiter)&&(m.delimiter=m.delimiter(e),c.meta.delimiter=m.delimiter);else{var n=function(e,t,r,i,n){var s,a,o,u;n=n||[\",\",\"\\t\",\"|\",\";\",b.RECORD_SEP,b.UNIT_SEP];for(var h=0;h=N)return L(!0)}else for(S=W,W++;;){if(-1===(S=i.indexOf(z,S+1)))return r||h.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:u.length,index:W}),T();if(S===n-1)return T(i.substring(W,S).replace(C,z));if(z!==K||i[S+1]!==K){if(z===K||0===S||i[S-1]!==K){-1!==w&&w=N)return L(!0);break}h.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:u.length,index:W}),S++}}else S++}return T();function I(e){u.push(e),d=W}function A(e){var t=0;if(-1!==e){var r=i.substring(S+1,e);r&&\"\"===r.trim()&&(t=r.length)}return t}function T(e){return r||(void 0===e&&(e=i.substring(W)),f.push(e),W=n,I(f),o&&F()),L()}function D(e){W=e,I(f),f=[],R=i.indexOf(P,W)}function L(e){return{data:u,errors:h,meta:{delimiter:M,linebreak:P,aborted:H,truncated:!!e,cursor:d+(t||0)}}}function F(){q(L()),u=[],h=[]}},this.abort=function(){H=!0},this.getCharIndex=function(){return W}}function _(e){var t=e.data,r=a[t.workerId],i=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){i=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(J(r.userStep)){for(var s=0;s= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n 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':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","var map = {\n\t\"./BREEZE-v1.1Uplink.js\": 4134,\n\t\"./CHICKADEE-v2.3Uplink.js\": 6052,\n\t\"./COMFORT-VIVID-v2.2Uplink.js\": 1669,\n\t\"./COMFORT-VIVID-v3.1Uplink.js\": 1839,\n\t\"./COMFORT-VIVID-v4.0Uplink.js\": 4839,\n\t\"./COMFORT-VIVID-v4.2Uplink.js\": 8150,\n\t\"./COMFORT-VIVID-v4.3Uplink.js\": 6953,\n\t\"./Industrial-Transceiver-1wire-v1.11Uplink.js\": 9165,\n\t\"./Industrial-Transceiver-v2.1Uplink.js\": 5347,\n\t\"./KIWI-CLOVER-v2.0Uplink.js\": 2451,\n\t\"./MEMO-(demo)Uplink.js\": 3200,\n\t\"./ORCA-v0.14Uplink.js\": 4871,\n\t\"./ORCA-v1.0Uplink.js\": 3825,\n\t\"./SEAL-v1Uplink.js\": 9897,\n\t\"./SPARROW-PELICAN-v2.8Uplink.js\": 7044,\n\t\"./SPARROW-PELICAN-v3.1Uplink.js\": 7845,\n\t\"./STORK-v2.0Uplink.js\": 1315,\n\t\"./STORK-v2.1Uplink.js\": 7886,\n\t\"./STORK-v2.2Uplink.js\": 7321,\n\t\"./TUNDRA-v2.1Uplink.js\": 5904,\n\t\"./_default-decoder.js\": 7463,\n\t\"./eBeat-v1.0Uplink.js\": 7099,\n\t\"./eBeat-v1.xUplink.js\": 3338,\n\t\"./eDoctor-v0.15Uplink.js\": 5358,\n\t\"./eDoctor-v1.2Uplink.js\": 981,\n\t\"./eDoctor-v1Uplink.js\": 3604\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 9969;","var map = {\n\t\"./BREEZE-v1.1Downlink.js\": 658,\n\t\"./CHICKADEE-v2.3Downlink.js\": 7865,\n\t\"./COMFORT-VIVID-v2.2Downlink.js\": 6149,\n\t\"./COMFORT-VIVID-v3.1Downlink.js\": 6881,\n\t\"./COMFORT-VIVID-v4.0Downlink.js\": 5301,\n\t\"./COMFORT-VIVID-v4.2Downlink.js\": 3805,\n\t\"./COMFORT-VIVID-v4.3Downlink.js\": 5837,\n\t\"./Industrial-Transceiver-1wire-v1.11Downlink.js\": 5147,\n\t\"./Industrial-Transceiver-v2.1Downlink.js\": 3108,\n\t\"./KIWI-CLOVER-v2.0Downlink.js\": 126,\n\t\"./MEMO-(demo)Downlink.js\": 8574,\n\t\"./ORCA-v0.14Downlink.js\": 4198,\n\t\"./ORCA-v1.0Downlink.js\": 5999,\n\t\"./SEAL-v1Downlink.js\": 1189,\n\t\"./SPARROW-PELICAN-v2.8Downlink.js\": 4856,\n\t\"./SPARROW-PELICAN-v3.1Downlink.js\": 7700,\n\t\"./STORK-v2.0Downlink.js\": 9902,\n\t\"./STORK-v2.1Downlink.js\": 9095,\n\t\"./STORK-v2.2Downlink.js\": 1610,\n\t\"./TUNDRA-v2.1Downlink.js\": 2562,\n\t\"./eBeat-v1.0Downlink.js\": 8578,\n\t\"./eBeat-v1.xDownlink.js\": 7671,\n\t\"./eDoctor-v0.15Downlink.js\": 3063,\n\t\"./eDoctor-v1.2Downlink.js\": 5903,\n\t\"./eDoctor-v1Downlink.js\": 7964\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 3163;","var map = {\n\t\"./BREEZE-v1.1.json\": 2925,\n\t\"./CHICKADEE-v2.3.json\": 8622,\n\t\"./COMFORT-VIVID-v2.2.json\": 435,\n\t\"./COMFORT-VIVID-v3.1.json\": 2592,\n\t\"./COMFORT-VIVID-v4.0.json\": 7003,\n\t\"./COMFORT-VIVID-v4.2.json\": 8928,\n\t\"./COMFORT-VIVID-v4.3.json\": 13,\n\t\"./Industrial-Transceiver-1wire-v1.11.json\": 2564,\n\t\"./Industrial-Transceiver-v2.1.json\": 9894,\n\t\"./KIWI-CLOVER-v2.0.json\": 629,\n\t\"./MEMO-(demo).json\": 9002,\n\t\"./ORCA-v0.14.json\": 8971,\n\t\"./ORCA-v1.0.json\": 2598,\n\t\"./SEAL-v1.json\": 5141,\n\t\"./SPARROW-PELICAN-v2.8.json\": 561,\n\t\"./SPARROW-PELICAN-v3.1.json\": 3252,\n\t\"./STORK-v2.0.json\": 7320,\n\t\"./STORK-v2.1.json\": 2158,\n\t\"./STORK-v2.2.json\": 4024,\n\t\"./TUNDRA-v2.1.json\": 5176,\n\t\"./eBeat-v1.0.json\": 3566,\n\t\"./eBeat-v1.x.json\": 1843,\n\t\"./eDoctor-v0.15.json\": 5451,\n\t\"./eDoctor-v1.2.json\": 9230,\n\t\"./eDoctor-v1.json\": 575\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 3179;","var map = {\n\t\"./sensordecoders/BREEZE-v1.1Uplink\": 4134,\n\t\"./sensordecoders/BREEZE-v1.1Uplink.js\": 4134,\n\t\"./sensordecoders/CHICKADEE-v2.3Uplink\": 6052,\n\t\"./sensordecoders/CHICKADEE-v2.3Uplink.js\": 6052,\n\t\"./sensordecoders/COMFORT-VIVID-v2.2Uplink\": 1669,\n\t\"./sensordecoders/COMFORT-VIVID-v2.2Uplink.js\": 1669,\n\t\"./sensordecoders/COMFORT-VIVID-v3.1Uplink\": 1839,\n\t\"./sensordecoders/COMFORT-VIVID-v3.1Uplink.js\": 1839,\n\t\"./sensordecoders/COMFORT-VIVID-v4.0Uplink\": 4839,\n\t\"./sensordecoders/COMFORT-VIVID-v4.0Uplink.js\": 4839,\n\t\"./sensordecoders/COMFORT-VIVID-v4.2Uplink\": 8150,\n\t\"./sensordecoders/COMFORT-VIVID-v4.2Uplink.js\": 8150,\n\t\"./sensordecoders/COMFORT-VIVID-v4.3Uplink\": 6953,\n\t\"./sensordecoders/COMFORT-VIVID-v4.3Uplink.js\": 6953,\n\t\"./sensordecoders/Industrial-Transceiver-1wire-v1.11Uplink\": 9165,\n\t\"./sensordecoders/Industrial-Transceiver-1wire-v1.11Uplink.js\": 9165,\n\t\"./sensordecoders/Industrial-Transceiver-v2.1Uplink\": 5347,\n\t\"./sensordecoders/Industrial-Transceiver-v2.1Uplink.js\": 5347,\n\t\"./sensordecoders/KIWI-CLOVER-v2.0Uplink\": 2451,\n\t\"./sensordecoders/KIWI-CLOVER-v2.0Uplink.js\": 2451,\n\t\"./sensordecoders/MEMO-(demo)Uplink\": 3200,\n\t\"./sensordecoders/MEMO-(demo)Uplink.js\": 3200,\n\t\"./sensordecoders/ORCA-v0.14Uplink\": 4871,\n\t\"./sensordecoders/ORCA-v0.14Uplink.js\": 4871,\n\t\"./sensordecoders/ORCA-v1.0Uplink\": 3825,\n\t\"./sensordecoders/ORCA-v1.0Uplink.js\": 3825,\n\t\"./sensordecoders/SEAL-v1Uplink\": 9897,\n\t\"./sensordecoders/SEAL-v1Uplink.js\": 9897,\n\t\"./sensordecoders/SPARROW-PELICAN-v2.8Uplink\": 7044,\n\t\"./sensordecoders/SPARROW-PELICAN-v2.8Uplink.js\": 7044,\n\t\"./sensordecoders/SPARROW-PELICAN-v3.1Uplink\": 7845,\n\t\"./sensordecoders/SPARROW-PELICAN-v3.1Uplink.js\": 7845,\n\t\"./sensordecoders/STORK-v2.0Uplink\": 1315,\n\t\"./sensordecoders/STORK-v2.0Uplink.js\": 1315,\n\t\"./sensordecoders/STORK-v2.1Uplink\": 7886,\n\t\"./sensordecoders/STORK-v2.1Uplink.js\": 7886,\n\t\"./sensordecoders/STORK-v2.2Uplink\": 7321,\n\t\"./sensordecoders/STORK-v2.2Uplink.js\": 7321,\n\t\"./sensordecoders/TUNDRA-v2.1Uplink\": 5904,\n\t\"./sensordecoders/TUNDRA-v2.1Uplink.js\": 5904,\n\t\"./sensordecoders/_default-decoder\": 7463,\n\t\"./sensordecoders/_default-decoder.js\": 7463,\n\t\"./sensordecoders/eBeat-v1.0Uplink\": 7099,\n\t\"./sensordecoders/eBeat-v1.0Uplink.js\": 7099,\n\t\"./sensordecoders/eBeat-v1.xUplink\": 3338,\n\t\"./sensordecoders/eBeat-v1.xUplink.js\": 3338,\n\t\"./sensordecoders/eDoctor-v0.15Uplink\": 5358,\n\t\"./sensordecoders/eDoctor-v0.15Uplink.js\": 5358,\n\t\"./sensordecoders/eDoctor-v1.2Uplink\": 981,\n\t\"./sensordecoders/eDoctor-v1.2Uplink.js\": 981,\n\t\"./sensordecoders/eDoctor-v1Uplink\": 3604,\n\t\"./sensordecoders/eDoctor-v1Uplink.js\": 3604\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 804;","var map = {\n\t\"./sensorencoders/BREEZE-v1.1Downlink\": 658,\n\t\"./sensorencoders/BREEZE-v1.1Downlink.js\": 658,\n\t\"./sensorencoders/CHICKADEE-v2.3Downlink\": 7865,\n\t\"./sensorencoders/CHICKADEE-v2.3Downlink.js\": 7865,\n\t\"./sensorencoders/COMFORT-VIVID-v2.2Downlink\": 6149,\n\t\"./sensorencoders/COMFORT-VIVID-v2.2Downlink.js\": 6149,\n\t\"./sensorencoders/COMFORT-VIVID-v3.1Downlink\": 6881,\n\t\"./sensorencoders/COMFORT-VIVID-v3.1Downlink.js\": 6881,\n\t\"./sensorencoders/COMFORT-VIVID-v4.0Downlink\": 5301,\n\t\"./sensorencoders/COMFORT-VIVID-v4.0Downlink.js\": 5301,\n\t\"./sensorencoders/COMFORT-VIVID-v4.2Downlink\": 3805,\n\t\"./sensorencoders/COMFORT-VIVID-v4.2Downlink.js\": 3805,\n\t\"./sensorencoders/COMFORT-VIVID-v4.3Downlink\": 5837,\n\t\"./sensorencoders/COMFORT-VIVID-v4.3Downlink.js\": 5837,\n\t\"./sensorencoders/Industrial-Transceiver-1wire-v1.11Downlink\": 5147,\n\t\"./sensorencoders/Industrial-Transceiver-1wire-v1.11Downlink.js\": 5147,\n\t\"./sensorencoders/Industrial-Transceiver-v2.1Downlink\": 3108,\n\t\"./sensorencoders/Industrial-Transceiver-v2.1Downlink.js\": 3108,\n\t\"./sensorencoders/KIWI-CLOVER-v2.0Downlink\": 126,\n\t\"./sensorencoders/KIWI-CLOVER-v2.0Downlink.js\": 126,\n\t\"./sensorencoders/MEMO-(demo)Downlink\": 8574,\n\t\"./sensorencoders/MEMO-(demo)Downlink.js\": 8574,\n\t\"./sensorencoders/ORCA-v0.14Downlink\": 4198,\n\t\"./sensorencoders/ORCA-v0.14Downlink.js\": 4198,\n\t\"./sensorencoders/ORCA-v1.0Downlink\": 5999,\n\t\"./sensorencoders/ORCA-v1.0Downlink.js\": 5999,\n\t\"./sensorencoders/SEAL-v1Downlink\": 1189,\n\t\"./sensorencoders/SEAL-v1Downlink.js\": 1189,\n\t\"./sensorencoders/SPARROW-PELICAN-v2.8Downlink\": 4856,\n\t\"./sensorencoders/SPARROW-PELICAN-v2.8Downlink.js\": 4856,\n\t\"./sensorencoders/SPARROW-PELICAN-v3.1Downlink\": 7700,\n\t\"./sensorencoders/SPARROW-PELICAN-v3.1Downlink.js\": 7700,\n\t\"./sensorencoders/STORK-v2.0Downlink\": 9902,\n\t\"./sensorencoders/STORK-v2.0Downlink.js\": 9902,\n\t\"./sensorencoders/STORK-v2.1Downlink\": 9095,\n\t\"./sensorencoders/STORK-v2.1Downlink.js\": 9095,\n\t\"./sensorencoders/STORK-v2.2Downlink\": 1610,\n\t\"./sensorencoders/STORK-v2.2Downlink.js\": 1610,\n\t\"./sensorencoders/TUNDRA-v2.1Downlink\": 2562,\n\t\"./sensorencoders/TUNDRA-v2.1Downlink.js\": 2562,\n\t\"./sensorencoders/eBeat-v1.0Downlink\": 8578,\n\t\"./sensorencoders/eBeat-v1.0Downlink.js\": 8578,\n\t\"./sensorencoders/eBeat-v1.xDownlink\": 7671,\n\t\"./sensorencoders/eBeat-v1.xDownlink.js\": 7671,\n\t\"./sensorencoders/eDoctor-v0.15Downlink\": 3063,\n\t\"./sensorencoders/eDoctor-v0.15Downlink.js\": 3063,\n\t\"./sensorencoders/eDoctor-v1.2Downlink\": 5903,\n\t\"./sensorencoders/eDoctor-v1.2Downlink.js\": 5903,\n\t\"./sensorencoders/eDoctor-v1Downlink\": 7964,\n\t\"./sensorencoders/eDoctor-v1Downlink.js\": 7964\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 8950;","var map = {\n\t\"./sensormodels/BREEZE-v1.1\": 2925,\n\t\"./sensormodels/BREEZE-v1.1.json\": 2925,\n\t\"./sensormodels/CHICKADEE-v2.3\": 8622,\n\t\"./sensormodels/CHICKADEE-v2.3.json\": 8622,\n\t\"./sensormodels/COMFORT-VIVID-v2.2\": 435,\n\t\"./sensormodels/COMFORT-VIVID-v2.2.json\": 435,\n\t\"./sensormodels/COMFORT-VIVID-v3.1\": 2592,\n\t\"./sensormodels/COMFORT-VIVID-v3.1.json\": 2592,\n\t\"./sensormodels/COMFORT-VIVID-v4.0\": 7003,\n\t\"./sensormodels/COMFORT-VIVID-v4.0.json\": 7003,\n\t\"./sensormodels/COMFORT-VIVID-v4.2\": 8928,\n\t\"./sensormodels/COMFORT-VIVID-v4.2.json\": 8928,\n\t\"./sensormodels/COMFORT-VIVID-v4.3\": 13,\n\t\"./sensormodels/COMFORT-VIVID-v4.3.json\": 13,\n\t\"./sensormodels/Industrial-Transceiver-1wire-v1.11\": 2564,\n\t\"./sensormodels/Industrial-Transceiver-1wire-v1.11.json\": 2564,\n\t\"./sensormodels/Industrial-Transceiver-v2.1\": 9894,\n\t\"./sensormodels/Industrial-Transceiver-v2.1.json\": 9894,\n\t\"./sensormodels/KIWI-CLOVER-v2.0\": 629,\n\t\"./sensormodels/KIWI-CLOVER-v2.0.json\": 629,\n\t\"./sensormodels/MEMO-(demo)\": 9002,\n\t\"./sensormodels/MEMO-(demo).json\": 9002,\n\t\"./sensormodels/ORCA-v0.14\": 8971,\n\t\"./sensormodels/ORCA-v0.14.json\": 8971,\n\t\"./sensormodels/ORCA-v1.0\": 2598,\n\t\"./sensormodels/ORCA-v1.0.json\": 2598,\n\t\"./sensormodels/SEAL-v1\": 5141,\n\t\"./sensormodels/SEAL-v1.json\": 5141,\n\t\"./sensormodels/SPARROW-PELICAN-v2.8\": 561,\n\t\"./sensormodels/SPARROW-PELICAN-v2.8.json\": 561,\n\t\"./sensormodels/SPARROW-PELICAN-v3.1\": 3252,\n\t\"./sensormodels/SPARROW-PELICAN-v3.1.json\": 3252,\n\t\"./sensormodels/STORK-v2.0\": 7320,\n\t\"./sensormodels/STORK-v2.0.json\": 7320,\n\t\"./sensormodels/STORK-v2.1\": 2158,\n\t\"./sensormodels/STORK-v2.1.json\": 2158,\n\t\"./sensormodels/STORK-v2.2\": 4024,\n\t\"./sensormodels/STORK-v2.2.json\": 4024,\n\t\"./sensormodels/TUNDRA-v2.1\": 5176,\n\t\"./sensormodels/TUNDRA-v2.1.json\": 5176,\n\t\"./sensormodels/eBeat-v1.0\": 3566,\n\t\"./sensormodels/eBeat-v1.0.json\": 3566,\n\t\"./sensormodels/eBeat-v1.x\": 1843,\n\t\"./sensormodels/eBeat-v1.x.json\": 1843,\n\t\"./sensormodels/eDoctor-v0.15\": 5451,\n\t\"./sensormodels/eDoctor-v0.15.json\": 5451,\n\t\"./sensormodels/eDoctor-v1\": 575,\n\t\"./sensormodels/eDoctor-v1.2\": 9230,\n\t\"./sensormodels/eDoctor-v1.2.json\": 9230,\n\t\"./sensormodels/eDoctor-v1.json\": 575\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 10;","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _createSuper(t) {\n var r = isNativeReflectConstruct();\n return function () {\n var e,\n o = getPrototypeOf(t);\n if (r) {\n var s = getPrototypeOf(this).constructor;\n e = Reflect.construct(o, arguments, s);\n } else e = o.apply(this, arguments);\n return possibleConstructorReturn(this, e);\n };\n}\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(t) {\n return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _getPrototypeOf(t);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n \"default\": e\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(t, e) {\n return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nfunction warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nfunction _createForOfIteratorHelper(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (!t) {\n if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n t && (r = t);\n var _n = 0,\n F = function F() {};\n return {\n s: F,\n n: function n() {\n return _n >= r.length ? {\n done: !0\n } : {\n done: !1,\n value: r[_n++]\n };\n },\n e: function e(r) {\n throw r;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var o,\n a = !0,\n u = !1;\n return {\n s: function s() {\n t = t.call(r);\n },\n n: function n() {\n var r = t.next();\n return a = r.done, r;\n },\n e: function e(r) {\n u = !0, o = r;\n },\n f: function f() {\n try {\n a || null == t[\"return\"] || t[\"return\"]();\n } finally {\n if (u) throw o;\n }\n }\n };\n}\nexport { _createForOfIteratorHelper as default };","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\nexport type MutationFormMethod = \"post\" | \"put\" | \"patch\" | \"delete\";\nexport type FormMethod = \"get\" | MutationFormMethod;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\";\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport interface Submission {\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n}\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: any;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n formData?: Submission[\"formData\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n parentPath: number[] = [],\n allIds: Set = new Set()\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !allIds.has(id),\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n allIds.add(id);\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = { ...route, id };\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n id,\n children: route.children\n ? convertRoutesToDataRoutes(route.children, treePath, allIds)\n : undefined,\n };\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explodes _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n return (\n path\n .replace(\n /^:(\\w+)(\\??)/g,\n (_, key: PathParam, optional: string | undefined) => {\n let param = params[key];\n if (optional === \"?\") {\n return param == null ? \"\" : param;\n }\n if (param == null) {\n invariant(false, `Missing \":${key}\" param`);\n }\n return param;\n }\n )\n .replace(\n /\\/:(\\w+)(\\??)/g,\n (_, key: PathParam, optional: string | undefined) => {\n let param = params[key];\n if (optional === \"?\") {\n return param == null ? \"\" : `/${param}`;\n }\n if (param == null) {\n invariant(false, `Missing \":${key}\" param`);\n }\n return `/${param}`;\n }\n )\n // Remove any optional markers from optional static segments\n .replace(/\\?/g, \"\")\n .replace(/(\\/?)\\*/, (_, prefix, __, str) => {\n const star = \"*\" as PathParam;\n\n if (params[star] == null) {\n // If no splat was provided, trim the trailing slash _unless_ it's\n // the entire path\n return str === \"/*\" ? \"/\" : \"\";\n }\n\n // Apply the splat\n return `${prefix}${params[star]}`;\n })\n );\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * @private\n */\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging @remix-run/router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, null, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n if (error) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n error?: Error;\n internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _toArray(r) {\n return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();\n}\nexport { _toArray as default };","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n} from \"./history\";\nimport type {\n DataResult,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DeferredResult,\n ErrorResult,\n FormEncType,\n FormMethod,\n RedirectResult,\n RouteData,\n AgnosticRouteObject,\n Submission,\n SuccessResult,\n AgnosticRouteMatch,\n MutationFormMethod,\n ShouldRevalidateFunction,\n} from \"./utils\";\nimport {\n DeferredData,\n ErrorResponse,\n ResultType,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n warning,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterNavigateOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key?: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n basename?: string;\n routes: AgnosticRouteObject[];\n history: History;\n hydrationData?: HydrationState;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: unknown;\n handle: unknown;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\n/**\n * Options for a navigate() call for a Link navigation\n */\ntype LinkNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n};\n\n/**\n * Options for a navigate() call for a Form navigation\n */\ntype SubmissionNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n formMethod?: FormMethod;\n formEncType?: FormEncType;\n formData: FormData;\n};\n\n/**\n * Options to pass to navigate() for either a Link or Form navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions =\n | Omit\n | Omit;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Loading: {\n state: \"loading\";\n formMethod: FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n match: AgnosticDataRouteMatch;\n matches: AgnosticDataRouteMatch[];\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\nconst isServer = !isBrowser;\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let dataRoutes = convertRoutesToDataRoutes(init.routes);\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(\n dataRoutes,\n init.history.location,\n init.basename\n );\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n !initialMatches.some((m) => m.route.loader) || init.hydrationData != null;\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidate()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations from their actions\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(router.state.blockers) });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n for (let [key] of blockerFunctions) {\n deleteBlocker(key);\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers: new Map(state.blockers),\n });\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(to, opts);\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(state.blockers) });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponse;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(dataRoutes, location, init.basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a mutation submission\n // For example, on /page#hash and submit a
which will\n // default to a navigation to /page\n if (\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n ...opts.submission,\n };\n loadingNavigation = navigation;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts?: { replace?: boolean }\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n ...submission,\n };\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n router.basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation;\n if (!loadingNavigation) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n };\n loadingNavigation = navigation;\n }\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission\n ? submission\n : loadingNavigation.formMethod &&\n loadingNavigation.formAction &&\n loadingNavigation.formData &&\n loadingNavigation.formEncType\n ? {\n formMethod: loadingNavigation.formMethod,\n formAction: loadingNavigation.formAction,\n formData: loadingNavigation.formData,\n formEncType: loadingNavigation.formEncType,\n }\n : undefined;\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n pendingActionData,\n pendingError,\n fetchLoadMatches\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: fetcher && fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n pendingNavigationLoadId = ++incrementingLoadId;\n revalidatingFetchers.forEach((rf) =>\n fetchControllers.set(rf.key, pendingNavigationController!)\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n await startRedirectNavigation(state, redirect, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n\n return {\n loaderData,\n errors,\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let matches = matchRoutes(dataRoutes, href, init.basename);\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: href })\n );\n return;\n }\n\n let { path, submission } = normalizeNavigateOptions(href, opts, true);\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path, match, matches });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n router.basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n fetchRedirectIds.add(key);\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n ...submission,\n data: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n isFetchActionRedirect: true,\n });\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n\n nextLocation,\n abortController.signal\n );\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(dataRoutes, state.navigation.location, init.basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: actionResult.data,\n ...submission,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n { [match.route.id]: actionResult.data },\n undefined, // No need to send through errors since we short circuit above\n fetchLoadMatches\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: existingFetcher && existingFetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(staleKey, revalidatingFetcher);\n fetchControllers.set(staleKey, abortController);\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n return startRedirectNavigation(state, redirect);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: actionResult.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads ? { fetchers: new Map(state.fetchers) } : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n router.basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n await startRedirectNavigation(state, result);\n return;\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n replace,\n isFetchActionRedirect,\n }: {\n submission?: Submission;\n replace?: boolean;\n isFetchActionRedirect?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(\n state.location,\n redirect.location,\n // TODO: This can be removed once we get rid of useTransition in Remix v2\n {\n _isRedirect: true,\n ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}),\n }\n );\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n // Check if this an absolute external redirect that goes to a new origin\n if (\n ABSOLUTE_URL_REGEX.test(redirect.location) &&\n isBrowser &&\n typeof window?.location !== \"undefined\"\n ) {\n let newOrigin = init.history.createURL(redirect.location).origin;\n if (window.location.origin !== newOrigin) {\n if (replace) {\n window.location.replace(redirect.location);\n } else {\n window.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType, formData } = state.navigation;\n if (!submission && formMethod && formAction && formData && formEncType) {\n submission = {\n formMethod,\n formAction,\n formEncType,\n formData,\n };\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n submission &&\n isMutationMethod(submission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...submission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // Otherwise, we kick off a new loading navigation, preserving the\n // submission info for the duration of this navigation\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: {\n state: \"loading\",\n location: redirectLocation,\n formMethod: submission ? submission.formMethod : undefined,\n formAction: submission ? submission.formAction : undefined,\n formEncType: submission ? submission.formEncType : undefined,\n formData: submission ? submission.formData : undefined,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\"loader\", request, match, matches, router.basename)\n ),\n ...fetchersToLoad.map((f) =>\n callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, request.signal),\n f.match,\n f.matches,\n router.basename\n )\n ),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n request.signal,\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n request.signal,\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n if (fetchControllers.has(key)) abortFetcher(key);\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): void {\n let doneKeys = [];\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n }\n }\n markFetchersDone(doneKeys);\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n state.blockers.set(key, newBlocker);\n updateState({ blockers: new Map(state.blockers) });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || ((location) => location.key);\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n router = {\n get basename() {\n return init.basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: {\n basename?: string;\n }\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let dataRoutes = convertRoutesToDataRoutes(routes);\n let basename = (opts ? opts.basename : null) || \"/\";\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method.toLowerCase();\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"head\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method.toLowerCase();\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"head\" && method !== \"options\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error && !isRedirectResponse(e.response)) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n basename,\n true,\n isRouteRequest,\n requestContext\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (isRouteRequest && !routeMatch?.route.loader) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter((m) => m.route.loader);\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n basename,\n true,\n isRouteRequest,\n requestContext\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return opts != null && \"formData\" in opts;\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n to: To,\n opts?: RouterNavigateOptions,\n isFetcher = false\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponse;\n} {\n let path = typeof to === \"string\" ? to : createPath(to);\n\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n // Create a Submission on non-GET navigations\n let submission: Submission | undefined;\n if (opts.formData) {\n submission = {\n formMethod: opts.formMethod || \"get\",\n formAction: stripHashFromPath(path),\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData: opts.formData,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n let searchParams = convertFormDataToSearchParams(opts.formData);\n // Since fetcher GET submissions only run a single loader (as opposed to\n // navigation GET submissions which run all loaders), we need to preserve\n // any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n pendingActionData?: RouteData,\n pendingError?: RouteData,\n fetchLoadMatches?: Map\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n let defaultShouldRevalidate =\n // Forced revalidation due to submission, useRevalidate, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.toString() === nextUrl.toString() ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search;\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n defaultShouldRevalidate ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches &&\n fetchLoadMatches.forEach((f, key) => {\n if (!matches.some((m) => m.route.id === f.routeId)) {\n // This fetcher is not going to be present in the subsequent render so\n // there's no need to revalidate it\n return;\n } else if (cancelledFetcherLoads.includes(key)) {\n // This fetcher was cancelled from a prior action submission - force reload\n revalidatingFetchers.push({ key, ...f });\n } else {\n // Revalidating fetchers are decoupled from the route matches since they\n // hit a static href, so they _always_ check shouldRevalidate and the\n // default is strictly if a revalidation is explicitly required (action\n // submissions, useRevalidator, X-Remix-Revalidate).\n let shouldRevalidate = shouldRevalidateLoader(f.match, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate,\n });\n if (shouldRevalidate) {\n revalidatingFetchers.push({ key, ...f });\n }\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: Parameters[0]\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n basename = \"/\",\n isStaticRequest: boolean = false,\n isRouteRequest: boolean = false,\n requestContext?: unknown\n): Promise {\n let resultType;\n let result;\n\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n let onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n try {\n let handler = match.route[type];\n invariant(\n handler,\n `Could not find the ${type} to run on the \"${match.route.id}\" route`\n );\n\n result = await Promise.race([\n handler({ request, params: match.params, context: requestContext }),\n abortPromise,\n ]);\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let activeMatches = matches.slice(0, matches.indexOf(match) + 1);\n let routePathnames = getPathContributingMatches(activeMatches).map(\n (match) => match.pathnameBase\n );\n let resolvedLocation = resolveTo(\n location,\n routePathnames,\n new URL(request.url).pathname\n );\n invariant(\n createPath(resolvedLocation),\n `Unable to resolve redirect location: ${location}`\n );\n\n // Prepend the basename to the redirect location if we have one\n if (basename) {\n let path = resolvedLocation.pathname;\n resolvedLocation.pathname =\n path === \"/\" ? basename : joinPaths([basename, path]);\n }\n\n location = createPath(resolvedLocation);\n } else if (!isStaticRequest) {\n // Strip off the protocol+origin for same-origin absolute redirects.\n // If this is a static reques, we can let it go back to the browser\n // as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n if (url.origin === currentUrl.origin) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (isRouteRequest) {\n // eslint-disable-next-line no-throw-literal\n throw {\n type: resultType || ResultType.data,\n response: result,\n };\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponse(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (result instanceof DeferredData) {\n return { type: ResultType.deferred, deferredData: result };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType, formData } = submission;\n init.method = formMethod.toUpperCase();\n init.body =\n formEncType === \"application/x-www-form-urlencoded\"\n ? convertFormDataToSearchParams(formData)\n : formData;\n }\n\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, value instanceof File ? value.name : value);\n }\n\n return searchParams;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined) {\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponse(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results: DataResult[]): RedirectResult | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return result;\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n return (\n a.pathname === b.pathname && a.search === b.search && a.hash !== b.hash\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod {\n return validRequestMethods.has(method as FormMethod);\n}\n\nfunction isMutationMethod(method?: string): method is MutationFormMethod {\n return validMutationMethods.has(method as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n signal: AbortSignal,\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :) Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UseMatchesMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id] as unknown,\n handle: route.handle as unknown,\n };\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n//#endregion\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport * as React from \"react\";\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction isPolyfill(x: any, y: any) {\n return (\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare\n );\n}\n\nconst is: (x: any, y: any) => boolean =\n typeof Object.is === \"function\" ? Object.is : isPolyfill;\n\n// Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\nconst { useState, useEffect, useLayoutEffect, useDebugValue } = React;\n\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false;\n\n// Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\nexport function useSyncExternalStore(\n subscribe: (fn: () => void) => () => void,\n getSnapshot: () => T,\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n getServerSnapshot?: () => T\n): T {\n if (__DEV__) {\n if (!didWarnOld18Alpha) {\n if (\"startTransition\" in React) {\n didWarnOld18Alpha = true;\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that \" +\n \"does not support useSyncExternalStore. The \" +\n \"use-sync-external-store shim will not work correctly. Upgrade \" +\n \"to a newer pre-release.\"\n );\n }\n }\n }\n\n // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n const value = getSnapshot();\n if (__DEV__) {\n if (!didWarnUncachedGetSnapshot) {\n const cachedValue = getSnapshot();\n if (!is(value, cachedValue)) {\n console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n );\n didWarnUncachedGetSnapshot = true;\n }\n }\n }\n\n // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n const [{ inst }, forceUpdate] = useState({ inst: { value, getSnapshot } });\n\n // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n useLayoutEffect(() => {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n\n // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe, value, getSnapshot]);\n\n useEffect(() => {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n const handleStoreChange = () => {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n };\n // Subscribe to the store and return a clean-up function.\n return subscribe(handleStoreChange);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe]);\n\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst: any) {\n const latestGetSnapshot = inst.getSnapshot;\n const prevValue = inst.value;\n try {\n const nextValue = latestGetSnapshot();\n return !is(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n","/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @flow\n */\n\nimport * as React from \"react\";\n\nimport { useSyncExternalStore as client } from \"./useSyncExternalStoreShimClient\";\nimport { useSyncExternalStore as server } from \"./useSyncExternalStoreShimServer\";\n\nconst canUseDOM: boolean = !!(\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n);\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? server : client;\n\nexport const useSyncExternalStore =\n \"useSyncExternalStore\" in React\n ? ((module) => module.useSyncExternalStore)(React)\n : shim;\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n Router as RemixRouter,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n warning,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history. If this is a root navigation, then we\n // navigate to the raw basename which allows the basename to have full\n // control over the presence of a trailing slash on root links\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let dataRouterStateContext = React.useContext(DataRouterStateContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterStateContext || undefined\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorElement() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own \n errorElement props on \n <Route>\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location) {\n return {\n error: props.error,\n location: props.location,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n match.route.errorElement\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for the current errors: ${errors}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement = dataRouterState\n ? match.route.errorElement || \n : null;\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => (\n \n {error\n ? errorElement\n : match.route.element !== undefined\n ? match.route.element\n : outlet}\n \n );\n // Only wrap in an error boundary within data router usages when we have an\n // errorElement on this route. Otherwise let it bubble up to an ancestor\n // errorElement\n return dataRouterState && (match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n}\n\nenum DataRouterStateHook {\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return {\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n };\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router } = useDataRouterContext(DataRouterHook.UseBlocker);\n let [blockerKey] = React.useState(() => String(++blockerId));\n\n let blockerFunction = React.useCallback(\n (args) => {\n return typeof shouldBlock === \"function\"\n ? !!shouldBlock(args)\n : !!shouldBlock;\n },\n [shouldBlock]\n );\n\n let blocker = router.getBlocker(blockerKey, blockerFunction);\n\n // Cleanup on unmount\n React.useEffect(\n () => () => router.deleteBlocker(blockerKey),\n [router, blockerKey]\n );\n\n return blocker;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n RouterState,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n invariant,\n parsePath,\n stripBasename,\n warning,\n} from \"@remix-run/router\";\nimport { useSyncExternalStore as useSyncExternalStoreShim } from \"./use-sync-external-store-shim\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n}: RouterProviderProps): React.ReactElement {\n // Sync router state to our component state to force re-renders\n let state: RouterState = useSyncExternalStoreShim(\n router.subscribe,\n () => router.state,\n // We have to provide this so React@18 doesn't complain during hydration,\n // but we pass our serialized hydration data into the router so state here\n // is already synced with what the server saw\n () => router.state\n );\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a