{"version":3,"file":"static/js/main.c7d1005b.js","mappings":"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","sources":["../node_modules/@aws-crypto/sha256-js/src/RawSha256.ts","../node_modules/@aws-crypto/sha256-js/src/constants.ts","../node_modules/@aws-crypto/sha256-js/src/index.ts","../node_modules/@aws-crypto/sha256-js/src/jsSha256.ts","../node_modules/@aws-crypto/sha256-js/node_modules/tslib/tslib.es6.js","../node_modules/@aws-crypto/util/src/convertToBuffer.ts","../node_modules/@aws-crypto/util/src/index.ts","../node_modules/@aws-crypto/util/src/isEmptyData.ts","../node_modules/@aws-crypto/util/src/numToUint8.ts","../node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts","../node_modules/@aws-sdk/util-utf8-browser/src/index.ts","../node_modules/@aws-sdk/util-utf8-browser/src/whatwgEncodingApi.ts","../node_modules/@aws-sdk/util-utf8-browser/src/pureJs.ts","../node_modules/balanced-match/index.js","../node_modules/base64-js/index.js","../node_modules/buffer/index.js","../node_modules/classnames/index.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/isarray/index.js","../node_modules/isomorphic-unfetch/browser.js","../node_modules/js-cookie/src/js.cookie.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_asciiSize.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_baseRepeat.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_createPadding.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_root.js","../node_modules/lodash/_stringSize.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/_unicodeSize.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/debounce.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/now.js","../node_modules/lodash/padEnd.js","../node_modules/lodash/padStart.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/toString.js","../node_modules/moment/moment.js","../node_modules/object-assign/index.js","../node_modules/path-to-regexp/index.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/querystring/decode.js","../node_modules/querystring/encode.js","../node_modules/querystring/index.js","../node_modules/rc-util/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/rc-util/node_modules/react-is/index.js","../node_modules/react-csv/index.js","../node_modules/react-csv/lib/components/Download.js","../node_modules/react-csv/lib/components/Link.js","../node_modules/react-csv/lib/core.js","../node_modules/react-csv/lib/index.js","../node_modules/react-csv/lib/metaProps.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-keyed-flatten-children/index.js","../node_modules/react-keyed-flatten-children/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-keyed-flatten-children/node_modules/react-is/index.js","../node_modules/react-router/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-router/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/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shallowequal/index.js","../node_modules/unfetch/src/index.mjs","../node_modules/url/node_modules/punycode/punycode.js","../node_modules/url/url.js","../node_modules/url/util.js","../node_modules/uuid/index.js","../node_modules/uuid/lib/bytesToUuid.js","../node_modules/uuid/lib/rng-browser.js","../node_modules/uuid/v1.js","../node_modules/uuid/v4.js","../node_modules/zen-observable/index.js","../node_modules/zen-observable/lib/Observable.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../node_modules/@aws-amplify/core/lib-esm/Logger/ConsoleLogger.js","../node_modules/@aws-amplify/core/lib-esm/Util/Constants.js","../node_modules/@aws-amplify/core/lib-esm/Amplify.js","../node_modules/@aws-amplify/auth/node_modules/tslib/tslib.es6.js","../node_modules/@aws-amplify/auth/src/types/Auth.ts","../node_modules/@aws-amplify/core/lib-esm/Hub.js","../node_modules/@aws-amplify/core/lib-esm/StorageHelper/index.js","../node_modules/@aws-amplify/core/lib-esm/JS.js","../node_modules/@aws-amplify/core/lib-esm/Util/Retry.js","../node_modules/@aws-amplify/core/lib-esm/Platform/types.js","../node_modules/@aws-amplify/core/lib-esm/OAuthHelper/GoogleOAuth.js","../node_modules/@aws-amplify/core/lib-esm/OAuthHelper/FacebookOAuth.js","../node_modules/@aws-amplify/core/lib-esm/OAuthHelper/index.js","../node_modules/@aws-amplify/core/lib-esm/clients/endpoints/partitions.js","../node_modules/@aws-amplify/core/lib-esm/clients/endpoints/getDnsSuffix.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/retry/middleware.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/userAgent/middleware.js","../node_modules/@aws-amplify/core/lib-esm/clients/internal/composeTransferHandler.js","../node_modules/@aws-amplify/core/lib-esm/clients/utils/memoization.js","../node_modules/@aws-amplify/core/lib-esm/clients/handlers/fetch.js","../node_modules/@aws-amplify/core/lib-esm/clients/handlers/unauthenticated.js","../node_modules/@aws-amplify/core/lib-esm/clients/serde/responseInfo.js","../node_modules/@aws-amplify/core/lib-esm/clients/serde/json.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/retry/isClockSkewError.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/retry/defaultRetryDecider.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/retry/jitteredBackoff.js","../node_modules/@aws-amplify/core/lib-esm/Platform/version.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/helpers.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/index.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detectFramework.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Expo.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/ReactNative.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Next.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Nuxt.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Angular.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/React.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Vue.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Svelte.js","../node_modules/@aws-amplify/core/lib-esm/Platform/detection/Web.js","../node_modules/@aws-amplify/core/lib-esm/Platform/index.js","../node_modules/@aws-amplify/core/lib-esm/AwsClients/CognitoIdentity/base.js","../node_modules/@aws-amplify/core/lib-esm/clients/internal/composeServiceApi.js","../node_modules/@aws-amplify/core/lib-esm/AwsClients/CognitoIdentity/getId.js","../node_modules/@aws-amplify/core/lib-esm/AwsClients/CognitoIdentity/getCredentialsForIdentity.js","../node_modules/@aws-amplify/core/lib-esm/parseAWSExports.js","../node_modules/@aws-amplify/core/lib-esm/Credentials.js","../node_modules/universal-cookie/esm/index.mjs","../node_modules/@aws-amplify/core/lib-esm/UniversalStorage/index.js","../node_modules/amazon-cognito-identity-js/es/AuthenticationDetails.js","../node_modules/amazon-cognito-identity-js/es/utils/cryptoSecureRandomInt.web.js","../node_modules/amazon-cognito-identity-js/es/utils/WordArray.js","../node_modules/amazon-cognito-identity-js/es/BigInteger.js","../node_modules/amazon-cognito-identity-js/es/AuthenticationHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoJwtToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoAccessToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoIdToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoRefreshToken.js","../node_modules/amazon-cognito-identity-js/es/Platform/index.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserSession.js","../node_modules/amazon-cognito-identity-js/es/DateHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserAttribute.js","../node_modules/amazon-cognito-identity-js/es/StorageHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoUser.js","../node_modules/amazon-cognito-identity-js/es/UserAgent.js","../node_modules/amazon-cognito-identity-js/es/Client.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserPool.js","../node_modules/amazon-cognito-identity-js/es/CookieStorage.js","../node_modules/@aws-amplify/auth/src/OAuth/urlOpener.ts","../node_modules/@aws-amplify/core/lib-esm/constants.js","../node_modules/@aws-amplify/auth/src/OAuth/OAuth.ts","../node_modules/@aws-amplify/core/lib-esm/Util/StringUtils.js","../node_modules/@aws-amplify/auth/src/OAuth/oauthStorage.ts","../node_modules/@aws-amplify/auth/src/common/AuthErrorStrings.ts","../node_modules/@aws-amplify/auth/src/Errors.ts","../node_modules/@aws-amplify/auth/src/Auth.ts","../node_modules/amazon-cognito-identity-js/es/Platform/constants.js","../node_modules/@aws-amplify/auth/src/urlListener.ts","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.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/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/antd/es/config-provider/context.js","../node_modules/antd/es/layout/layout.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@ant-design/icons-svg/es/asn/BarsOutlined.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@ant-design/icons/es/components/Context.js","../node_modules/@ctrl/tinycolor/dist/module/util.js","../node_modules/@ctrl/tinycolor/dist/module/conversion.js","../node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","../node_modules/@ctrl/tinycolor/dist/module/format-input.js","../node_modules/@ant-design/colors/dist/index.esm.js","../node_modules/rc-util/es/warning.js","../node_modules/rc-util/es/Dom/canUseDom.js","../node_modules/rc-util/es/Dom/contains.js","../node_modules/rc-util/es/Dom/dynamicCSS.js","../node_modules/@ant-design/icons/es/utils.js","../node_modules/@ant-design/icons/es/components/IconBase.js","../node_modules/@ant-design/icons/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons/es/components/AntdIcon.js","../node_modules/@ant-design/icons/es/icons/BarsOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/LeftOutlined.js","../node_modules/@ant-design/icons/es/icons/LeftOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/RightOutlined.js","../node_modules/@ant-design/icons/es/icons/RightOutlined.js","../node_modules/rc-util/es/omit.js","../node_modules/antd/es/_util/isNumeric.js","../node_modules/antd/es/layout/Sider.js","../node_modules/antd/es/layout/index.js","../node_modules/antd/es/_util/reactNode.js","../node_modules/antd/es/_util/type.js","../node_modules/antd/es/spin/index.js","aws-exports.js","../node_modules/tslib/tslib.es6.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/@awsui/component-toolkit/lib/internal/base-component/component-metadata.js","../node_modules/@awsui/component-toolkit/lib/internal/base-component/metrics/log-clients.js","../node_modules/@awsui/component-toolkit/lib/internal/base-component/metrics/formatters.js","../node_modules/@awsui/component-toolkit/lib/internal/base-component/metrics/metrics.js","../node_modules/@awsui/components-react/internal/environment.js","../node_modules/@awsui/component-toolkit/lib/internal/base-component/init-awsui-versions.js","../node_modules/@awsui/components-react/internal/base-component/lib/default/internal/base-component/index.ts","../node_modules/@awsui/components-react/internal/lib/default/internal/is-development.ts","../node_modules/@awsui/components-react/internal/lib/default/internal/logging.ts","../node_modules/@awsui/components-react/internal/hooks/use-controllable/lib/default/internal/hooks/use-controllable/index.ts","../node_modules/@awsui/components-react/internal/lib/default/internal/breakpoints.ts","../node_modules/@awsui/components-react/internal/hooks/use-singleton-handler/lib/default/internal/hooks/use-singleton-handler/index.ts","../node_modules/@awsui/components-react/internal/hooks/use-mobile/lib/default/internal/hooks/use-mobile/index.ts","../node_modules/@awsui/components-react/internal/events/lib/default/internal/events/index.ts","../node_modules/@awsui/components-react/app-layout/lib/default/app-layout/defaults.ts","../node_modules/@awsui/components-react/app-layout/notifications/styles.css.js","../node_modules/@awsui/components-react/app-layout/notifications/lib/default/app-layout/notifications/index.tsx","../node_modules/@awsui/components-react/internal/hooks/forward-focus/lib/default/internal/hooks/forward-focus/index.ts","../node_modules/@awsui/components-react/button/styles.css.js","../node_modules/@awsui/components-react/icon/styles.css.js","../node_modules/@awsui/components-react/icon/icons.js","../node_modules/@awsui/components-react/internal/hooks/use-merge-refs/lib/default/internal/hooks/use-merge-refs/index.tsx","../node_modules/@awsui/components-react/internal/utils/lib/default/internal/utils/calculate-once.ts","../node_modules/@awsui/components-react/internal/utils/lib/default/internal/utils/dom.ts","../node_modules/@awsui/components-react/internal/lib/default/internal/motion.ts","../node_modules/@awsui/components-react/internal/hooks/use-stable-event-handler/lib/default/internal/hooks/use-stable-event-handler/index.ts","../node_modules/@awsui/components-react/internal/hooks/use-mutation-observer/lib/default/internal/hooks/use-mutation-observer/index.ts","../node_modules/@awsui/components-react/internal/hooks/use-visual-mode/lib/default/internal/hooks/use-visual-mode/index.ts","../node_modules/@awsui/components-react/icon/lib/default/icon/internal.tsx","../node_modules/@awsui/components-react/spinner/styles.css.js","../node_modules/@awsui/components-react/spinner/lib/default/spinner/internal.tsx","../node_modules/@awsui/components-react/button/lib/default/button/icon-helper.tsx","../node_modules/@awsui/components-react/internal/utils/lib/default/internal/utils/check-safe-url.ts","../node_modules/@awsui/components-react/internal/components/screenreader-only/styles.css.js","../node_modules/@awsui/components-react/internal/components/screenreader-only/lib/default/internal/components/screenreader-only/index.tsx","../node_modules/@awsui/components-react/internal/components/live-region/styles.css.js","../node_modules/@awsui/components-react/internal/components/live-region/lib/default/internal/components/live-region/index.tsx","../node_modules/@awsui/components-react/internal/analytics/context/lib/default/internal/analytics/context/analytics-context.ts","../node_modules/@awsui/components-react/internal/analytics/lib/default/internal/analytics/selectors.ts","../node_modules/@awsui/components-react/internal/analytics/lib/default/internal/analytics/index.ts","../node_modules/@awsui/components-react/internal/analytics/hooks/lib/default/internal/analytics/hooks/use-funnel.ts","../node_modules/@awsui/components-react/button/lib/default/button/internal.tsx","../node_modules/@awsui/components-react/app-layout/toggles/styles.css.js","../node_modules/@awsui/components-react/app-layout/toggles/lib/default/app-layout/toggles/index.tsx","../node_modules/@awsui/components-react/app-layout/mobile-toolbar/styles.css.js","../node_modules/@awsui/components-react/app-layout/styles.css.js","../node_modules/@awsui/components-react/app-layout/test-classes/styles.css.js","../node_modules/@awsui/components-react/app-layout/mobile-toolbar/lib/default/app-layout/mobile-toolbar/index.tsx","../node_modules/@awsui/components-react/app-layout/utils/lib/default/app-layout/utils/use-focus-control.ts","../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js","../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js","../node_modules/@juggle/resize-observer/lib/utils/freeze.js","../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js","../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js","../node_modules/@juggle/resize-observer/lib/utils/element.js","../node_modules/@juggle/resize-observer/lib/utils/global.js","../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js","../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js","../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js","../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js","../node_modules/@juggle/resize-observer/lib/utils/process.js","../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js","../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js","../node_modules/@juggle/resize-observer/lib/utils/scheduler.js","../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js","../node_modules/@juggle/resize-observer/lib/ResizeObservation.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js","../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js","../node_modules/@juggle/resize-observer/lib/ResizeObserver.js","../node_modules/@awsui/components-react/internal/hooks/container-queries/lib/default/internal/hooks/container-queries/use-resize-observer.ts","../node_modules/@awsui/components-react/app-layout/utils/lib/default/app-layout/utils/use-observed-element.ts","../node_modules/@awsui/components-react/internal/context/lib/default/internal/context/app-layout-context.ts","../node_modules/@awsui/components-react/internal/hooks/container-queries/lib/default/internal/hooks/container-queries/use-container-query.ts","../node_modules/@awsui/components-react/internal/utils/lib/default/internal/utils/apply-display-name.ts","../node_modules/@awsui/components-react/internal/context/lib/default/internal/context/split-panel-context.ts","../node_modules/@awsui/components-react/split-panel/utils/lib/default/split-panel/utils/size-utils.ts","../node_modules/@awsui/components-react/internal/hooks/use-telemetry/lib/default/internal/hooks/use-telemetry/index.ts","../node_modules/@awsui/component-toolkit/lib/internal/base-component/component-metrics.js","../node_modules/@awsui/components-react/internal/lib/default/internal/keycode.ts","../node_modules/@awsui/components-react/internal/hooks/focus-visible/lib/default/internal/hooks/focus-visible/index.ts","../node_modules/@awsui/components-react/internal/hooks/use-base-component/lib/default/internal/hooks/use-base-component/index.ts","../node_modules/@awsui/components-react/app-layout/content-wrapper/styles.css.js","../node_modules/@awsui/components-react/app-layout/content-wrapper/lib/default/app-layout/content-wrapper/index.tsx","../node_modules/@awsui/components-react/app-layout/drawer/styles.css.js","../node_modules/@awsui/components-react/app-layout/drawer/lib/default/app-layout/drawer/index.tsx","../node_modules/@awsui/components-react/split-panel/styles.css.js","../node_modules/@awsui/components-react/split-panel/utils/lib/default/split-panel/utils/use-keyboard-events.ts","../node_modules/@awsui/components-react/split-panel/icons/lib/default/split-panel/icons/resize-handler.tsx","../node_modules/@awsui/components-react/app-layout/drawer/lib/default/app-layout/drawer/resizable-drawer.tsx","../node_modules/@awsui/components-react/split-panel/utils/lib/default/split-panel/utils/use-pointer-events.ts","../node_modules/@awsui/components-react/app-layout/split-panel-drawer/styles.css.js","../node_modules/@awsui/components-react/app-layout/split-panel-drawer/lib/default/app-layout/split-panel-drawer/index.tsx","../node_modules/@awsui/components-react/internal/context/lib/default/internal/context/dynamic-overlap-context.ts","../node_modules/@awsui/components-react/app-layout/visual-refresh/styles.css.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@awsui/components-react/internal/components/transition/lib/default/internal/components/transition/index.tsx","../node_modules/@awsui/components-react/internal/generated/custom-css-properties/lib/default/internal/generated/custom-css-properties/index.ts","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/split-panel.tsx","../node_modules/@awsui/components-react/app-layout/utils/lib/default/app-layout/utils/use-split-panel-focus-control.ts","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/context.tsx","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/background.tsx","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/breadcrumbs.tsx","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/trigger-button.tsx","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/drawers.tsx","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/header.tsx","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/layout.tsx","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/main.tsx","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/mobile-toolbar.tsx","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/navigation.tsx","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/notifications.tsx","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/tools.tsx","../node_modules/@awsui/components-react/app-layout/visual-refresh/lib/default/app-layout/visual-refresh/index.tsx","../node_modules/@awsui/components-react/i18n/lib/default/i18n/context.ts","../node_modules/@awsui/components-react/app-layout/lib/default/app-layout/index.tsx","../node_modules/@awsui/components-react/app-layout/utils/lib/default/app-layout/utils/use-drawer-focus-control.ts","../node_modules/@awsui/components-react/app-layout/utils/lib/default/app-layout/utils/use-content-height.ts","../node_modules/@awsui/components-react/app-layout/utils/lib/default/app-layout/utils/use-window-width.ts","../node_modules/@awsui/components-react/app-layout/utils/lib/default/app-layout/utils/use-content-width.ts","../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/@awsui/components-react/internal/hooks/use-unique-id/lib/default/internal/hooks/use-unique-id/index.ts","../node_modules/@awsui/components-react/expandable-section/styles.css.js","../node_modules/@awsui/components-react/internal/utils/lib/default/internal/utils/scrollable-containers.ts","../node_modules/@awsui/components-react/container/lib/default/container/use-sticky-header.ts","../node_modules/@awsui/components-react/internal/hooks/use-dynamic-overlap/lib/default/internal/hooks/use-dynamic-overlap/index.ts","../node_modules/@awsui/components-react/container/styles.css.js","../node_modules/@awsui/components-react/container/lib/default/container/internal.tsx","../node_modules/@awsui/components-react/expandable-section/lib/default/expandable-section/expandable-section-container.tsx","../node_modules/@awsui/components-react/header/styles.css.js","../node_modules/@awsui/components-react/internal/context/lib/default/internal/context/info-link-label-context.ts","../node_modules/@awsui/components-react/header/lib/default/header/internal.tsx","../node_modules/@awsui/components-react/expandable-section/lib/default/expandable-section/expandable-section-header.tsx","../node_modules/@awsui/components-react/expandable-section/lib/default/expandable-section/internal.tsx","../node_modules/@awsui/components-react/box/styles.css.js","../node_modules/@awsui/components-react/box/lib/default/box/internal.tsx","../node_modules/@awsui/components-react/side-navigation/styles.css.js","../node_modules/@awsui/components-react/side-navigation/lib/default/side-navigation/util.tsx","../node_modules/@awsui/components-react/side-navigation/lib/default/side-navigation/internal.tsx","../node_modules/@awsui/components-react/side-navigation/lib/default/side-navigation/index.tsx","../node_modules/@awsui/components-react/icon/lib/default/icon/index.tsx","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/history/esm/history.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","components/Navigation/Navigation.js","../node_modules/@awsui/components-react/status-indicator/styles.css.js","../node_modules/@awsui/components-react/status-indicator/lib/default/status-indicator/internal.tsx","../node_modules/@awsui/components-react/help-panel/styles.css.js","../node_modules/@awsui/components-react/help-panel/lib/default/help-panel/index.tsx","components/Navigation/ToolsDrawer.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/@awsui/components-react/flashbar/styles.css.js","../node_modules/@awsui/components-react/internal/utils/lib/default/internal/utils/throttle.ts","../node_modules/@awsui/components-react/flashbar/lib/default/flashbar/utils.ts","../node_modules/@awsui/components-react/flashbar/internal/lib/default/flashbar/internal/analytics.ts","../node_modules/@awsui/components-react/flashbar/lib/default/flashbar/flash.tsx","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@awsui/components-react/internal/components/visual-context/lib/default/internal/components/visual-context/index.tsx","../node_modules/@awsui/components-react/internal/hooks/container-queries/lib/default/internal/hooks/container-queries/use-container-breakpoints.ts","../node_modules/@awsui/components-react/flashbar/lib/default/flashbar/common.tsx","../node_modules/@awsui/components-react/flashbar/lib/default/flashbar/collapsible-flashbar.tsx","../node_modules/@awsui/components-react/internal/lib/default/internal/animate.ts","../node_modules/@awsui/components-react/flashbar/lib/default/flashbar/constant.ts","../node_modules/@awsui/components-react/flashbar/lib/default/flashbar/non-collapsible-flashbar.tsx","../node_modules/@awsui/components-react/flashbar/lib/default/flashbar/index.tsx","../node_modules/@awsui/components-react/alert/styles.css.js","../node_modules/@awsui/components-react/alert/lib/default/alert/internal.tsx","../node_modules/@awsui/components-react/content-layout/styles.css.js","../node_modules/@awsui/components-react/content-layout/lib/default/content-layout/internal.tsx","../node_modules/@awsui/components-react/form/styles.css.js","../node_modules/@awsui/components-react/form/lib/default/form/internal.tsx","../node_modules/@awsui/components-react/internal/analytics/components/lib/default/internal/analytics/components/analytics-funnel.tsx","../node_modules/@awsui/components-react/form/lib/default/form/index.tsx","../node_modules/@awsui/components-react/internal/context/lib/default/internal/context/form-field-context.ts","../node_modules/@awsui/components-react/grid/styles.css.js","../node_modules/@awsui/components-react/grid/lib/default/grid/internal.tsx","../node_modules/@awsui/components-react/form-field/lib/default/form-field/util.ts","../node_modules/@awsui/components-react/form-field/styles.css.js","../node_modules/@awsui/components-react/internal/utils/strings/lib/default/internal/utils/strings/join-strings.ts","../node_modules/@awsui/components-react/form-field/lib/default/form-field/internal.tsx","../node_modules/@awsui/components-react/form-field/lib/default/form-field/index.tsx","../node_modules/@awsui/components-react/input/lib/default/input/utils.ts","../node_modules/@awsui/components-react/internal/lib/default/internal/debounce.ts","../node_modules/@awsui/components-react/internal/hooks/use-debounce-callback/lib/default/internal/hooks/use-debounce-callback/index.ts","../node_modules/@awsui/components-react/input/styles.css.js","../node_modules/@awsui/components-react/input/lib/default/input/internal.tsx","../node_modules/@awsui/components-react/input/lib/default/input/index.tsx","../node_modules/@awsui/components-react/select/styles.css.js","../node_modules/@awsui/components-react/internal/components/dropdown/styles.css.js","../node_modules/@awsui/components-react/internal/components/dropdown/lib/default/internal/components/dropdown/dropdown-fit-handler.ts","../node_modules/@awsui/components-react/internal/hooks/use-portal-mode-classes/lib/default/internal/hooks/use-portal-mode-classes/index.ts","../node_modules/@awsui/components-react/internal/components/dropdown/lib/default/internal/components/dropdown/context.tsx","../node_modules/@awsui/components-react/internal/components/tab-trap/lib/default/internal/components/tab-trap/index.tsx","../node_modules/@awsui/components-react/internal/components/focus-lock/lib/default/internal/components/focus-lock/utils.ts","../node_modules/@awsui/components-react/internal/components/dropdown/lib/default/internal/components/dropdown/index.tsx","../node_modules/@awsui/components-react/link/styles.css.js","../node_modules/@awsui/components-react/link/lib/default/link/internal.tsx","../node_modules/@awsui/components-react/internal/hooks/use-previous/lib/default/internal/hooks/use-previous/index.ts","../node_modules/@awsui/components-react/internal/components/dropdown-status/styles.css.js","../node_modules/@awsui/components-react/internal/components/dropdown-status/lib/default/internal/components/dropdown-status/index.tsx","../node_modules/@awsui/components-react/select/parts/styles.css.js","../node_modules/@awsui/components-react/select/parts/lib/default/select/parts/filter.tsx","../node_modules/@awsui/components-react/internal/components/button-trigger/styles.css.js","../node_modules/@awsui/components-react/internal/components/button-trigger/lib/default/internal/components/button-trigger/index.tsx","../node_modules/@awsui/components-react/internal/components/option/styles.css.js","../node_modules/@awsui/components-react/internal/components/option/lib/default/internal/components/option/highlight-match.tsx","../node_modules/@awsui/components-react/internal/components/option/lib/default/internal/components/option/option-parts.tsx","../node_modules/@awsui/components-react/internal/components/option/lib/default/internal/components/option/index.tsx","../node_modules/@awsui/components-react/select/parts/lib/default/select/parts/trigger.tsx","../node_modules/@awsui/components-react/internal/components/option/utils/lib/default/internal/components/option/utils/filter-options.ts","../node_modules/@awsui/components-react/internal/components/options-list/utils/lib/default/internal/components/options-list/utils/test-indexes.ts","../node_modules/@awsui/components-react/internal/components/option/utils/lib/default/internal/components/option/utils/prepare-options.ts","../node_modules/@awsui/components-react/internal/components/option/utils/lib/default/internal/components/option/utils/flatten-options.ts","../node_modules/@awsui/components-react/internal/components/options-list/utils/lib/default/internal/components/options-list/utils/use-highlight-option.ts","../node_modules/@awsui/components-react/internal/components/options-list/utils/lib/default/internal/components/options-list/utils/use-open-state.ts","../node_modules/@awsui/components-react/internal/components/options-list/utils/lib/default/internal/components/options-list/utils/use-ids.ts","../node_modules/@awsui/components-react/select/utils/lib/default/select/utils/connect-options.ts","../node_modules/@awsui/components-react/select/utils/lib/default/select/utils/use-select.ts","../node_modules/@awsui/components-react/internal/components/options-list/utils/lib/default/internal/components/options-list/utils/use-keyboard.ts","../node_modules/@awsui/components-react/select/utils/lib/default/select/utils/check-option-value-field.ts","../node_modules/@awsui/components-react/select/utils/lib/default/select/utils/use-native-search.ts","../node_modules/@awsui/components-react/select/utils/lib/default/select/utils/use-load-items.ts","../node_modules/@awsui/components-react/internal/components/option/lib/default/internal/components/option/option-announcer.ts","../node_modules/@awsui/components-react/select/utils/lib/default/select/utils/use-announcement.ts","../node_modules/@awsui/components-react/internal/components/options-list/styles.css.js","../node_modules/@awsui/components-react/internal/components/options-list/lib/default/internal/components/options-list/index.tsx","../node_modules/@awsui/components-react/internal/components/selectable-item/styles.css.js","../node_modules/@awsui/components-react/internal/components/selectable-item/lib/default/internal/components/selectable-item/index.tsx","../node_modules/@awsui/components-react/internal/components/checkbox-icon/styles.css.js","../node_modules/@awsui/components-react/internal/components/checkbox-icon/lib/default/internal/components/checkbox-icon/index.tsx","../node_modules/@awsui/components-react/select/parts/lib/default/select/parts/item.tsx","../node_modules/@awsui/components-react/select/parts/lib/default/select/parts/multiselect-item.tsx","../node_modules/@awsui/components-react/select/utils/lib/default/select/utils/get-item-props.ts","../node_modules/@awsui/components-react/select/utils/lib/default/select/utils/render-options.tsx","../node_modules/@awsui/components-react/select/parts/lib/default/select/parts/plain-list.tsx","../node_modules/react-virtual/node_modules/@reach/observe-rect/dist/observe-rect.esm.js","../node_modules/react-virtual/src/useIsomorphicLayoutEffect.js","../node_modules/react-virtual/src/useRect.js","../node_modules/react-virtual/src/index.js","../node_modules/@awsui/components-react/select/parts/lib/default/select/parts/virtual-list.tsx","../node_modules/@awsui/components-react/internal/components/dropdown-footer/styles.css.js","../node_modules/@awsui/components-react/internal/components/dropdown-footer/lib/default/internal/components/dropdown-footer/index.tsx","../node_modules/@awsui/components-react/internal/hooks/check-controlled/lib/default/internal/hooks/check-controlled/index.ts","../node_modules/@awsui/components-react/select/lib/default/select/internal.tsx","../node_modules/@awsui/components-react/internal/utils/lib/default/internal/utils/external-props.ts","../node_modules/@awsui/components-react/select/lib/default/select/index.tsx","../node_modules/@awsui/components-react/container/lib/default/container/index.tsx","../node_modules/@awsui/components-react/header/lib/default/header/index.tsx","../node_modules/@awsui/components-react/space-between/styles.css.js","../node_modules/@awsui/components-react/space-between/lib/default/space-between/internal.tsx","../node_modules/@awsui/components-react/space-between/lib/default/space-between/index.tsx","../node_modules/@awsui/components-react/button/lib/default/button/index.tsx","../node_modules/@awsui/components-react/textarea/styles.css.js","../node_modules/@awsui/components-react/textarea/lib/default/textarea/index.tsx","../node_modules/rc-picker/es/generate/moment.js","../node_modules/antd/es/config-provider/DisabledContext.js","../node_modules/antd/es/config-provider/SizeContext.js","../node_modules/rc-util/es/Children/toArray.js","../node_modules/antd/es/space/Compact.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.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/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/rc-util/es/hooks/useMemo.js","../node_modules/rc-util/es/ref.js","../node_modules/rc-util/es/raf.js","../node_modules/antd/es/_util/raf.js","../node_modules/antd/es/_util/wave.js","../node_modules/antd/es/button/button-group.js","../node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.js","../node_modules/@ant-design/icons/es/icons/LoadingOutlined.js","../node_modules/rc-util/es/Dom/findDOMNode.js","../node_modules/rc-motion/es/context.js","../node_modules/rc-motion/es/DomWrapper.js","../node_modules/rc-util/es/hooks/useState.js","../node_modules/rc-motion/es/interface.js","../node_modules/rc-motion/es/util/motion.js","../node_modules/rc-motion/es/hooks/useDomMotionEvents.js","../node_modules/rc-motion/es/hooks/useIsomorphicLayoutEffect.js","../node_modules/rc-motion/es/hooks/useStepQueue.js","../node_modules/rc-motion/es/hooks/useNextFrame.js","../node_modules/rc-motion/es/CSSMotion.js","../node_modules/rc-motion/es/hooks/useStatus.js","../node_modules/rc-motion/es/util/diff.js","../node_modules/rc-motion/es/CSSMotionList.js","../node_modules/rc-motion/es/index.js","../node_modules/antd/es/button/LoadingIcon.js","../node_modules/antd/es/button/button.js","../node_modules/antd/es/button/index.js","../node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","../node_modules/@ant-design/icons/es/icons/CloseOutlined.js","../node_modules/antd/es/_util/colors.js","../node_modules/antd/es/tag/CheckableTag.js","../node_modules/antd/es/tag/index.js","../node_modules/@ant-design/icons-svg/es/asn/CalendarOutlined.js","../node_modules/@ant-design/icons/es/icons/CalendarOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ClockCircleOutlined.js","../node_modules/@ant-design/icons/es/icons/ClockCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CloseCircleFilled.js","../node_modules/@ant-design/icons/es/icons/CloseCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/SwapRightOutlined.js","../node_modules/@ant-design/icons/es/icons/SwapRightOutlined.js","../node_modules/rc-util/es/hooks/useEvent.js","../node_modules/rc-util/es/hooks/useLayoutEffect.js","../node_modules/rc-util/es/hooks/useMergedState.js","../node_modules/rc-util/es/KeyCode.js","../node_modules/rc-picker/es/PanelContext.js","../node_modules/rc-picker/es/panels/Header.js","../node_modules/rc-picker/es/panels/DecadePanel/DecadeHeader.js","../node_modules/rc-picker/es/utils/timeUtil.js","../node_modules/rc-picker/es/panels/PanelBody.js","../node_modules/rc-picker/es/panels/DecadePanel/DecadeBody.js","../node_modules/rc-util/es/Dom/isVisible.js","../node_modules/rc-picker/es/utils/uiUtil.js","../node_modules/rc-picker/es/panels/DecadePanel/index.js","../node_modules/rc-picker/es/utils/dateUtil.js","../node_modules/rc-picker/es/panels/TimePanel/TimeHeader.js","../node_modules/rc-picker/es/panels/TimePanel/TimeUnitColumn.js","../node_modules/rc-picker/es/utils/miscUtil.js","../node_modules/rc-picker/es/panels/TimePanel/TimeBody.js","../node_modules/rc-picker/es/panels/TimePanel/index.js","../node_modules/rc-picker/es/RangeContext.js","../node_modules/rc-picker/es/hooks/useCellClassName.js","../node_modules/rc-picker/es/panels/DatePanel/DateBody.js","../node_modules/rc-picker/es/panels/DatePanel/DateHeader.js","../node_modules/rc-picker/es/panels/DatePanel/index.js","../node_modules/rc-picker/es/panels/DatetimePanel/index.js","../node_modules/rc-picker/es/panels/WeekPanel/index.js","../node_modules/rc-picker/es/panels/MonthPanel/MonthHeader.js","../node_modules/rc-picker/es/panels/MonthPanel/MonthBody.js","../node_modules/rc-picker/es/panels/MonthPanel/index.js","../node_modules/rc-picker/es/panels/QuarterPanel/QuarterHeader.js","../node_modules/rc-picker/es/panels/QuarterPanel/QuarterBody.js","../node_modules/rc-picker/es/panels/QuarterPanel/index.js","../node_modules/rc-picker/es/panels/YearPanel/YearHeader.js","../node_modules/rc-picker/es/panels/YearPanel/YearBody.js","../node_modules/rc-picker/es/panels/YearPanel/index.js","../node_modules/rc-picker/es/utils/getExtraFooter.js","../node_modules/rc-picker/es/utils/getRanges.js","../node_modules/rc-picker/es/PickerPanel.js","../node_modules/rc-util/es/Dom/addEventListener.js","../node_modules/rc-util/es/Portal.js","../node_modules/rc-trigger/es/utils/alignUtil.js","../node_modules/rc-trigger/es/utils/legacyUtil.js","../node_modules/rc-trigger/es/Popup/Mask.js","../node_modules/src/propertyUtils.js","../node_modules/src/utils.js","../node_modules/src/getOffsetParent.js","../node_modules/src/isAncestorFixed.js","../node_modules/src/getVisibleRectForElement.js","../node_modules/src/getRegion.js","../node_modules/src/getAlignOffset.js","../node_modules/src/getElFuturePos.js","../node_modules/src/align/align.js","../node_modules/src/adjustForViewport.js","../node_modules/src/align/alignElement.js","../node_modules/rc-util/es/isEqual.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/rc-align/es/util.js","../node_modules/rc-align/es/Align.js","../node_modules/rc-align/es/hooks/useBuffer.js","../node_modules/src/align/alignPoint.js","../node_modules/rc-align/es/index.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/rc-trigger/es/Popup/useVisibleStatus.js","../node_modules/rc-trigger/es/Popup/PopupInner.js","../node_modules/rc-trigger/es/Popup/useStretchStyle.js","../node_modules/rc-trigger/es/Popup/MobilePopupInner.js","../node_modules/rc-trigger/es/Popup/index.js","../node_modules/rc-util/es/isMobile.js","../node_modules/rc-trigger/es/context.js","../node_modules/rc-trigger/es/index.js","../node_modules/rc-picker/es/PickerTrigger.js","../node_modules/rc-picker/es/hooks/usePickerInput.js","../node_modules/rc-picker/es/hooks/useTextValueMapping.js","../node_modules/rc-picker/es/hooks/useValueTexts.js","../node_modules/rc-picker/es/hooks/useHoverValue.js","../node_modules/rc-picker/es/Picker.js","../node_modules/rc-picker/es/hooks/useRangeViewDates.js","../node_modules/rc-picker/es/RangePicker.js","../node_modules/rc-picker/es/hooks/useRangeDisabled.js","../node_modules/rc-picker/es/index.js","../node_modules/rc-field-form/es/FieldContext.js","../node_modules/rc-field-form/es/utils/typeUtil.js","../node_modules/src/util.ts","../node_modules/src/rule/required.ts","../node_modules/src/rule/url.ts","../node_modules/src/rule/type.ts","../node_modules/src/rule/enum.ts","../node_modules/src/rule/index.ts","../node_modules/src/rule/whitespace.ts","../node_modules/src/rule/range.ts","../node_modules/src/rule/pattern.ts","../node_modules/src/validator/type.ts","../node_modules/src/validator/index.ts","../node_modules/src/validator/string.ts","../node_modules/src/validator/method.ts","../node_modules/src/validator/number.ts","../node_modules/src/validator/boolean.ts","../node_modules/src/validator/regexp.ts","../node_modules/src/validator/integer.ts","../node_modules/src/validator/float.ts","../node_modules/src/validator/array.ts","../node_modules/src/validator/object.ts","../node_modules/src/validator/enum.ts","../node_modules/src/validator/pattern.ts","../node_modules/src/validator/date.ts","../node_modules/src/validator/required.ts","../node_modules/src/validator/any.ts","../node_modules/src/messages.ts","../node_modules/src/index.ts","../node_modules/rc-field-form/es/utils/messages.js","../node_modules/rc-util/es/utils/get.js","../node_modules/rc-util/es/utils/set.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/rc-field-form/es/utils/cloneDeep.js","../node_modules/rc-field-form/es/utils/valueUtil.js","../node_modules/rc-field-form/es/utils/validateUtil.js","../node_modules/rc-field-form/es/Field.js","../node_modules/rc-field-form/es/ListContext.js","../node_modules/rc-field-form/es/List.js","../node_modules/rc-field-form/es/utils/NameMap.js","../node_modules/rc-field-form/es/useForm.js","../node_modules/rc-field-form/es/utils/asyncUtil.js","../node_modules/rc-field-form/es/FormContext.js","../node_modules/rc-field-form/es/Form.js","../node_modules/rc-field-form/es/useWatch.js","../node_modules/rc-field-form/es/index.js","../node_modules/antd/es/form/context.js","../node_modules/antd/es/locale-provider/context.js","../node_modules/antd/es/time-picker/locale/en_US.js","../node_modules/antd/es/date-picker/locale/en_US.js","../node_modules/rc-picker/es/locale/en_US.js","../node_modules/antd/es/locale/default.js","../node_modules/antd/es/locale-provider/default.js","../node_modules/rc-pagination/es/locale/en_US.js","../node_modules/antd/es/calendar/locale/en_US.js","../node_modules/antd/es/locale-provider/LocaleReceiver.js","../node_modules/antd/es/_util/statusUtils.js","../node_modules/antd/es/date-picker/util.js","../node_modules/antd/es/date-picker/generatePicker/generateRangePicker.js","../node_modules/antd/es/date-picker/generatePicker/generateSinglePicker.js","../node_modules/antd/es/date-picker/generatePicker/index.js","../node_modules/antd/es/date-picker/PickerButton.js","../node_modules/antd/es/date-picker/PickerTag.js","../node_modules/antd/es/date-picker/index.js","../node_modules/aws-amplify/node_modules/@aws-amplify/api/node_modules/tslib/tslib.es6.js","../node_modules/aws-amplify/node_modules/@aws-amplify/api-graphql/node_modules/tslib/tslib.es6.js","../node_modules/graphql/jsutils/isObjectLike.mjs","../node_modules/graphql/polyfills/symbols.mjs","../node_modules/graphql/language/location.mjs","../node_modules/graphql/language/printLocation.mjs","../node_modules/graphql/error/GraphQLError.mjs","../node_modules/graphql/error/syntaxError.mjs","../node_modules/graphql/language/kinds.mjs","../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs","../node_modules/graphql/jsutils/defineInspect.mjs","../node_modules/graphql/jsutils/invariant.mjs","../node_modules/graphql/language/ast.mjs","../node_modules/graphql/language/tokenKind.mjs","../node_modules/graphql/jsutils/inspect.mjs","../node_modules/graphql/jsutils/devAssert.mjs","../node_modules/graphql/jsutils/instanceOf.mjs","../node_modules/graphql/language/source.mjs","../node_modules/graphql/language/directiveLocation.mjs","../node_modules/graphql/language/blockString.mjs","../node_modules/graphql/language/lexer.mjs","../node_modules/graphql/language/parser.mjs","../node_modules/graphql/language/visitor.mjs","../node_modules/graphql/language/printer.mjs","../node_modules/@aws-amplify/pubsub/node_modules/tslib/tslib.es6.js","../node_modules/zen-observable-ts/src/zenObservable.ts","../node_modules/@aws-sdk/util-hex-encoding/src/index.ts","../node_modules/@aws-amplify/core/lib-esm/Util/DateUtils.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/constants.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSignature.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/signRequest.js","../node_modules/@aws-amplify/core/lib-esm/clients/middleware/signing/signer/signatureV4/presignUrl.js","../node_modules/@aws-amplify/core/lib-esm/Signer.js","../node_modules/@aws-amplify/cache/node_modules/tslib/tslib.es6.js","../node_modules/@aws-amplify/cache/src/Utils/CacheUtils.ts","../node_modules/@aws-amplify/cache/src/StorageCache.ts","../node_modules/@aws-amplify/cache/src/BrowserStorageCache.ts","../node_modules/@aws-amplify/pubsub/src/Providers/PubSubProvider.ts","../node_modules/@aws-amplify/pubsub/src/types/PubSub.ts","../node_modules/@aws-amplify/pubsub/src/Providers/constants.ts","../node_modules/@aws-amplify/core/lib-esm/Util/Reachability.js","../node_modules/@aws-amplify/pubsub/src/utils/ReachabilityMonitor/index.ts","../node_modules/@aws-amplify/pubsub/src/utils/ReconnectionMonitor.ts","../node_modules/@aws-amplify/pubsub/src/utils/ConnectionStateMonitor.ts","../node_modules/aws-amplify/node_modules/@aws-amplify/api-graphql/lib-esm/types/index.js","../node_modules/@aws-amplify/pubsub/src/Providers/AWSAppSyncRealTimeProvider/index.ts","../node_modules/@aws-amplify/pubsub/src/internals/InternalPubSub.ts","../node_modules/@aws-amplify/api-rest/node_modules/tslib/tslib.es6.js","../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/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/index.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/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/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/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.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/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.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","../node_modules/@aws-amplify/api-rest/lib-esm/RestClient.js","../node_modules/aws-amplify/node_modules/@aws-amplify/api-graphql/lib-esm/internals/InternalGraphQLAPI.js","../node_modules/@aws-amplify/api-rest/lib-esm/RestAPI.js","../node_modules/aws-amplify/node_modules/@aws-amplify/api/lib-esm/internals/InternalAPI.js","../node_modules/aws-amplify/node_modules/@aws-amplify/api/lib-esm/API.js","../node_modules/aws-amplify/node_modules/@aws-amplify/api-graphql/lib-esm/GraphQLAPI.js","graphql/queries.js","graphql/mutations.js","components/Shared/RequestService.js","graphql/subscriptions.js","components/Requests/Request.js","../node_modules/@awsui/components-react/internal/components/portal/lib/default/internal/components/portal/index.tsx","../node_modules/@awsui/components-react/modal/styles.css.js","../node_modules/@awsui/components-react/internal/utils/lib/default/internal/utils/browser-scrollbar-size.ts","../node_modules/@awsui/components-react/modal/lib/default/modal/body-scroll.ts","../node_modules/@awsui/components-react/internal/components/focus-lock/lib/default/internal/components/focus-lock/index.tsx","../node_modules/@awsui/components-react/modal/lib/default/modal/internal.tsx","../node_modules/@awsui/components-react/internal/hooks/use-intersection-observer/lib/default/internal/hooks/use-intersection-observer/index.ts","../node_modules/@awsui/components-react/internal/components/abstract-switch/styles.css.js","../node_modules/@awsui/components-react/internal/components/abstract-switch/lib/default/internal/components/abstract-switch/index.tsx","../node_modules/@awsui/components-react/checkbox/styles.css.js","../node_modules/@awsui/components-react/checkbox/lib/default/checkbox/internal.tsx","../node_modules/@awsui/components-react/column-layout/flexible-column-layout/styles.css.js","../node_modules/@awsui/components-react/column-layout/flexible-column-layout/lib/default/column-layout/flexible-column-layout/index.tsx","../node_modules/@awsui/components-react/column-layout/lib/default/column-layout/util.tsx","../node_modules/@awsui/components-react/column-layout/styles.css.js","../node_modules/@awsui/components-react/column-layout/lib/default/column-layout/grid-column-layout.tsx","../node_modules/@awsui/components-react/column-layout/lib/default/column-layout/internal.tsx","../node_modules/@awsui/components-react/radio-group/styles.css.js","../node_modules/@awsui/components-react/radio-group/lib/default/radio-group/radio-button.tsx","../node_modules/@awsui/components-react/radio-group/lib/default/radio-group/internal.tsx","../node_modules/@awsui/components-react/internal/hooks/forward-focus/lib/default/internal/hooks/forward-focus/radio-group.ts","../node_modules/@awsui/components-react/collection-preferences/styles.css.js","../node_modules/@awsui/components-react/collection-preferences/lib/default/collection-preferences/utils.tsx","../node_modules/@awsui/components-react/toggle/styles.css.js","../node_modules/@awsui/components-react/toggle/lib/default/toggle/internal.tsx","../node_modules/@awsui/components-react/collection-preferences/lib/default/collection-preferences/visible-content.tsx","../node_modules/@dnd-kit/utilities/src/execution-context/canUseDOM.ts","../node_modules/@dnd-kit/utilities/src/type-guards/isWindow.ts","../node_modules/@dnd-kit/utilities/src/type-guards/isNode.ts","../node_modules/@dnd-kit/utilities/src/execution-context/getWindow.ts","../node_modules/@dnd-kit/utilities/src/type-guards/isDocument.ts","../node_modules/@dnd-kit/utilities/src/type-guards/isHTMLElement.ts","../node_modules/@dnd-kit/utilities/src/execution-context/getOwnerDocument.ts","../node_modules/@dnd-kit/utilities/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/@dnd-kit/utilities/src/hooks/useEvent.ts","../node_modules/@dnd-kit/utilities/src/hooks/useLatestValue.ts","../node_modules/@dnd-kit/utilities/src/hooks/useLazyMemo.ts","../node_modules/@dnd-kit/utilities/src/hooks/useNodeRef.ts","../node_modules/@dnd-kit/utilities/src/hooks/usePrevious.ts","../node_modules/@dnd-kit/utilities/src/hooks/useUniqueId.ts","../node_modules/@dnd-kit/utilities/src/adjustment.ts","../node_modules/@dnd-kit/utilities/src/event/isKeyboardEvent.ts","../node_modules/@dnd-kit/utilities/src/coordinates/getEventCoordinates.ts","../node_modules/@dnd-kit/utilities/src/event/isTouchEvent.ts","../node_modules/@dnd-kit/utilities/src/event/hasViewportRelativeCoordinates.ts","../node_modules/@dnd-kit/utilities/src/css.ts","../node_modules/@dnd-kit/utilities/src/focus/findFirstFocusableNode.ts","../node_modules/@dnd-kit/accessibility/src/components/HiddenText/HiddenText.tsx","../node_modules/@dnd-kit/accessibility/src/components/LiveRegion/LiveRegion.tsx","../node_modules/@dnd-kit/core/src/components/DndMonitor/context.ts","../node_modules/@dnd-kit/core/src/components/Accessibility/defaults.ts","../node_modules/@dnd-kit/core/src/components/Accessibility/Accessibility.tsx","../node_modules/@dnd-kit/accessibility/src/hooks/useAnnouncement.ts","../node_modules/@dnd-kit/core/src/components/DndMonitor/useDndMonitor.ts","../node_modules/@dnd-kit/core/src/store/actions.ts","../node_modules/@dnd-kit/core/src/utilities/other/noop.ts","../node_modules/@dnd-kit/core/src/sensors/useSensor.ts","../node_modules/@dnd-kit/core/src/utilities/coordinates/constants.ts","../node_modules/@dnd-kit/core/src/utilities/coordinates/distanceBetweenPoints.ts","../node_modules/@dnd-kit/core/src/utilities/coordinates/getRelativeTransformOrigin.ts","../node_modules/@dnd-kit/core/src/utilities/algorithms/helpers.ts","../node_modules/@dnd-kit/core/src/utilities/algorithms/closestCenter.ts","../node_modules/@dnd-kit/core/src/utilities/algorithms/rectIntersection.ts","../node_modules/@dnd-kit/core/src/utilities/rect/getRectDelta.ts","../node_modules/@dnd-kit/core/src/utilities/rect/rectAdjustment.ts","../node_modules/@dnd-kit/core/src/utilities/transform/parseTransform.ts","../node_modules/@dnd-kit/core/src/utilities/rect/getRect.ts","../node_modules/@dnd-kit/core/src/utilities/transform/inverseTransform.ts","../node_modules/@dnd-kit/core/src/utilities/scroll/getScrollableAncestors.ts","../node_modules/@dnd-kit/utilities/src/type-guards/isSVGElement.ts","../node_modules/@dnd-kit/core/src/utilities/scroll/isScrollable.ts","../node_modules/@dnd-kit/core/src/utilities/scroll/isFixed.ts","../node_modules/@dnd-kit/core/src/utilities/scroll/getScrollableElement.ts","../node_modules/@dnd-kit/core/src/utilities/scroll/getScrollCoordinates.ts","../node_modules/@dnd-kit/core/src/types/direction.ts","../node_modules/@dnd-kit/core/src/utilities/scroll/documentScrollingElement.ts","../node_modules/@dnd-kit/core/src/utilities/scroll/getScrollPosition.ts","../node_modules/@dnd-kit/core/src/utilities/scroll/getScrollDirectionAndSpeed.ts","../node_modules/@dnd-kit/core/src/utilities/scroll/getScrollElementRect.ts","../node_modules/@dnd-kit/core/src/utilities/scroll/getScrollOffsets.ts","../node_modules/@dnd-kit/core/src/utilities/scroll/scrollIntoViewIfNeeded.ts","../node_modules/@dnd-kit/core/src/utilities/rect/Rect.ts","../node_modules/@dnd-kit/core/src/sensors/utilities/Listeners.ts","../node_modules/@dnd-kit/core/src/sensors/utilities/hasExceededDistance.ts","../node_modules/@dnd-kit/core/src/sensors/events.ts","../node_modules/@dnd-kit/core/src/sensors/keyboard/types.ts","../node_modules/@dnd-kit/core/src/sensors/keyboard/defaults.ts","../node_modules/@dnd-kit/core/src/sensors/keyboard/KeyboardSensor.ts","../node_modules/@dnd-kit/core/src/sensors/pointer/AbstractPointerSensor.ts","../node_modules/@dnd-kit/core/src/sensors/utilities/getEventListenerTarget.ts","../node_modules/@dnd-kit/core/src/sensors/pointer/PointerSensor.ts","../node_modules/@dnd-kit/core/src/sensors/mouse/MouseSensor.ts","../node_modules/@dnd-kit/core/src/sensors/touch/TouchSensor.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useAutoScroller.ts","../node_modules/@dnd-kit/utilities/src/hooks/useInterval.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useDroppableMeasuring.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useInitialValue.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useResizeObserver.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useRect.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useMutationObserver.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useScrollableAncestors.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useScrollOffsetsDelta.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useWindowRect.ts","../node_modules/@dnd-kit/core/src/utilities/rect/getWindowClientRect.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useRects.ts","../node_modules/@dnd-kit/core/src/utilities/nodes/getMeasurableNode.ts","../node_modules/@dnd-kit/core/src/components/DndContext/defaults.ts","../node_modules/@dnd-kit/core/src/store/constructors.ts","../node_modules/@dnd-kit/core/src/store/context.ts","../node_modules/@dnd-kit/core/src/store/reducer.ts","../node_modules/@dnd-kit/core/src/components/Accessibility/components/RestoreFocus.tsx","../node_modules/@dnd-kit/core/src/modifiers/applyModifiers.ts","../node_modules/@dnd-kit/core/src/components/DndContext/DndContext.tsx","../node_modules/@dnd-kit/core/src/components/DndMonitor/useDndMonitorProvider.tsx","../node_modules/@dnd-kit/core/src/components/DndContext/hooks/useMeasuringConfiguration.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useCachedNode.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useInitialRect.ts","../node_modules/@dnd-kit/core/src/components/DndContext/hooks/useLayoutShiftScrollCompensation.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useDragOverlayMeasuring.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useRectDelta.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useScrollOffsets.ts","../node_modules/@dnd-kit/core/src/utilities/rect/adjustScale.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useCombineActivators.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useSensorSetup.ts","../node_modules/@dnd-kit/core/src/hooks/useDraggable.ts","../node_modules/@dnd-kit/core/src/hooks/utilities/useSyntheticListeners.ts","../node_modules/@dnd-kit/core/src/hooks/useDndContext.ts","../node_modules/@dnd-kit/core/src/hooks/useDroppable.ts","../node_modules/@dnd-kit/core/src/components/DragOverlay/components/AnimationManager/AnimationManager.tsx","../node_modules/@dnd-kit/core/src/components/DragOverlay/components/NullifiedContextProvider/NullifiedContextProvider.tsx","../node_modules/@dnd-kit/core/src/components/DragOverlay/components/PositionedOverlay/PositionedOverlay.tsx","../node_modules/@dnd-kit/core/src/components/DragOverlay/hooks/useDropAnimation.ts","../node_modules/@dnd-kit/core/src/components/DragOverlay/hooks/useKey.ts","../node_modules/@dnd-kit/core/src/components/DragOverlay/DragOverlay.tsx","../node_modules/@dnd-kit/sortable/src/utilities/arrayMove.ts","../node_modules/@dnd-kit/sortable/src/utilities/getSortedRects.ts","../node_modules/@dnd-kit/sortable/src/utilities/isValidIndex.ts","../node_modules/@dnd-kit/sortable/src/strategies/rectSorting.ts","../node_modules/@dnd-kit/sortable/src/strategies/verticalListSorting.ts","../node_modules/@dnd-kit/sortable/src/components/SortableContext.tsx","../node_modules/@dnd-kit/sortable/src/utilities/itemsEqual.ts","../node_modules/@dnd-kit/sortable/src/utilities/normalizeDisabled.ts","../node_modules/@dnd-kit/sortable/src/hooks/defaults.ts","../node_modules/@dnd-kit/sortable/src/hooks/useSortable.ts","../node_modules/@dnd-kit/utilities/src/hooks/useCombinedRefs.ts","../node_modules/@dnd-kit/sortable/src/hooks/utilities/useDerivedTransform.ts","../node_modules/@dnd-kit/sortable/src/types/type-guard.ts","../node_modules/@dnd-kit/sortable/src/sensors/keyboard/sortableKeyboardCoordinates.ts","../node_modules/@awsui/components-react/internal/components/handle/styles.css.js","../node_modules/@awsui/components-react/internal/components/handle/lib/default/internal/components/handle/index.tsx","../node_modules/@awsui/components-react/internal/components/drag-handle/styles.css.js","../node_modules/@awsui/components-react/internal/components/drag-handle/lib/default/internal/components/drag-handle/index.tsx","../node_modules/@awsui/components-react/collection-preferences/content-display/lib/default/collection-preferences/content-display/content-display-option.tsx","../node_modules/@awsui/components-react/collection-preferences/content-display/lib/default/collection-preferences/content-display/draggable-option.tsx","../node_modules/@awsui/components-react/collection-preferences/content-display/keyboard-sensor/utilities/lib/default/collection-preferences/content-display/keyboard-sensor/utilities/scroll.ts","../node_modules/@awsui/components-react/collection-preferences/content-display/keyboard-sensor/utilities/lib/default/collection-preferences/content-display/keyboard-sensor/utilities/events.ts","../node_modules/@awsui/components-react/collection-preferences/content-display/keyboard-sensor/utilities/lib/default/collection-preferences/content-display/keyboard-sensor/utilities/listeners.ts","../node_modules/@awsui/components-react/collection-preferences/content-display/keyboard-sensor/lib/default/collection-preferences/content-display/keyboard-sensor/defaults.ts","../node_modules/@awsui/components-react/collection-preferences/content-display/keyboard-sensor/lib/default/collection-preferences/content-display/keyboard-sensor/index.ts","../node_modules/@awsui/components-react/collection-preferences/content-display/lib/default/collection-preferences/content-display/use-drag-and-drop-reorder.ts","../node_modules/@dnd-kit/core/src/sensors/useSensors.ts","../node_modules/@awsui/components-react/collection-preferences/content-display/lib/default/collection-preferences/content-display/index.tsx","../node_modules/@awsui/components-react/collection-preferences/content-display/lib/default/collection-preferences/content-display/utils.ts","../node_modules/@awsui/components-react/collection-preferences/content-display/lib/default/collection-preferences/content-display/use-live-announcements.ts","../node_modules/@awsui/components-react/collection-preferences/lib/default/collection-preferences/index.tsx","../node_modules/@awsui/components-react/box/lib/default/box/index.tsx","../node_modules/@awsui/components-react/table/styles.css.js","../node_modules/@awsui/components-react/table/lib/default/table/tools-header.tsx","../node_modules/@awsui/components-react/table/selection-control/styles.css.js","../node_modules/@awsui/components-react/table/selection-control/lib/default/table/selection-control/index.tsx","../node_modules/@awsui/components-react/table/lib/default/table/utils.ts","../node_modules/@awsui/components-react/table/lib/default/table/use-selection.ts","../node_modules/@awsui/components-react/table/header-cell/lib/default/table/header-cell/utils.ts","../node_modules/@awsui/components-react/table/header-cell/styles.css.js","../node_modules/@awsui/components-react/table/resizer/styles.css.js","../node_modules/@awsui/components-react/table/lib/default/table/use-column-widths.tsx","../node_modules/@awsui/components-react/table/resizer/lib/default/table/resizer/index.tsx","../node_modules/@awsui/components-react/area-chart/model/lib/default/area-chart/model/async-store.ts","../node_modules/@awsui/components-react/table/lib/default/table/use-sticky-columns.ts","../node_modules/@awsui/components-react/table/header-cell/lib/default/table/header-cell/index.tsx","../node_modules/@awsui/components-react/table/lib/default/table/thead.tsx","../node_modules/@awsui/components-react/table/body-cell/styles.css.js","../node_modules/@awsui/components-react/internal/hooks/lib/default/internal/hooks/use-effect-on-update.ts","../node_modules/@awsui/components-react/table/body-cell/lib/default/table/body-cell/td-element.tsx","../node_modules/@awsui/components-react/table/body-cell/lib/default/table/body-cell/inline-editor.tsx","../node_modules/@awsui/components-react/table/body-cell/lib/default/table/body-cell/click-away.tsx","../node_modules/@awsui/components-react/table/body-cell/lib/default/table/body-cell/index.tsx","../node_modules/@awsui/components-react/table/lib/default/table/sticky-scrolling.ts","../node_modules/@awsui/components-react/table/lib/default/table/use-sticky-header.ts","../node_modules/@awsui/components-react/table/lib/default/table/sticky-header.tsx","../node_modules/@awsui/components-react/table/lib/default/table/use-sticky-scrollbar.ts","../node_modules/@awsui/components-react/table/lib/default/table/sticky-scrollbar.tsx","../node_modules/@awsui/components-react/internal/hooks/lib/default/internal/hooks/use-mouse-down-target.ts","../node_modules/@awsui/components-react/table/lib/default/table/use-table-focus-navigation.ts","../node_modules/@awsui/components-react/table/lib/default/table/internal.tsx","../node_modules/@awsui/components-react/internal/hooks/use-scroll-sync/lib/default/internal/hooks/use-scroll-sync/index.ts","../node_modules/@awsui/components-react/table/lib/default/table/use-row-events.ts","../node_modules/@awsui/components-react/table/lib/default/table/index.tsx","../node_modules/@awsui/components-react/button-dropdown/styles.css.js","../node_modules/@awsui/components-react/button-dropdown/utils/lib/default/button-dropdown/utils/utils.ts","../node_modules/@awsui/components-react/button-dropdown/item-element/styles.css.js","../node_modules/@awsui/components-react/popover/styles.css.js","../node_modules/@awsui/components-react/popover/lib/default/popover/arrow.tsx","../node_modules/@awsui/components-react/popover/utils/lib/default/popover/utils/positions.ts","../node_modules/@awsui/components-react/popover/lib/default/popover/container.tsx","../node_modules/@awsui/components-react/popover/lib/default/popover/body.tsx","../node_modules/@awsui/components-react/button-dropdown/lib/default/button-dropdown/tooltip.tsx","../node_modules/@awsui/components-react/button-dropdown/utils/lib/default/button-dropdown/utils/use-hidden-description.tsx","../node_modules/@awsui/components-react/button-dropdown/utils/lib/default/button-dropdown/utils/menu-item.ts","../node_modules/@awsui/components-react/button-dropdown/item-element/lib/default/button-dropdown/item-element/index.tsx","../node_modules/@awsui/components-react/button-dropdown/category-elements/styles.css.js","../node_modules/@awsui/components-react/button-dropdown/category-elements/lib/default/button-dropdown/category-elements/expandable-category-element.tsx","../node_modules/@awsui/components-react/button-dropdown/category-elements/lib/default/button-dropdown/category-elements/category-element.tsx","../node_modules/@awsui/components-react/button-dropdown/mobile-expandable-group/styles.css.js","../node_modules/@awsui/components-react/button-dropdown/mobile-expandable-group/lib/default/button-dropdown/mobile-expandable-group/mobile-expandable-group.tsx","../node_modules/@awsui/components-react/button-dropdown/category-elements/lib/default/button-dropdown/category-elements/mobile-expandable-category-element.tsx","../node_modules/@awsui/components-react/button-dropdown/lib/default/button-dropdown/items-list.tsx","../node_modules/@awsui/components-react/button-dropdown/utils/lib/default/button-dropdown/utils/create-items-tree.ts","../node_modules/@awsui/components-react/button-dropdown/utils/lib/default/button-dropdown/utils/move-highlight.ts","../node_modules/@awsui/components-react/button-dropdown/utils/lib/default/button-dropdown/utils/use-button-dropdown.ts","../node_modules/@awsui/components-react/button-dropdown/utils/lib/default/button-dropdown/utils/use-highlighted-menu.ts","../node_modules/@awsui/components-react/button-dropdown/lib/default/button-dropdown/internal.tsx","../node_modules/@awsui/components-react/button-dropdown/lib/default/button-dropdown/index.tsx","../node_modules/@awsui/components-react/text-filter/styles.css.js","../node_modules/@awsui/components-react/text-filter/lib/default/text-filter/search-results.tsx","../node_modules/@awsui/components-react/text-filter/lib/default/text-filter/internal.tsx","../node_modules/@awsui/components-react/text-filter/lib/default/text-filter/index.tsx","../node_modules/@awsui/components-react/pagination/styles.css.js","../node_modules/@awsui/components-react/pagination/lib/default/pagination/internal.tsx","../node_modules/@awsui/components-react/pagination/lib/default/pagination/utils.ts","../node_modules/@awsui/components-react/pagination/lib/default/pagination/index.tsx","../node_modules/@awsui/components-react/modal/lib/default/modal/index.tsx","../node_modules/@awsui/components-react/column-layout/lib/default/column-layout/index.tsx","../node_modules/@awsui/collection-hooks/dist/mjs/operations/filter.js","../node_modules/@awsui/collection-hooks/dist/mjs/date-utils/parse-iso-date.js","../node_modules/@awsui/collection-hooks/dist/mjs/date-utils/compare-dates.js","../node_modules/@awsui/collection-hooks/dist/mjs/operations/property-filter.js","../node_modules/@awsui/collection-hooks/dist/mjs/operations/paginate.js","../node_modules/@awsui/collection-hooks/dist/mjs/operations/index.js","../node_modules/@awsui/collection-hooks/dist/mjs/operations/sort.js","../node_modules/@awsui/collection-hooks/dist/mjs/utils.js","../node_modules/@awsui/collection-hooks/dist/mjs/use-collection.js","../node_modules/@awsui/collection-hooks/dist/mjs/use-collection-state.js","../node_modules/@awsui/components-react/status-indicator/lib/default/status-indicator/index.tsx","components/Shared/Status.js","components/Approvals/Approvals.js","../node_modules/@awsui/components-react/text-content/styles.css.js","../node_modules/@awsui/components-react/text-content/lib/default/text-content/index.tsx","../node_modules/@awsui/components-react/token-group/styles.css.js","../node_modules/@awsui/components-react/internal/components/token-list/styles.css.js","../node_modules/@awsui/components-react/internal/components/token-list/lib/default/internal/components/token-list/token-limit-toggle.tsx","../node_modules/@awsui/components-react/internal/components/token-list/lib/default/internal/components/token-list/token-focus-controller.tsx","../node_modules/@awsui/components-react/internal/components/token-list/lib/default/internal/components/token-list/index.tsx","../node_modules/@awsui/components-react/token-group/lib/default/token-group/dismiss-button.tsx","../node_modules/@awsui/components-react/token-group/lib/default/token-group/token.tsx","../node_modules/@awsui/components-react/token-group/lib/default/token-group/internal.tsx","../node_modules/@awsui/components-react/multiselect/styles.css.js","../node_modules/@awsui/components-react/multiselect/lib/default/multiselect/internal.tsx","../node_modules/@awsui/components-react/multiselect/lib/default/multiselect/index.tsx","../node_modules/@awsui/components-react/spinner/lib/default/spinner/index.tsx","../node_modules/@awsui/components-react/expandable-section/lib/default/expandable-section/index.tsx","../node_modules/@awsui/components-react/checkbox/lib/default/checkbox/index.tsx","components/Shared/Ous.js","components/Admin/Approvers.js","../node_modules/@awsui/components-react/content-layout/lib/default/content-layout/index.tsx","../node_modules/@awsui/components-react/toggle/lib/default/toggle/index.tsx","../node_modules/antd/es/divider/index.js","components/Admin/Settings.js","../node_modules/antd/es/skeleton/Element.js","../node_modules/antd/es/skeleton/Avatar.js","../node_modules/antd/es/skeleton/Button.js","../node_modules/@ant-design/icons-svg/es/asn/DotChartOutlined.js","../node_modules/@ant-design/icons/es/icons/DotChartOutlined.js","../node_modules/antd/es/skeleton/Node.js","../node_modules/antd/es/skeleton/Image.js","../node_modules/antd/es/skeleton/Input.js","../node_modules/antd/es/skeleton/Paragraph.js","../node_modules/antd/es/skeleton/Title.js","../node_modules/antd/es/skeleton/Skeleton.js","../node_modules/antd/es/skeleton/index.js","../node_modules/antd/es/statistic/Number.js","../node_modules/antd/es/statistic/Statistic.js","../node_modules/antd/es/statistic/utils.js","../node_modules/antd/es/statistic/Countdown.js","../node_modules/antd/es/_util/hooks/useForceUpdate.js","../node_modules/antd/es/statistic/index.js","components/Sessions/Timer.js","components/Shared/Details.js","components/Requests/View.js","components/Approvals/Review.js","components/Audit/AuditApprovals.js","components/Sessions/Logs.js","components/Audit/AuditSessions.js","../node_modules/@awsui/components-react/grid/lib/default/grid/index.tsx","components/Navigation/Landing.js","../node_modules/@awsui/components-react/alert/lib/default/alert/index.tsx","../node_modules/@awsui/components-react/top-navigation/styles.css.js","../node_modules/@awsui/components-react/top-navigation/lib/default/top-navigation/use-top-navigation.ts","../node_modules/@awsui/components-react/internal/components/menu-dropdown/styles.css.js","../node_modules/@awsui/components-react/internal/components/menu-dropdown/lib/default/internal/components/menu-dropdown/index.tsx","../node_modules/@awsui/components-react/top-navigation/parts/lib/default/top-navigation/parts/utility.tsx","../node_modules/@awsui/components-react/top-navigation/parts/overflow-menu/lib/default/top-navigation/parts/overflow-menu/router.tsx","../node_modules/focus-lock/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/react-focus-lock/dist/es2015/FocusGuard.js","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/react-focus-lock/dist/es2015/medium.js","../node_modules/react-focus-lock/dist/es2015/Lock.js","../node_modules/react-clientside-effect/lib/index.es.js","../node_modules/focus-lock/dist/es2015/utils/array.js","../node_modules/focus-lock/dist/es2015/utils/getActiveElement.js","../node_modules/focus-lock/dist/es2015/utils/all-affected.js","../node_modules/focus-lock/dist/es2015/focusInside.js","../node_modules/focus-lock/dist/es2015/utils/is.js","../node_modules/focus-lock/dist/es2015/utils/correctFocus.js","../node_modules/focus-lock/dist/es2015/utils/firstFocus.js","../node_modules/focus-lock/dist/es2015/solver.js","../node_modules/focus-lock/dist/es2015/utils/tabOrder.js","../node_modules/focus-lock/dist/es2015/utils/tabUtils.js","../node_modules/focus-lock/dist/es2015/utils/tabbables.js","../node_modules/focus-lock/dist/es2015/utils/DOMutils.js","../node_modules/focus-lock/dist/es2015/utils/parenting.js","../node_modules/focus-lock/dist/es2015/focusMerge.js","../node_modules/focus-lock/dist/es2015/setFocus.js","../node_modules/focus-lock/dist/es2015/index.js","../node_modules/react-focus-lock/dist/es2015/util.js","../node_modules/react-focus-lock/dist/es2015/Trap.js","../node_modules/focus-lock/dist/es2015/focusIsHidden.js","../node_modules/focus-lock/dist/es2015/focusables.js","../node_modules/react-focus-lock/dist/es2015/Combination.js","../node_modules/react-focus-lock/dist/es2015/index.js","../node_modules/@awsui/components-react/top-navigation/parts/overflow-menu/lib/default/top-navigation/parts/overflow-menu/header.tsx","../node_modules/@awsui/components-react/top-navigation/parts/overflow-menu/lib/default/top-navigation/parts/overflow-menu/menu-item.tsx","../node_modules/@awsui/components-react/top-navigation/parts/overflow-menu/views/lib/default/top-navigation/parts/overflow-menu/views/utilities.tsx","../node_modules/@awsui/components-react/top-navigation/parts/overflow-menu/views/lib/default/top-navigation/parts/overflow-menu/views/submenu.tsx","../node_modules/@awsui/components-react/top-navigation/parts/overflow-menu/lib/default/top-navigation/parts/overflow-menu/index.tsx","../node_modules/@awsui/components-react/top-navigation/lib/default/top-navigation/internal.tsx","../node_modules/@awsui/components-react/top-navigation/lib/default/top-navigation/index.tsx","components/Navigation/Header.js","components/Admin/Eligible.js","components/Sessions/Active.js","components/Sessions/Audit.js","components/Navigation/Nav.js","media/Home.svg","App.js","index.js"],"sourcesContent":["import {\n  BLOCK_SIZE,\n  DIGEST_LENGTH,\n  INIT,\n  KEY,\n  MAX_HASHABLE_LENGTH\n} from \"./constants\";\n\n/**\n * @internal\n */\nexport class RawSha256 {\n  private state: Int32Array = Int32Array.from(INIT);\n  private temp: Int32Array = new Int32Array(64);\n  private buffer: Uint8Array = new Uint8Array(64);\n  private bufferLength: number = 0;\n  private bytesHashed: number = 0;\n\n  /**\n   * @internal\n   */\n  finished: boolean = false;\n\n  update(data: Uint8Array): void {\n    if (this.finished) {\n      throw new Error(\"Attempted to update an already finished hash.\");\n    }\n\n    let position = 0;\n    let { byteLength } = data;\n    this.bytesHashed += byteLength;\n\n    if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n      throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n    }\n\n    while (byteLength > 0) {\n      this.buffer[this.bufferLength++] = data[position++];\n      byteLength--;\n\n      if (this.bufferLength === BLOCK_SIZE) {\n        this.hashBuffer();\n        this.bufferLength = 0;\n      }\n    }\n  }\n\n  digest(): Uint8Array {\n    if (!this.finished) {\n      const bitsHashed = this.bytesHashed * 8;\n      const bufferView = new DataView(\n        this.buffer.buffer,\n        this.buffer.byteOffset,\n        this.buffer.byteLength\n      );\n\n      const undecoratedLength = this.bufferLength;\n      bufferView.setUint8(this.bufferLength++, 0x80);\n\n      // Ensure the final block has enough room for the hashed length\n      if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n        for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {\n          bufferView.setUint8(i, 0);\n        }\n        this.hashBuffer();\n        this.bufferLength = 0;\n      }\n\n      for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n        bufferView.setUint8(i, 0);\n      }\n      bufferView.setUint32(\n        BLOCK_SIZE - 8,\n        Math.floor(bitsHashed / 0x100000000),\n        true\n      );\n      bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n\n      this.hashBuffer();\n\n      this.finished = true;\n    }\n\n    // The value in state is little-endian rather than big-endian, so flip\n    // each word into a new Uint8Array\n    const out = new Uint8Array(DIGEST_LENGTH);\n    for (let i = 0; i < 8; i++) {\n      out[i * 4] = (this.state[i] >>> 24) & 0xff;\n      out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n      out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n      out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n    }\n\n    return out;\n  }\n\n  private hashBuffer(): void {\n    const { buffer, state } = this;\n\n    let state0 = state[0],\n      state1 = state[1],\n      state2 = state[2],\n      state3 = state[3],\n      state4 = state[4],\n      state5 = state[5],\n      state6 = state[6],\n      state7 = state[7];\n\n    for (let i = 0; i < BLOCK_SIZE; i++) {\n      if (i < 16) {\n        this.temp[i] =\n          ((buffer[i * 4] & 0xff) << 24) |\n          ((buffer[i * 4 + 1] & 0xff) << 16) |\n          ((buffer[i * 4 + 2] & 0xff) << 8) |\n          (buffer[i * 4 + 3] & 0xff);\n      } else {\n        let u = this.temp[i - 2];\n        const t1 =\n          ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n\n        u = this.temp[i - 15];\n        const t2 =\n          ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n\n        this.temp[i] =\n          ((t1 + this.temp[i - 7]) | 0) + ((t2 + this.temp[i - 16]) | 0);\n      }\n\n      const t1 =\n        ((((((state4 >>> 6) | (state4 << 26)) ^\n          ((state4 >>> 11) | (state4 << 21)) ^\n          ((state4 >>> 25) | (state4 << 7))) +\n          ((state4 & state5) ^ (~state4 & state6))) |\n          0) +\n          ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) |\n        0;\n\n      const t2 =\n        ((((state0 >>> 2) | (state0 << 30)) ^\n          ((state0 >>> 13) | (state0 << 19)) ^\n          ((state0 >>> 22) | (state0 << 10))) +\n          ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |\n        0;\n\n      state7 = state6;\n      state6 = state5;\n      state5 = state4;\n      state4 = (state3 + t1) | 0;\n      state3 = state2;\n      state2 = state1;\n      state1 = state0;\n      state0 = (t1 + t2) | 0;\n    }\n\n    state[0] += state0;\n    state[1] += state1;\n    state[2] += state2;\n    state[3] += state3;\n    state[4] += state4;\n    state[5] += state5;\n    state[6] += state6;\n    state[7] += state7;\n  }\n}\n","/**\n * @internal\n */\nexport const BLOCK_SIZE: number = 64;\n\n/**\n * @internal\n */\nexport const DIGEST_LENGTH: number = 32;\n\n/**\n * @internal\n */\nexport const KEY = new Uint32Array([\n  0x428a2f98,\n  0x71374491,\n  0xb5c0fbcf,\n  0xe9b5dba5,\n  0x3956c25b,\n  0x59f111f1,\n  0x923f82a4,\n  0xab1c5ed5,\n  0xd807aa98,\n  0x12835b01,\n  0x243185be,\n  0x550c7dc3,\n  0x72be5d74,\n  0x80deb1fe,\n  0x9bdc06a7,\n  0xc19bf174,\n  0xe49b69c1,\n  0xefbe4786,\n  0x0fc19dc6,\n  0x240ca1cc,\n  0x2de92c6f,\n  0x4a7484aa,\n  0x5cb0a9dc,\n  0x76f988da,\n  0x983e5152,\n  0xa831c66d,\n  0xb00327c8,\n  0xbf597fc7,\n  0xc6e00bf3,\n  0xd5a79147,\n  0x06ca6351,\n  0x14292967,\n  0x27b70a85,\n  0x2e1b2138,\n  0x4d2c6dfc,\n  0x53380d13,\n  0x650a7354,\n  0x766a0abb,\n  0x81c2c92e,\n  0x92722c85,\n  0xa2bfe8a1,\n  0xa81a664b,\n  0xc24b8b70,\n  0xc76c51a3,\n  0xd192e819,\n  0xd6990624,\n  0xf40e3585,\n  0x106aa070,\n  0x19a4c116,\n  0x1e376c08,\n  0x2748774c,\n  0x34b0bcb5,\n  0x391c0cb3,\n  0x4ed8aa4a,\n  0x5b9cca4f,\n  0x682e6ff3,\n  0x748f82ee,\n  0x78a5636f,\n  0x84c87814,\n  0x8cc70208,\n  0x90befffa,\n  0xa4506ceb,\n  0xbef9a3f7,\n  0xc67178f2\n]);\n\n/**\n * @internal\n */\nexport const INIT = [\n  0x6a09e667,\n  0xbb67ae85,\n  0x3c6ef372,\n  0xa54ff53a,\n  0x510e527f,\n  0x9b05688c,\n  0x1f83d9ab,\n  0x5be0cd19\n];\n\n/**\n * @internal\n */\nexport const MAX_HASHABLE_LENGTH = 2 ** 53 - 1;\n","export * from \"./jsSha256\";\n","import { BLOCK_SIZE } from \"./constants\";\nimport { RawSha256 } from \"./RawSha256\";\nimport { Hash, SourceData } from \"@aws-sdk/types\";\nimport { isEmptyData, convertToBuffer } from \"@aws-crypto/util\";\n\nexport class Sha256 implements Hash {\n  private readonly hash = new RawSha256();\n  private readonly outer?: RawSha256;\n  private error: any;\n\n  constructor(secret?: SourceData) {\n    if (secret) {\n      this.outer = new RawSha256();\n      const inner = bufferFromSecret(secret);\n      const outer = new Uint8Array(BLOCK_SIZE);\n      outer.set(inner);\n\n      for (let i = 0; i < BLOCK_SIZE; i++) {\n        inner[i] ^= 0x36;\n        outer[i] ^= 0x5c;\n      }\n\n      this.hash.update(inner);\n      this.outer.update(outer);\n\n      // overwrite the copied key in memory\n      for (let i = 0; i < inner.byteLength; i++) {\n        inner[i] = 0;\n      }\n    }\n  }\n\n  update(toHash: SourceData): void {\n    if (isEmptyData(toHash) || this.error) {\n      return;\n    }\n\n    try {\n      this.hash.update(convertToBuffer(toHash));\n    } catch (e) {\n      this.error = e;\n    }\n  }\n\n  /* This synchronous method keeps compatibility\n   * with the v2 aws-sdk.\n   */\n  digestSync(): Uint8Array {\n    if (this.error) {\n      throw this.error;\n    }\n\n    if (this.outer) {\n      if (!this.outer.finished) {\n        this.outer.update(this.hash.digest());\n      }\n\n      return this.outer.digest();\n    }\n\n    return this.hash.digest();\n  }\n\n  /* The underlying digest method here is synchronous.\n   * To keep the same interface with the other hash functions\n   * the default is to expose this as an async method.\n   * However, it can sometimes be useful to have a sync method.\n   */\n  async digest(): Promise<Uint8Array> {\n    return this.digestSync();\n  }\n}\n\nfunction bufferFromSecret(secret: SourceData): Uint8Array {\n  let input = convertToBuffer(secret);\n\n  if (input.byteLength > BLOCK_SIZE) {\n    const bufferHash = new RawSha256();\n    bufferHash.update(input);\n    input = bufferHash.digest();\n  }\n\n  const buffer = new Uint8Array(BLOCK_SIZE);\n  buffer.set(input);\n  return buffer;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 as fromUtf8Browser } from \"@aws-sdk/util-utf8-browser\";\n\n// Quick polyfill\nconst fromUtf8 =\n  typeof Buffer !== \"undefined\" && Buffer.from\n    ? (input: string) => Buffer.from(input, \"utf8\")\n    : fromUtf8Browser;\n\nexport function convertToBuffer(data: SourceData): Uint8Array {\n  // Already a Uint8, do nothing\n  if (data instanceof Uint8Array) return data;\n\n  if (typeof data === \"string\") {\n    return fromUtf8(data);\n  }\n\n  if (ArrayBuffer.isView(data)) {\n    return new Uint8Array(\n      data.buffer,\n      data.byteOffset,\n      data.byteLength / Uint8Array.BYTES_PER_ELEMENT\n    );\n  }\n\n  return new Uint8Array(data);\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport { convertToBuffer } from \"./convertToBuffer\";\nexport { isEmptyData } from \"./isEmptyData\";\nexport { numToUint8 } from \"./numToUint8\";\nexport {uint32ArrayFrom} from './uint32ArrayFrom';\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\n\nexport function isEmptyData(data: SourceData): boolean {\n  if (typeof data === \"string\") {\n    return data.length === 0;\n  }\n\n  return data.byteLength === 0;\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function numToUint8(num: number) {\n  return new Uint8Array([\n    (num & 0xff000000) >> 24,\n    (num & 0x00ff0000) >> 16,\n    (num & 0x0000ff00) >> 8,\n    num & 0x000000ff,\n  ]);\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// IE 11 does not support Array.from, so we do it manually\nexport function uint32ArrayFrom(a_lookUpTable: Array<number>): Uint32Array {\n  if (!Array.from) {\n    const return_array = new Uint32Array(a_lookUpTable.length)\n    let a_index = 0\n    while (a_index < a_lookUpTable.length) {\n      return_array[a_index] = a_lookUpTable[a_index]\n    }\n    return return_array\n  }\n  return Uint32Array.from(a_lookUpTable)\n}\n","import { fromUtf8 as jsFromUtf8, toUtf8 as jsToUtf8 } from \"./pureJs\";\nimport { fromUtf8 as textEncoderFromUtf8, toUtf8 as textEncoderToUtf8 } from \"./whatwgEncodingApi\";\n\ndeclare const TextDecoder: Function | undefined;\ndeclare const TextEncoder: Function | undefined;\n\nexport const fromUtf8 = (input: string): Uint8Array =>\n  typeof TextEncoder === \"function\" ? textEncoderFromUtf8(input) : jsFromUtf8(input);\n\nexport const toUtf8 = (input: Uint8Array): string =>\n  typeof TextDecoder === \"function\" ? textEncoderToUtf8(input) : jsToUtf8(input);\n","/**\n * A declaration of the global TextEncoder and TextDecoder constructors.\n *\n * @see https://encoding.spec.whatwg.org/\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Encoding {\n  interface TextDecoderOptions {\n    fatal?: boolean;\n    ignoreBOM?: boolean;\n  }\n\n  interface TextDecodeOptions {\n    stream?: boolean;\n  }\n\n  interface TextDecoder {\n    readonly encoding: string;\n    readonly fatal: boolean;\n    readonly ignoreBOM: boolean;\n    decode(input?: ArrayBuffer | ArrayBufferView, options?: TextDecodeOptions): string;\n  }\n\n  export interface TextDecoderConstructor {\n    new (label?: string, options?: TextDecoderOptions): TextDecoder;\n  }\n\n  interface TextEncoder {\n    readonly encoding: \"utf-8\";\n    encode(input?: string): Uint8Array;\n  }\n\n  export interface TextEncoderConstructor {\n    new (): TextEncoder;\n  }\n}\n\ndeclare const TextDecoder: Encoding.TextDecoderConstructor;\n\ndeclare const TextEncoder: Encoding.TextEncoderConstructor;\n\nexport function fromUtf8(input: string): Uint8Array {\n  return new TextEncoder().encode(input);\n}\n\nexport function toUtf8(input: Uint8Array): string {\n  return new TextDecoder(\"utf-8\").decode(input);\n}\n","/**\n * Converts a JS string from its native UCS-2/UTF-16 representation into a\n * Uint8Array of the bytes used to represent the equivalent characters in UTF-8.\n *\n * Cribbed from the `goog.crypt.stringToUtf8ByteArray` function in the Google\n * Closure library, though updated to use typed arrays.\n */\nexport const fromUtf8 = (input: string): Uint8Array => {\n  const bytes: Array<number> = [];\n  for (let i = 0, len = input.length; i < len; i++) {\n    const value = input.charCodeAt(i);\n    if (value < 0x80) {\n      bytes.push(value);\n    } else if (value < 0x800) {\n      bytes.push((value >> 6) | 0b11000000, (value & 0b111111) | 0b10000000);\n    } else if (i + 1 < input.length && (value & 0xfc00) === 0xd800 && (input.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n      const surrogatePair = 0x10000 + ((value & 0b1111111111) << 10) + (input.charCodeAt(++i) & 0b1111111111);\n      bytes.push(\n        (surrogatePair >> 18) | 0b11110000,\n        ((surrogatePair >> 12) & 0b111111) | 0b10000000,\n        ((surrogatePair >> 6) & 0b111111) | 0b10000000,\n        (surrogatePair & 0b111111) | 0b10000000\n      );\n    } else {\n      bytes.push((value >> 12) | 0b11100000, ((value >> 6) & 0b111111) | 0b10000000, (value & 0b111111) | 0b10000000);\n    }\n  }\n\n  return Uint8Array.from(bytes);\n};\n\n/**\n * Converts a typed array of bytes containing UTF-8 data into a native JS\n * string.\n *\n * Partly cribbed from the `goog.crypt.utf8ByteArrayToString` function in the\n * Google Closure library, though updated to use typed arrays and to better\n * handle astral plane code points.\n */\nexport const toUtf8 = (input: Uint8Array): string => {\n  let decoded = \"\";\n  for (let i = 0, len = input.length; i < len; i++) {\n    const byte = input[i];\n    if (byte < 0x80) {\n      decoded += String.fromCharCode(byte);\n    } else if (0b11000000 <= byte && byte < 0b11100000) {\n      const nextByte = input[++i];\n      decoded += String.fromCharCode(((byte & 0b11111) << 6) | (nextByte & 0b111111));\n    } else if (0b11110000 <= byte && byte < 0b101101101) {\n      const surrogatePair = [byte, input[++i], input[++i], input[++i]];\n      const encoded = \"%\" + surrogatePair.map((byteValue) => byteValue.toString(16)).join(\"%\");\n      decoded += decodeURIComponent(encoded);\n    } else {\n      decoded += String.fromCharCode(\n        ((byte & 0b1111) << 12) | ((input[++i] & 0b111111) << 6) | (input[++i] & 0b111111)\n      );\n    }\n  }\n\n  return decoded;\n};\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object 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 * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\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  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\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(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, 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 interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, 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(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\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(null, 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(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.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    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().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)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var 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 (!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  var 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  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\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 (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var 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      case undefined:\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) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var 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 coersion 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// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var 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  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var 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  var length = this.length | 0\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.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  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\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  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var 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 (isNaN(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 (Buffer.TYPED_ARRAY_SUPPORT &&\n        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  var indexSize = 1\n  var arrLength = arr.length\n  var 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  var i\n  if (dir) {\n    var 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      var found = true\n      for (var 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  var 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  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(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 latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, 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  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var 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  var 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        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(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  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var 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\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var 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  var res = ''\n  var 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  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; 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  var 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  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\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 = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\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  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\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 = function readUInt32BE (offset, noAssert) {\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.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var 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  var i = byteLength\n  var mul = 1\n  var 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  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  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\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  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.readFloatLE = function readFloatLE (offset, noAssert) {\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  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  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  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 = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var 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 = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var 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 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\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  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\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  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\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  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\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  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var 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    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var 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 (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\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  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\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  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\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  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\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  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\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  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  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 (!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('sourceStart out of bounds')\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  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\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 (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\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  } else if (typeof val === 'number') {\n    val = val & 255\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  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).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 stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var 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  var byteArray = []\n  for (var 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  var c, hi, lo\n  var byteArray = []\n  for (var 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  for (var 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\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\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 <https://feross.org/opensource> */\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","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","module.exports = self.fetch || (self.fetch = require('unfetch').default || require('unfetch'));\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t//     character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array == null ? 0 : array.length,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\nmodule.exports = arrayMap;\n","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\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\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\nmodule.exports = baseProperty;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor;\n\n/**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\nfunction baseRepeat(string, n) {\n  var result = '';\n  if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n    return result;\n  }\n  // Leverage the exponentiation by squaring algorithm for a faster repeat.\n  // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n  do {\n    if (n % 2) {\n      result += string;\n    }\n    n = nativeFloor(n / 2);\n    if (n) {\n      string += string;\n    }\n  } while (n);\n\n  return result;\n}\n\nmodule.exports = baseRepeat;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\n","var Symbol = require('./_Symbol'),\n    arrayMap = require('./_arrayMap'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isArray(value)) {\n    // Recursively convert values (susceptible to call stack limits).\n    return arrayMap(value, baseToString) + '';\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var baseRepeat = require('./_baseRepeat'),\n    baseToString = require('./_baseToString'),\n    castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    stringSize = require('./_stringSize'),\n    stringToArray = require('./_stringToArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil;\n\n/**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\nfunction createPadding(length, chars) {\n  chars = chars === undefined ? ' ' : baseToString(chars);\n\n  var charsLength = chars.length;\n  if (charsLength < 2) {\n    return charsLength ? baseRepeat(chars, length) : chars;\n  }\n  var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n  return hasUnicode(chars)\n    ? castSlice(stringToArray(result), 0, length).join('')\n    : result.slice(0, length);\n}\n\nmodule.exports = createPadding;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\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/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\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\nmodule.exports = getRawTag;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\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 nativeObjectToString = objectProto.toString;\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\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\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\nmodule.exports = root;\n","var asciiSize = require('./_asciiSize'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n  return hasUnicode(string)\n    ? unicodeSize(string)\n    : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n","var asciiToArray = require('./_asciiToArray'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n  var result = reUnicode.lastIndex = 0;\n  while (reUnicode.test(string)) {\n    ++result;\n  }\n  return result;\n}\n\nmodule.exports = unicodeSize;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\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 * 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        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\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        clearTimeout(timerId);\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\nmodule.exports = debounce;\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\nmodule.exports = isArray;\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\nmodule.exports = isObject;\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\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\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) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\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\nmodule.exports = now;\n","var createPadding = require('./_createPadding'),\n    stringSize = require('./_stringSize'),\n    toInteger = require('./toInteger'),\n    toString = require('./toString');\n\n/**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc   '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\nfunction padEnd(string, length, chars) {\n  string = toString(string);\n  length = toInteger(length);\n\n  var strLength = length ? stringSize(string) : 0;\n  return (length && strLength < length)\n    ? (string + createPadding(length - strLength, chars))\n    : string;\n}\n\nmodule.exports = padEnd;\n","var createPadding = require('./_createPadding'),\n    stringSize = require('./_stringSize'),\n    toInteger = require('./toInteger'),\n    toString = require('./toString');\n\n/**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => '   abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\nfunction padStart(string, length, chars) {\n  string = toString(string);\n  length = toInteger(length);\n\n  var strLength = length ? stringSize(string) : 0;\n  return (length && strLength < length)\n    ? (createPadding(length - strLength, chars) + string)\n    : string;\n}\n\nmodule.exports = padStart;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n  if (!value) {\n    return value === 0 ? value : 0;\n  }\n  value = toNumber(value);\n  if (value === INFINITY || value === -INFINITY) {\n    var sign = (value < 0 ? -1 : 1);\n    return sign * MAX_INTEGER;\n  }\n  return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n  var result = toFinite(value),\n      remainder = result % 1;\n\n  return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\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/**\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 = baseTrim(value);\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 = toNumber;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        return name.match('^[^/\\\\\\\\]*$') != null;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.4';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = []\n  var key = 0\n  var index = 0\n  var path = ''\n  var defaultDelimiter = options && options.delimiter || '/'\n  var res\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0]\n    var escaped = res[1]\n    var offset = res.index\n    path += str.slice(index, offset)\n    index = offset + m.length\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1]\n      continue\n    }\n\n    var next = str[index]\n    var prefix = res[2]\n    var name = res[3]\n    var capture = res[4]\n    var group = res[5]\n    var modifier = res[6]\n    var asterisk = res[7]\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path)\n      path = ''\n    }\n\n    var partial = prefix != null && next != null && next !== prefix\n    var repeat = modifier === '+' || modifier === '*'\n    var optional = modifier === '?' || modifier === '*'\n    var delimiter = prefix || defaultDelimiter\n    var pattern = capture || group\n    var prevText = prefix || (typeof tokens[tokens.length - 1] === 'string' ? tokens[tokens.length - 1] : '')\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : restrictBacktrack(delimiter, prevText))\n    })\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index)\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path)\n  }\n\n  return tokens\n}\n\nfunction restrictBacktrack(delimiter, prevText) {\n  if (!prevText || prevText.indexOf(delimiter) > -1) {\n    return '[^' + escapeString(delimiter) + ']+?'\n  }\n\n  return escapeString(prevText) + '|(?:(?!' + escapeString(prevText) + ')[^' + escapeString(delimiter) + '])+?'\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length)\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n    }\n  }\n\n  return function (obj, opts) {\n    var path = ''\n    var data = obj || {}\n    var options = opts || {}\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i]\n\n      if (typeof token === 'string') {\n        path += token\n\n        continue\n      }\n\n      var value = data[token.name]\n      var segment\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j])\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g)\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      })\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = []\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source)\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  var strict = options.strict\n  var end = options.end !== false\n  var route = ''\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i]\n\n    if (typeof token === 'string') {\n      route += escapeString(token)\n    } else {\n      var prefix = escapeString(token.prefix)\n      var capture = '(?:' + token.pattern + ')'\n\n      keys.push(token)\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*'\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?'\n        } else {\n          capture = prefix + '(' + capture + ')?'\n        }\n      } else {\n        capture = prefix + '(' + capture + ')'\n      }\n\n      route += capture\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/')\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n  }\n\n  if (end) {\n    route += '$'\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options)\n    keys = []\n  }\n\n  options = options || {}\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","module.exports = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\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","// 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// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n  sep = sep || '&';\n  eq = eq || '=';\n  var obj = {};\n\n  if (typeof qs !== 'string' || qs.length === 0) {\n    return obj;\n  }\n\n  var regexp = /\\+/g;\n  qs = qs.split(sep);\n\n  var maxKeys = 1000;\n  if (options && typeof options.maxKeys === 'number') {\n    maxKeys = options.maxKeys;\n  }\n\n  var len = qs.length;\n  // maxKeys <= 0 means that we should not limit keys count\n  if (maxKeys > 0 && len > maxKeys) {\n    len = maxKeys;\n  }\n\n  for (var i = 0; i < len; ++i) {\n    var x = qs[i].replace(regexp, '%20'),\n        idx = x.indexOf(eq),\n        kstr, vstr, k, v;\n\n    if (idx >= 0) {\n      kstr = x.substr(0, idx);\n      vstr = x.substr(idx + 1);\n    } else {\n      kstr = x;\n      vstr = '';\n    }\n\n    k = decodeURIComponent(kstr);\n    v = decodeURIComponent(vstr);\n\n    if (!hasOwnProperty(obj, k)) {\n      obj[k] = v;\n    } else if (Array.isArray(obj[k])) {\n      obj[k].push(v);\n    } else {\n      obj[k] = [obj[k], v];\n    }\n  }\n\n  return obj;\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\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n  switch (typeof v) {\n    case 'string':\n      return v;\n\n    case 'boolean':\n      return v ? 'true' : 'false';\n\n    case 'number':\n      return isFinite(v) ? v : '';\n\n    default:\n      return '';\n  }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n  sep = sep || '&';\n  eq = eq || '=';\n  if (obj === null) {\n    obj = undefined;\n  }\n\n  if (typeof obj === 'object') {\n    return Object.keys(obj).map(function(k) {\n      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n      if (Array.isArray(obj[k])) {\n        return obj[k].map(function(v) {\n          return ks + encodeURIComponent(stringifyPrimitive(v));\n        }).join(sep);\n      } else {\n        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n      }\n    }).join(sep);\n\n  }\n\n  if (!name) return '';\n  return encodeURIComponent(stringifyPrimitive(name)) + eq +\n         encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\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","module.exports = require('./lib/index.js');\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _core = require('../core');\n\nvar _metaProps = require('../metaProps');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaultProps = {\n  target: '_blank'\n};\n\nvar CSVDownload = function (_React$Component) {\n  _inherits(CSVDownload, _React$Component);\n\n  function CSVDownload(props) {\n    _classCallCheck(this, CSVDownload);\n\n    var _this = _possibleConstructorReturn(this, (CSVDownload.__proto__ || Object.getPrototypeOf(CSVDownload)).call(this, props));\n\n    _this.state = {};\n    return _this;\n  }\n\n  _createClass(CSVDownload, [{\n    key: 'buildURI',\n    value: function buildURI() {\n      return _core.buildURI.apply(undefined, arguments);\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      var _props = this.props,\n          data = _props.data,\n          headers = _props.headers,\n          separator = _props.separator,\n          enclosingCharacter = _props.enclosingCharacter,\n          uFEFF = _props.uFEFF,\n          target = _props.target,\n          specs = _props.specs,\n          replace = _props.replace;\n\n      this.state.page = window.open(this.buildURI(data, uFEFF, headers, separator, enclosingCharacter), target, specs, replace);\n    }\n  }, {\n    key: 'getWindow',\n    value: function getWindow() {\n      return this.state.page;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return null;\n    }\n  }]);\n\n  return CSVDownload;\n}(_react2.default.Component);\n\nCSVDownload.defaultProps = Object.assign(_metaProps.defaultProps, defaultProps);\nCSVDownload.propTypes = _metaProps.propTypes;\nexports.default = CSVDownload;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _core = require('../core');\n\nvar _metaProps = require('../metaProps');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CSVLink = function (_React$Component) {\n  _inherits(CSVLink, _React$Component);\n\n  function CSVLink(props) {\n    _classCallCheck(this, CSVLink);\n\n    var _this = _possibleConstructorReturn(this, (CSVLink.__proto__ || Object.getPrototypeOf(CSVLink)).call(this, props));\n\n    _this.buildURI = _this.buildURI.bind(_this);\n    return _this;\n  }\n\n  _createClass(CSVLink, [{\n    key: 'buildURI',\n    value: function buildURI() {\n      return _core.buildURI.apply(undefined, arguments);\n    }\n  }, {\n    key: 'handleLegacy',\n    value: function handleLegacy(event) {\n      var isAsync = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n      if (window.navigator.msSaveOrOpenBlob) {\n        event.preventDefault();\n\n        var _props = this.props,\n            data = _props.data,\n            headers = _props.headers,\n            separator = _props.separator,\n            filename = _props.filename,\n            enclosingCharacter = _props.enclosingCharacter,\n            uFEFF = _props.uFEFF;\n\n\n        var csvData = isAsync && typeof data === 'function' ? data() : data;\n\n        var blob = new Blob([uFEFF ? '\\uFEFF' : '', (0, _core.toCSV)(csvData, headers, separator, enclosingCharacter)]);\n        window.navigator.msSaveBlob(blob, filename);\n\n        return false;\n      }\n    }\n  }, {\n    key: 'handleAsyncClick',\n    value: function handleAsyncClick(event) {\n      var _this2 = this;\n\n      var done = function done(proceed) {\n        if (proceed === false) {\n          event.preventDefault();\n          return;\n        }\n        _this2.handleLegacy(event, true);\n      };\n\n      this.props.onClick(event, done);\n    }\n  }, {\n    key: 'handleSyncClick',\n    value: function handleSyncClick(event) {\n      var stopEvent = this.props.onClick(event) === false;\n      if (stopEvent) {\n        event.preventDefault();\n        return;\n      }\n      this.handleLegacy(event);\n    }\n  }, {\n    key: 'handleClick',\n    value: function handleClick() {\n      var _this3 = this;\n\n      return function (event) {\n        if (typeof _this3.props.onClick === 'function') {\n          return _this3.props.asyncOnClick ? _this3.handleAsyncClick(event) : _this3.handleSyncClick(event);\n        }\n        _this3.handleLegacy(event);\n      };\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this4 = this;\n\n      var _props2 = this.props,\n          data = _props2.data,\n          headers = _props2.headers,\n          separator = _props2.separator,\n          filename = _props2.filename,\n          uFEFF = _props2.uFEFF,\n          children = _props2.children,\n          onClick = _props2.onClick,\n          asyncOnClick = _props2.asyncOnClick,\n          enclosingCharacter = _props2.enclosingCharacter,\n          rest = _objectWithoutProperties(_props2, ['data', 'headers', 'separator', 'filename', 'uFEFF', 'children', 'onClick', 'asyncOnClick', 'enclosingCharacter']);\n\n      var isNodeEnvironment = typeof window === 'undefined';\n      var href = isNodeEnvironment ? '' : this.buildURI(data, uFEFF, headers, separator, enclosingCharacter);\n\n      return _react2.default.createElement(\n        'a',\n        _extends({\n          download: filename\n        }, rest, {\n          ref: function ref(link) {\n            return _this4.link = link;\n          },\n          target: '_self',\n          href: href,\n          onClick: this.handleClick()\n        }),\n        children\n      );\n    }\n  }]);\n\n  return CSVLink;\n}(_react2.default.Component);\n\nCSVLink.defaultProps = _metaProps.defaultProps;\nCSVLink.propTypes = _metaProps.propTypes;\nexports.default = CSVLink;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar isSafari = exports.isSafari = function isSafari() {\n  return (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n  );\n};\n\nvar isJsons = exports.isJsons = function isJsons(array) {\n  return Array.isArray(array) && array.every(function (row) {\n    return (typeof row === \"undefined\" ? \"undefined\" : _typeof(row)) === 'object' && !(row instanceof Array);\n  });\n};\n\nvar isArrays = exports.isArrays = function isArrays(array) {\n  return Array.isArray(array) && array.every(function (row) {\n    return Array.isArray(row);\n  });\n};\n\nvar jsonsHeaders = exports.jsonsHeaders = function jsonsHeaders(array) {\n  return Array.from(array.map(function (json) {\n    return Object.keys(json);\n  }).reduce(function (a, b) {\n    return new Set([].concat(_toConsumableArray(a), _toConsumableArray(b)));\n  }, []));\n};\n\nvar jsons2arrays = exports.jsons2arrays = function jsons2arrays(jsons, headers) {\n  headers = headers || jsonsHeaders(jsons);\n\n  var headerLabels = headers;\n  var headerKeys = headers;\n  if (isJsons(headers)) {\n    headerLabels = headers.map(function (header) {\n      return header.label;\n    });\n    headerKeys = headers.map(function (header) {\n      return header.key;\n    });\n  }\n\n  var data = jsons.map(function (object) {\n    return headerKeys.map(function (header) {\n      return getHeaderValue(header, object);\n    });\n  });\n  return [headerLabels].concat(_toConsumableArray(data));\n};\n\nvar getHeaderValue = exports.getHeaderValue = function getHeaderValue(property, obj) {\n  var foundValue = property.replace(/\\[([^\\]]+)]/g, \".$1\").split(\".\").reduce(function (o, p, i, arr) {\n    var value = o[p];\n    if (value === undefined || value === null) {\n      arr.splice(1);\n    } else {\n      return value;\n    }\n  }, obj);\n\n  return foundValue === undefined ? property in obj ? obj[property] : '' : foundValue;\n};\n\nvar elementOrEmpty = exports.elementOrEmpty = function elementOrEmpty(element) {\n  return typeof element === 'undefined' || element === null ? '' : element;\n};\n\nvar joiner = exports.joiner = function joiner(data) {\n  var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';\n  var enclosingCharacter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '\"';\n\n  return data.filter(function (e) {\n    return e;\n  }).map(function (row) {\n    return row.map(function (element) {\n      return elementOrEmpty(element);\n    }).map(function (column) {\n      return \"\" + enclosingCharacter + column + enclosingCharacter;\n    }).join(separator);\n  }).join(\"\\n\");\n};\n\nvar arrays2csv = exports.arrays2csv = function arrays2csv(data, headers, separator, enclosingCharacter) {\n  return joiner(headers ? [headers].concat(_toConsumableArray(data)) : data, separator, enclosingCharacter);\n};\n\nvar jsons2csv = exports.jsons2csv = function jsons2csv(data, headers, separator, enclosingCharacter) {\n  return joiner(jsons2arrays(data, headers), separator, enclosingCharacter);\n};\n\nvar string2csv = exports.string2csv = function string2csv(data, headers, separator, enclosingCharacter) {\n  return headers ? headers.join(separator) + \"\\n\" + data : data.replace(/\"/g, '\"\"');\n};\n\nvar toCSV = exports.toCSV = function toCSV(data, headers, separator, enclosingCharacter) {\n  if (isJsons(data)) return jsons2csv(data, headers, separator, enclosingCharacter);\n  if (isArrays(data)) return arrays2csv(data, headers, separator, enclosingCharacter);\n  if (typeof data === 'string') return string2csv(data, headers, separator);\n  throw new TypeError(\"Data should be a \\\"String\\\", \\\"Array of arrays\\\" OR \\\"Array of objects\\\" \");\n};\n\nvar buildURI = exports.buildURI = function buildURI(data, uFEFF, headers, separator, enclosingCharacter) {\n  var csv = toCSV(data, headers, separator, enclosingCharacter);\n  var type = isSafari() ? 'application/csv' : 'text/csv';\n  var blob = new Blob([uFEFF ? \"\\uFEFF\" : '', csv], { type: type });\n  var dataURI = \"data:\" + type + \";charset=utf-8,\" + (uFEFF ? \"\\uFEFF\" : '') + csv;\n\n  var URL = window.URL || window.webkitURL;\n\n  return typeof URL.createObjectURL === 'undefined' ? dataURI : URL.createObjectURL(blob);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CSVLink = exports.CSVDownload = undefined;\n\nvar _Download = require('./components/Download');\n\nvar _Download2 = _interopRequireDefault(_Download);\n\nvar _Link = require('./components/Link');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CSVDownload = exports.CSVDownload = _Download2.default;\nvar CSVLink = exports.CSVLink = _Link2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.PropsNotForwarded = exports.defaultProps = exports.propTypes = undefined;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar propTypes = exports.propTypes = {\n  data: (0, _propTypes.oneOfType)([_propTypes.string, _propTypes.array, _propTypes.func]).isRequired,\n  headers: _propTypes.array,\n  target: _propTypes.string,\n  separator: _propTypes.string,\n  filename: _propTypes.string,\n  uFEFF: _propTypes.bool,\n  onClick: _propTypes.func,\n  asyncOnClick: _propTypes.bool,\n  enclosingCharacter: _propTypes.string\n};\n\nvar defaultProps = exports.defaultProps = {\n  separator: ',',\n  filename: 'generatedBy_react-csv.csv',\n  uFEFF: true,\n  asyncOnClick: false,\n  enclosingCharacter: '\"'\n};\n\nvar PropsNotForwarded = exports.PropsNotForwarded = ['data', 'headers'];","/** @license React v17.0.2\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\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function B(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 D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(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){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(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(oa,\npa);D[b]=new B(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(oa,pa);D[b]=new B(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(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(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 ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function 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 m({},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 $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(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\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(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 bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(y(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(y(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!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,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({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 vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(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}}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(y(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<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),null!==b&&(b=Cb(b),null!==b&&fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction uc(a,b,c,d,e){switch(b){case \"focusin\":return kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Cb(c),null!==b&&fc(b),a.blockedOn=c,!1;b.shift()}return!0}function zc(a,b,c){xc(a)&&c.delete(b)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}function od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=m({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=m({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!ae||be&&8<be&&11>=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.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(fa){var xe;if(fa){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge,Ie=Object.prototype.hasOwnProperty;\nfunction Je(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=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=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){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 Oe(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)}\nvar Pe=fa&&\"documentMode\"in document&&11>=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&&Oe(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&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction jd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case Ic:case Jc:case Kc:k=Hd;break;case Lc:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;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}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function tg(a,b){ng=a;pg=og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(ug=!0),a.firstContext=null)}\nfunction vg(a,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Cg(a,b,c,d){var e=a.updateQueue;wg=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)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=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(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&64))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 jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=vg(l):(l=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"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[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,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=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(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.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(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.nextEffect=null,c.firstEffect=null,c.lastEffect=null);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 Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(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 jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=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.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.2\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.2\";\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* Returns React children into an array, flattening fragments. */\nvar react_1 = require(\"react\");\nvar react_is_1 = require(\"react-is\");\nfunction flattenChildren(children, depth, keys) {\n    if (depth === void 0) { depth = 0; }\n    if (keys === void 0) { keys = []; }\n    return react_1.Children.toArray(children).reduce(function (acc, node, nodeIndex) {\n        if (react_is_1.isFragment(node)) {\n            acc.push.apply(acc, flattenChildren(node.props.children, depth + 1, keys.concat(node.key || nodeIndex)));\n        }\n        else {\n            if (react_1.isValidElement(node)) {\n                acc.push(react_1.cloneElement(node, {\n                    key: keys.concat(String(node.key)).join('.')\n                }));\n            }\n            else if (typeof node === \"string\" || typeof node === \"number\") {\n                acc.push(node);\n            }\n        }\n        return acc;\n    }, []);\n}\nexports.default = flattenChildren;\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","/** @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","/** @license React v17.0.2\n * react-jsx-runtime.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';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v17.0.2\n * react.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';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.2\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/** @license React v0.20.2\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';var f,g,h,k;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}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=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","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n  var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n  if (ret !== void 0) {\n    return !!ret;\n  }\n\n  if (objA === objB) {\n    return true;\n  }\n\n  if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  }\n\n  var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n  // Test for A's keys different from B.\n  for (var idx = 0; idx < keysA.length; idx++) {\n    var key = keysA[idx];\n\n    if (!bHasOwnProperty(key)) {\n      return false;\n    }\n\n    var valueA = objA[key];\n    var valueB = objB[key];\n\n    ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n    if (ret === false || (ret === void 0 && valueA !== valueB)) {\n      return false;\n    }\n  }\n\n  return true;\n};\n","export default function(url, options) {\n\toptions = options || {};\n\treturn new Promise( (resolve, reject) => {\n\t\tconst request = new XMLHttpRequest();\n\t\tconst keys = [];\n\t\tconst all = [];\n\t\tconst headers = {};\n\n\t\tconst response = () => ({\n\t\t\tok: (request.status/100|0) == 2,\t\t// 200-299\n\t\t\tstatusText: request.statusText,\n\t\t\tstatus: request.status,\n\t\t\turl: request.responseURL,\n\t\t\ttext: () => Promise.resolve(request.responseText),\n\t\t\tjson: () => Promise.resolve(request.responseText).then(JSON.parse),\n\t\t\tblob: () => Promise.resolve(new Blob([request.response])),\n\t\t\tclone: response,\n\t\t\theaders: {\n\t\t\t\tkeys: () => keys,\n\t\t\t\tentries: () => all,\n\t\t\t\tget: n => headers[n.toLowerCase()],\n\t\t\t\thas: n => n.toLowerCase() in headers\n\t\t\t}\n\t\t});\n\n\t\trequest.open(options.method || 'get', url, true);\n\n\t\trequest.onload = () => {\n\t\t\trequest.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, (m, key, value) => {\n\t\t\t\tkeys.push(key = key.toLowerCase());\n\t\t\t\tall.push([key, value]);\n\t\t\t\theaders[key] = headers[key] ? `${headers[key]},${value}` : value;\n\t\t\t});\n\t\t\tresolve(response());\n\t\t};\n\n\t\trequest.onerror = reject;\n\n\t\trequest.withCredentials = options.credentials=='include';\n\n\t\tfor (const i in options.headers) {\n\t\t\trequest.setRequestHeader(i, options.headers[i]);\n\t\t}\n\n\t\trequest.send(options.body || null);\n\t});\n}\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(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 punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n    portPattern = /:[0-9]*$/,\n\n    // Special case for a simple path URL\n    simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n    // RFC 2396: characters reserved for delimiting URLs.\n    // We actually just auto-escape these.\n    delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n    // RFC 2396: characters not allowed for various reasons.\n    unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n    // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n    autoEscape = ['\\''].concat(unwise),\n    // Characters that are never ever allowed in a hostname.\n    // Note that any invalid chars are also handled, but these\n    // are the ones that are *expected* to be seen, so we fast-path\n    // them.\n    nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n    hostEndingChars = ['/', '?', '#'],\n    hostnameMaxLen = 255,\n    hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n    hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n    // protocols that can allow \"unsafe\" and \"unwise\" chars.\n    unsafeProtocol = {\n      'javascript': true,\n      'javascript:': true\n    },\n    // protocols that never have a hostname.\n    hostlessProtocol = {\n      'javascript': true,\n      'javascript:': true\n    },\n    // protocols that always contain a // bit.\n    slashedProtocol = {\n      'http': true,\n      'https': true,\n      'ftp': true,\n      'gopher': true,\n      'file': true,\n      'http:': true,\n      'https:': true,\n      'ftp:': true,\n      'gopher:': true,\n      'file:': true\n    },\n    querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && util.isObject(url) && url instanceof Url) return url;\n\n  var u = new Url;\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n  if (!util.isString(url)) {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  // Copy chrome, IE, opera backslash-handling behavior.\n  // Back slashes before the query string get converted to forward slashes\n  // See: https://code.google.com/p/chromium/issues/detail?id=25916\n  var queryIndex = url.indexOf('?'),\n      splitter =\n          (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n      uSplit = url.split(splitter),\n      slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  // trim before proceeding.\n  // This is to support parse stuff like \"  http://foo.com  \\n\"\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  // figure out if it's got a host\n  // user@server is *always* interpreted as a hostname, and url\n  // resolution will treat //foo/bar as host=foo,path=bar because that's\n  // how the browser resolves relative URLs.\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] &&\n      (slashes || (proto && !slashedProtocol[proto]))) {\n\n    // there's a hostname.\n    // the first instance of /, ?, ;, or # ends the host.\n    //\n    // If there is an @ in the hostname, then non-host chars *are* allowed\n    // to the left of the last @ sign, unless some host-ending character\n    // comes *before* the @-sign.\n    // URLs are obnoxious.\n    //\n    // ex:\n    // http://a@b@c/ => user:a@b host:c\n    // http://a@b?@c => user:a host:c path:/?@c\n\n    // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n    // Review our test case against browsers more comprehensively.\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n        hostEnd = hec;\n    }\n\n    // at this point, either we have an explicit point where the\n    // auth portion cannot go past, or the last @ char is the decider.\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      // atSign must be in auth portion.\n      // http://a@b/c@d => host:b auth:a path:/c@d\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    // Now we have a portion which is definitely the auth.\n    // Pull that off.\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n        hostEnd = hec;\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1)\n      hostEnd = rest.length;\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    // we've indicated that there is a hostname,\n    // so even if it's empty, it has to be present.\n    this.hostname = this.hostname || '';\n\n    // if hostname begins with [ and ends with ]\n    // assume that it's an IPv6 address.\n    var ipv6Hostname = this.hostname[0] === '[' &&\n        this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) continue;\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              // we replace non-ASCII char with a temporary placeholder\n              // we need this to make sure size of hostname is not\n              // broken by replacing non-ASCII by nothing\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      // IDNA Support: Returns a punycoded representation of \"domain\".\n      // It only converts parts of the domain name that\n      // have non-ASCII characters, i.e. it doesn't matter if\n      // you call it with a domain that already is ASCII-only.\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    // strip [ and ] from the hostname\n    // the host field still retains them, though\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  // now rest is set to the post-host stuff.\n  // chop off any delim chars.\n  if (!unsafeProtocol[lowerProto]) {\n\n    // First, make 100% sure that any \"autoEscape\" chars get\n    // escaped, even if encodeURIComponent doesn't think they\n    // need to be.\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1)\n        continue;\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) this.pathname = rest;\n  if (slashedProtocol[lowerProto] &&\n      this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  //to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  // ensure it's an object, and not a string url.\n  // If it's an obj, this is a no-op.\n  // this way, you can call url_format() on strings\n  // to clean up potentially wonky urls.\n  if (util.isString(obj)) obj = urlParse(obj);\n  if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n  return obj.format();\n}\n\nUrl.prototype.format = function() {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n      pathname = this.pathname || '',\n      hash = this.hash || '',\n      host = false,\n      query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ?\n        this.hostname :\n        '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query &&\n      util.isObject(this.query) &&\n      Object.keys(this.query).length) {\n    query = querystring.stringify(this.query);\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n  // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n  // unless they had them to begin with.\n  if (this.slashes ||\n      (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n  if (search && search.charAt(0) !== '?') search = '?' + search;\n\n  pathname = pathname.replace(/[?#]/g, function(match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) return relative;\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n  if (util.isString(relative)) {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  // hash is always overridden, no matter what.\n  // even href=\"\" will remove it.\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol')\n        result[rkey] = relative[rkey];\n    }\n\n    //urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] &&\n        result.hostname && !result.pathname) {\n      result.path = result.pathname = '/';\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    // if it's a known url protocol, then changing\n    // the protocol does weird things\n    // first, if it's not file:, then we MUST have a host,\n    // and if there was a path\n    // to begin with, then we MUST have a path.\n    // if it is file:, then the host is dropped,\n    // because that's known to be hostless.\n    // anything else is assumed to be absolute.\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift()));\n      if (!relative.host) relative.host = '';\n      if (!relative.hostname) relative.hostname = '';\n      if (relPath[0] !== '') relPath.unshift('');\n      if (relPath.length < 2) relPath.unshift('');\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n      isRelAbs = (\n          relative.host ||\n          relative.pathname && relative.pathname.charAt(0) === '/'\n      ),\n      mustEndAbs = (isRelAbs || isSourceAbs ||\n                    (result.host && relative.pathname)),\n      removeAllDots = mustEndAbs,\n      srcPath = result.pathname && result.pathname.split('/') || [],\n      relPath = relative.pathname && relative.pathname.split('/') || [],\n      psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  // if the url is a non-slashed url, then relative\n  // links like ../.. should be able\n  // to crawl up to the hostname, as well.  This is strange.\n  // result.protocol has already been set by now.\n  // Later on, put the first path part into the host field.\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') srcPath[0] = result.host;\n      else srcPath.unshift(result.host);\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') relPath[0] = relative.host;\n        else relPath.unshift(relative.host);\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = (relative.host || relative.host === '') ?\n                  relative.host : result.host;\n    result.hostname = (relative.hostname || relative.hostname === '') ?\n                      relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    // it's relative\n    // throw away the existing file, and take the new path instead.\n    if (!srcPath) srcPath = [];\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (!util.isNullOrUndefined(relative.search)) {\n    // just pull out the search.\n    // like href='?foo'.\n    // Put this after the other two cases because it simplifies the booleans\n    if (psychotic) {\n      result.hostname = result.host = srcPath.shift();\n      //occationaly the auth can get stuck only in host\n      //this especially happens in cases like\n      //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n      var authInHost = result.host && result.host.indexOf('@') > 0 ?\n                       result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.host = result.hostname = authInHost.shift();\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    //to support http.request\n    if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n      result.path = (result.pathname ? result.pathname : '') +\n                    (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    // no path at all.  easy.\n    // we've already handled the other stuff above.\n    result.pathname = null;\n    //to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  // if a url ENDs in . or .., then it must get a trailing slash.\n  // however, if it ends in anything else non-slashy,\n  // then it must NOT get a trailing slash.\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (\n      (result.host || relative.host || srcPath.length > 1) &&\n      (last === '.' || last === '..') || last === '');\n\n  // strip single dots, resolve double dots to parent dir\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' &&\n      (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' ||\n      (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = result.host = isAbsolute ? '' :\n                                    srcPath.length ? srcPath.shift() : '';\n    //occationaly the auth can get stuck only in host\n    //this especially happens in cases like\n    //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n    var authInHost = result.host && result.host.indexOf('@') > 0 ?\n                     result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.host = result.hostname = authInHost.shift();\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (!srcPath.length) {\n    result.pathname = null;\n    result.path = null;\n  } else {\n    result.pathname = srcPath.join('/');\n  }\n\n  //to support request.http\n  if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n    result.path = (result.pathname ? result.pathname : '') +\n                  (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function() {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n  isString: function(arg) {\n    return typeof(arg) === 'string';\n  },\n  isObject: function(arg) {\n    return typeof(arg) === 'object' && arg !== null;\n  },\n  isNull: function(arg) {\n    return arg === null;\n  },\n  isNullOrUndefined: function(arg) {\n    return arg == null;\n  }\n};\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n  byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n  var i = offset || 0;\n  var bth = byteToHex;\n  // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n  return ([\n    bth[buf[i++]], bth[buf[i++]],\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]], '-',\n    bth[buf[i++]], bth[buf[i++]],\n    bth[buf[i++]], bth[buf[i++]],\n    bth[buf[i++]], bth[buf[i++]]\n  ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator.  In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API.  We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n                      (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n  // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n  var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n  module.exports = function whatwgRNG() {\n    getRandomValues(rnds8);\n    return rnds8;\n  };\n} else {\n  // Math.random()-based (RNG)\n  //\n  // If all else fails, use Math.random().  It's fast, but is of unspecified\n  // quality.\n  var rnds = new Array(16);\n\n  module.exports = function mathRNG() {\n    for (var i = 0, r; i < 16; i++) {\n      if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n      rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n    }\n\n    return rnds;\n  };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/uuidjs/uuid for API details\nfunction v1(options, buf, offset) {\n  var i = buf && offset || 0;\n  var b = buf || [];\n\n  options = options || {};\n  var node = options.node || _nodeId;\n  var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n  // node and clockseq need to be initialized to random values if they're not\n  // specified.  We do this lazily to minimize issues related to insufficient\n  // system entropy.  See #189\n  if (node == null || clockseq == null) {\n    var seedBytes = rng();\n    if (node == null) {\n      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n      node = _nodeId = [\n        seedBytes[0] | 0x01,\n        seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n      ];\n    }\n    if (clockseq == null) {\n      // Per 4.2.2, randomize (14 bit) clockseq\n      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n    }\n  }\n\n  // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so\n  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n  var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n  // Per 4.2.1.2, use count of uuid's generated during the current clock\n  // cycle to simulate higher resolution clock\n  var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n  // Time since last uuid creation (in msecs)\n  var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n  // Per 4.2.1.2, Bump clockseq on clock regression\n  if (dt < 0 && options.clockseq === undefined) {\n    clockseq = clockseq + 1 & 0x3fff;\n  }\n\n  // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n  // time interval\n  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n    nsecs = 0;\n  }\n\n  // Per 4.2.1.2 Throw error if too many uuids are requested\n  if (nsecs >= 10000) {\n    throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n  }\n\n  _lastMSecs = msecs;\n  _lastNSecs = nsecs;\n  _clockseq = clockseq;\n\n  // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n  msecs += 12219292800000;\n\n  // `time_low`\n  var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n  b[i++] = tl >>> 24 & 0xff;\n  b[i++] = tl >>> 16 & 0xff;\n  b[i++] = tl >>> 8 & 0xff;\n  b[i++] = tl & 0xff;\n\n  // `time_mid`\n  var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n  b[i++] = tmh >>> 8 & 0xff;\n  b[i++] = tmh & 0xff;\n\n  // `time_high_and_version`\n  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n  b[i++] = tmh >>> 16 & 0xff;\n\n  // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n  b[i++] = clockseq >>> 8 | 0x80;\n\n  // `clock_seq_low`\n  b[i++] = clockseq & 0xff;\n\n  // `node`\n  for (var n = 0; n < 6; ++n) {\n    b[i + n] = node[n];\n  }\n\n  return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n  var i = buf && offset || 0;\n\n  if (typeof(options) == 'string') {\n    buf = options === 'binary' ? new Array(16) : null;\n    options = null;\n  }\n  options = options || {};\n\n  var rnds = options.random || (options.rng || rng)();\n\n  // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n  rnds[6] = (rnds[6] & 0x0f) | 0x40;\n  rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n  // Copy bytes to buffer, if provided\n  if (buf) {\n    for (var ii = 0; ii < 16; ++ii) {\n      buf[i + ii] = rnds[ii];\n    }\n  }\n\n  return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","module.exports = require('./lib/Observable.js').Observable;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Observable = void 0;\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\n// === Symbol Support ===\nvar hasSymbols = function () {\n  return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n  return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n  return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n  Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n  var value = obj[key];\n  if (value == null) return undefined;\n  if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n  return value;\n}\n\nfunction getSpecies(obj) {\n  var ctor = obj.constructor;\n\n  if (ctor !== undefined) {\n    ctor = ctor[SymbolSpecies];\n\n    if (ctor === null) {\n      ctor = undefined;\n    }\n  }\n\n  return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n  return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n  if (hostReportError.log) {\n    hostReportError.log(e);\n  } else {\n    setTimeout(function () {\n      throw e;\n    });\n  }\n}\n\nfunction enqueue(fn) {\n  Promise.resolve().then(function () {\n    try {\n      fn();\n    } catch (e) {\n      hostReportError(e);\n    }\n  });\n}\n\nfunction cleanupSubscription(subscription) {\n  var cleanup = subscription._cleanup;\n  if (cleanup === undefined) return;\n  subscription._cleanup = undefined;\n\n  if (!cleanup) {\n    return;\n  }\n\n  try {\n    if (typeof cleanup === 'function') {\n      cleanup();\n    } else {\n      var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n      if (unsubscribe) {\n        unsubscribe.call(cleanup);\n      }\n    }\n  } catch (e) {\n    hostReportError(e);\n  }\n}\n\nfunction closeSubscription(subscription) {\n  subscription._observer = undefined;\n  subscription._queue = undefined;\n  subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n  var queue = subscription._queue;\n\n  if (!queue) {\n    return;\n  }\n\n  subscription._queue = undefined;\n  subscription._state = 'ready';\n\n  for (var i = 0; i < queue.length; ++i) {\n    notifySubscription(subscription, queue[i].type, queue[i].value);\n    if (subscription._state === 'closed') break;\n  }\n}\n\nfunction notifySubscription(subscription, type, value) {\n  subscription._state = 'running';\n  var observer = subscription._observer;\n\n  try {\n    var m = getMethod(observer, type);\n\n    switch (type) {\n      case 'next':\n        if (m) m.call(observer, value);\n        break;\n\n      case 'error':\n        closeSubscription(subscription);\n        if (m) m.call(observer, value);else throw value;\n        break;\n\n      case 'complete':\n        closeSubscription(subscription);\n        if (m) m.call(observer);\n        break;\n    }\n  } catch (e) {\n    hostReportError(e);\n  }\n\n  if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n  if (subscription._state === 'closed') return;\n\n  if (subscription._state === 'buffering') {\n    subscription._queue.push({\n      type: type,\n      value: value\n    });\n\n    return;\n  }\n\n  if (subscription._state !== 'ready') {\n    subscription._state = 'buffering';\n    subscription._queue = [{\n      type: type,\n      value: value\n    }];\n    enqueue(function () {\n      return flushSubscription(subscription);\n    });\n    return;\n  }\n\n  notifySubscription(subscription, type, value);\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n  function Subscription(observer, subscriber) {\n    _classCallCheck(this, Subscription);\n\n    // ASSERT: observer is an object\n    // ASSERT: subscriber is callable\n    this._cleanup = undefined;\n    this._observer = observer;\n    this._queue = undefined;\n    this._state = 'initializing';\n    var subscriptionObserver = new SubscriptionObserver(this);\n\n    try {\n      this._cleanup = subscriber.call(undefined, subscriptionObserver);\n    } catch (e) {\n      subscriptionObserver.error(e);\n    }\n\n    if (this._state === 'initializing') this._state = 'ready';\n  }\n\n  _createClass(Subscription, [{\n    key: \"unsubscribe\",\n    value: function unsubscribe() {\n      if (this._state !== 'closed') {\n        closeSubscription(this);\n        cleanupSubscription(this);\n      }\n    }\n  }, {\n    key: \"closed\",\n    get: function () {\n      return this._state === 'closed';\n    }\n  }]);\n\n  return Subscription;\n}();\n\nvar SubscriptionObserver =\n/*#__PURE__*/\nfunction () {\n  function SubscriptionObserver(subscription) {\n    _classCallCheck(this, SubscriptionObserver);\n\n    this._subscription = subscription;\n  }\n\n  _createClass(SubscriptionObserver, [{\n    key: \"next\",\n    value: function next(value) {\n      onNotify(this._subscription, 'next', value);\n    }\n  }, {\n    key: \"error\",\n    value: function error(value) {\n      onNotify(this._subscription, 'error', value);\n    }\n  }, {\n    key: \"complete\",\n    value: function complete() {\n      onNotify(this._subscription, 'complete');\n    }\n  }, {\n    key: \"closed\",\n    get: function () {\n      return this._subscription._state === 'closed';\n    }\n  }]);\n\n  return SubscriptionObserver;\n}();\n\nvar Observable =\n/*#__PURE__*/\nfunction () {\n  function Observable(subscriber) {\n    _classCallCheck(this, Observable);\n\n    if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n    if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n    this._subscriber = subscriber;\n  }\n\n  _createClass(Observable, [{\n    key: \"subscribe\",\n    value: function subscribe(observer) {\n      if (typeof observer !== 'object' || observer === null) {\n        observer = {\n          next: observer,\n          error: arguments[1],\n          complete: arguments[2]\n        };\n      }\n\n      return new Subscription(observer, this._subscriber);\n    }\n  }, {\n    key: \"forEach\",\n    value: function forEach(fn) {\n      var _this = this;\n\n      return new Promise(function (resolve, reject) {\n        if (typeof fn !== 'function') {\n          reject(new TypeError(fn + ' is not a function'));\n          return;\n        }\n\n        function done() {\n          subscription.unsubscribe();\n          resolve();\n        }\n\n        var subscription = _this.subscribe({\n          next: function (value) {\n            try {\n              fn(value, done);\n            } catch (e) {\n              reject(e);\n              subscription.unsubscribe();\n            }\n          },\n          error: reject,\n          complete: resolve\n        });\n      });\n    }\n  }, {\n    key: \"map\",\n    value: function map(fn) {\n      var _this2 = this;\n\n      if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n      var C = getSpecies(this);\n      return new C(function (observer) {\n        return _this2.subscribe({\n          next: function (value) {\n            try {\n              value = fn(value);\n            } catch (e) {\n              return observer.error(e);\n            }\n\n            observer.next(value);\n          },\n          error: function (e) {\n            observer.error(e);\n          },\n          complete: function () {\n            observer.complete();\n          }\n        });\n      });\n    }\n  }, {\n    key: \"filter\",\n    value: function filter(fn) {\n      var _this3 = this;\n\n      if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n      var C = getSpecies(this);\n      return new C(function (observer) {\n        return _this3.subscribe({\n          next: function (value) {\n            try {\n              if (!fn(value)) return;\n            } catch (e) {\n              return observer.error(e);\n            }\n\n            observer.next(value);\n          },\n          error: function (e) {\n            observer.error(e);\n          },\n          complete: function () {\n            observer.complete();\n          }\n        });\n      });\n    }\n  }, {\n    key: \"reduce\",\n    value: function reduce(fn) {\n      var _this4 = this;\n\n      if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n      var C = getSpecies(this);\n      var hasSeed = arguments.length > 1;\n      var hasValue = false;\n      var seed = arguments[1];\n      var acc = seed;\n      return new C(function (observer) {\n        return _this4.subscribe({\n          next: function (value) {\n            var first = !hasValue;\n            hasValue = true;\n\n            if (!first || hasSeed) {\n              try {\n                acc = fn(acc, value);\n              } catch (e) {\n                return observer.error(e);\n              }\n            } else {\n              acc = value;\n            }\n          },\n          error: function (e) {\n            observer.error(e);\n          },\n          complete: function () {\n            if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n            observer.next(acc);\n            observer.complete();\n          }\n        });\n      });\n    }\n  }, {\n    key: \"concat\",\n    value: function concat() {\n      var _this5 = this;\n\n      for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n        sources[_key] = arguments[_key];\n      }\n\n      var C = getSpecies(this);\n      return new C(function (observer) {\n        var subscription;\n        var index = 0;\n\n        function startNext(next) {\n          subscription = next.subscribe({\n            next: function (v) {\n              observer.next(v);\n            },\n            error: function (e) {\n              observer.error(e);\n            },\n            complete: function () {\n              if (index === sources.length) {\n                subscription = undefined;\n                observer.complete();\n              } else {\n                startNext(C.from(sources[index++]));\n              }\n            }\n          });\n        }\n\n        startNext(_this5);\n        return function () {\n          if (subscription) {\n            subscription.unsubscribe();\n            subscription = undefined;\n          }\n        };\n      });\n    }\n  }, {\n    key: \"flatMap\",\n    value: function flatMap(fn) {\n      var _this6 = this;\n\n      if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n      var C = getSpecies(this);\n      return new C(function (observer) {\n        var subscriptions = [];\n\n        var outer = _this6.subscribe({\n          next: function (value) {\n            if (fn) {\n              try {\n                value = fn(value);\n              } catch (e) {\n                return observer.error(e);\n              }\n            }\n\n            var inner = C.from(value).subscribe({\n              next: function (value) {\n                observer.next(value);\n              },\n              error: function (e) {\n                observer.error(e);\n              },\n              complete: function () {\n                var i = subscriptions.indexOf(inner);\n                if (i >= 0) subscriptions.splice(i, 1);\n                completeIfDone();\n              }\n            });\n            subscriptions.push(inner);\n          },\n          error: function (e) {\n            observer.error(e);\n          },\n          complete: function () {\n            completeIfDone();\n          }\n        });\n\n        function completeIfDone() {\n          if (outer.closed && subscriptions.length === 0) observer.complete();\n        }\n\n        return function () {\n          subscriptions.forEach(function (s) {\n            return s.unsubscribe();\n          });\n          outer.unsubscribe();\n        };\n      });\n    }\n  }, {\n    key: SymbolObservable,\n    value: function () {\n      return this;\n    }\n  }], [{\n    key: \"from\",\n    value: function from(x) {\n      var C = typeof this === 'function' ? this : Observable;\n      if (x == null) throw new TypeError(x + ' is not an object');\n      var method = getMethod(x, SymbolObservable);\n\n      if (method) {\n        var observable = method.call(x);\n        if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n        if (isObservable(observable) && observable.constructor === C) return observable;\n        return new C(function (observer) {\n          return observable.subscribe(observer);\n        });\n      }\n\n      if (hasSymbol('iterator')) {\n        method = getMethod(x, SymbolIterator);\n\n        if (method) {\n          return new C(function (observer) {\n            enqueue(function () {\n              if (observer.closed) return;\n              var _iteratorNormalCompletion = true;\n              var _didIteratorError = false;\n              var _iteratorError = undefined;\n\n              try {\n                for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n                  var _item = _step.value;\n                  observer.next(_item);\n                  if (observer.closed) return;\n                }\n              } catch (err) {\n                _didIteratorError = true;\n                _iteratorError = err;\n              } finally {\n                try {\n                  if (!_iteratorNormalCompletion && _iterator.return != null) {\n                    _iterator.return();\n                  }\n                } finally {\n                  if (_didIteratorError) {\n                    throw _iteratorError;\n                  }\n                }\n              }\n\n              observer.complete();\n            });\n          });\n        }\n      }\n\n      if (Array.isArray(x)) {\n        return new C(function (observer) {\n          enqueue(function () {\n            if (observer.closed) return;\n\n            for (var i = 0; i < x.length; ++i) {\n              observer.next(x[i]);\n              if (observer.closed) return;\n            }\n\n            observer.complete();\n          });\n        });\n      }\n\n      throw new TypeError(x + ' is not observable');\n    }\n  }, {\n    key: \"of\",\n    value: function of() {\n      for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        items[_key2] = arguments[_key2];\n      }\n\n      var C = typeof this === 'function' ? this : Observable;\n      return new C(function (observer) {\n        enqueue(function () {\n          if (observer.closed) return;\n\n          for (var i = 0; i < items.length; ++i) {\n            observer.next(items[i]);\n            if (observer.closed) return;\n          }\n\n          observer.complete();\n        });\n      });\n    }\n  }, {\n    key: SymbolSpecies,\n    get: function () {\n      return this;\n    }\n  }]);\n\n  return Observable;\n}();\n\nexports.Observable = Observable;\n\nif (hasSymbols()) {\n  Object.defineProperty(Observable, Symbol('extensions'), {\n    value: {\n      symbol: SymbolObservable,\n      hostReportError: hostReportError\n    },\n    configurable: true\n  });\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __values = (this && this.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { AWS_CLOUDWATCH_CATEGORY } from '../Util/Constants';\nvar LOG_LEVELS = {\n    VERBOSE: 1,\n    DEBUG: 2,\n    INFO: 3,\n    WARN: 4,\n    ERROR: 5,\n};\nexport var LOG_TYPE;\n(function (LOG_TYPE) {\n    LOG_TYPE[\"DEBUG\"] = \"DEBUG\";\n    LOG_TYPE[\"ERROR\"] = \"ERROR\";\n    LOG_TYPE[\"INFO\"] = \"INFO\";\n    LOG_TYPE[\"WARN\"] = \"WARN\";\n    LOG_TYPE[\"VERBOSE\"] = \"VERBOSE\";\n})(LOG_TYPE || (LOG_TYPE = {}));\n/**\n * Write logs\n * @class Logger\n */\nexport var ConsoleLogger = /** @class */ (function () {\n    /**\n     * @constructor\n     * @param {string} name - Name of the logger\n     */\n    function ConsoleLogger(name, level) {\n        if (level === void 0) { level = LOG_TYPE.WARN; }\n        this.name = name;\n        this.level = level;\n        this._pluggables = [];\n    }\n    ConsoleLogger.prototype._padding = function (n) {\n        return n < 10 ? '0' + n : '' + n;\n    };\n    ConsoleLogger.prototype._ts = function () {\n        var dt = new Date();\n        return ([this._padding(dt.getMinutes()), this._padding(dt.getSeconds())].join(':') +\n            '.' +\n            dt.getMilliseconds());\n    };\n    ConsoleLogger.prototype.configure = function (config) {\n        if (!config)\n            return this._config;\n        this._config = config;\n        return this._config;\n    };\n    /**\n     * Write log\n     * @method\n     * @memeberof Logger\n     * @param {LOG_TYPE|string} type - log type, default INFO\n     * @param {string|object} msg - Logging message or object\n     */\n    ConsoleLogger.prototype._log = function (type) {\n        var e_1, _a;\n        var msg = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            msg[_i - 1] = arguments[_i];\n        }\n        var logger_level_name = this.level;\n        if (ConsoleLogger.LOG_LEVEL) {\n            logger_level_name = ConsoleLogger.LOG_LEVEL;\n        }\n        if (typeof window !== 'undefined' && window.LOG_LEVEL) {\n            logger_level_name = window.LOG_LEVEL;\n        }\n        var logger_level = LOG_LEVELS[logger_level_name];\n        var type_level = LOG_LEVELS[type];\n        if (!(type_level >= logger_level)) {\n            // Do nothing if type is not greater than or equal to logger level (handle undefined)\n            return;\n        }\n        var log = console.log.bind(console);\n        if (type === LOG_TYPE.ERROR && console.error) {\n            log = console.error.bind(console);\n        }\n        if (type === LOG_TYPE.WARN && console.warn) {\n            log = console.warn.bind(console);\n        }\n        var prefix = \"[\".concat(type, \"] \").concat(this._ts(), \" \").concat(this.name);\n        var message = '';\n        if (msg.length === 1 && typeof msg[0] === 'string') {\n            message = \"\".concat(prefix, \" - \").concat(msg[0]);\n            log(message);\n        }\n        else if (msg.length === 1) {\n            message = \"\".concat(prefix, \" \").concat(msg[0]);\n            log(prefix, msg[0]);\n        }\n        else if (typeof msg[0] === 'string') {\n            var obj = msg.slice(1);\n            if (obj.length === 1) {\n                obj = obj[0];\n            }\n            message = \"\".concat(prefix, \" - \").concat(msg[0], \" \").concat(obj);\n            log(\"\".concat(prefix, \" - \").concat(msg[0]), obj);\n        }\n        else {\n            message = \"\".concat(prefix, \" \").concat(msg);\n            log(prefix, msg);\n        }\n        try {\n            for (var _b = __values(this._pluggables), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var plugin = _c.value;\n                var logEvent = { message: message, timestamp: Date.now() };\n                plugin.pushLogs([logEvent]);\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    };\n    /**\n     * Write General log. Default to INFO\n     * @method\n     * @memeberof Logger\n     * @param {string|object} msg - Logging message or object\n     */\n    ConsoleLogger.prototype.log = function () {\n        var msg = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            msg[_i] = arguments[_i];\n        }\n        this._log.apply(this, __spreadArray([LOG_TYPE.INFO], __read(msg), false));\n    };\n    /**\n     * Write INFO log\n     * @method\n     * @memeberof Logger\n     * @param {string|object} msg - Logging message or object\n     */\n    ConsoleLogger.prototype.info = function () {\n        var msg = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            msg[_i] = arguments[_i];\n        }\n        this._log.apply(this, __spreadArray([LOG_TYPE.INFO], __read(msg), false));\n    };\n    /**\n     * Write WARN log\n     * @method\n     * @memeberof Logger\n     * @param {string|object} msg - Logging message or object\n     */\n    ConsoleLogger.prototype.warn = function () {\n        var msg = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            msg[_i] = arguments[_i];\n        }\n        this._log.apply(this, __spreadArray([LOG_TYPE.WARN], __read(msg), false));\n    };\n    /**\n     * Write ERROR log\n     * @method\n     * @memeberof Logger\n     * @param {string|object} msg - Logging message or object\n     */\n    ConsoleLogger.prototype.error = function () {\n        var msg = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            msg[_i] = arguments[_i];\n        }\n        this._log.apply(this, __spreadArray([LOG_TYPE.ERROR], __read(msg), false));\n    };\n    /**\n     * Write DEBUG log\n     * @method\n     * @memeberof Logger\n     * @param {string|object} msg - Logging message or object\n     */\n    ConsoleLogger.prototype.debug = function () {\n        var msg = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            msg[_i] = arguments[_i];\n        }\n        this._log.apply(this, __spreadArray([LOG_TYPE.DEBUG], __read(msg), false));\n    };\n    /**\n     * Write VERBOSE log\n     * @method\n     * @memeberof Logger\n     * @param {string|object} msg - Logging message or object\n     */\n    ConsoleLogger.prototype.verbose = function () {\n        var msg = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            msg[_i] = arguments[_i];\n        }\n        this._log.apply(this, __spreadArray([LOG_TYPE.VERBOSE], __read(msg), false));\n    };\n    ConsoleLogger.prototype.addPluggable = function (pluggable) {\n        if (pluggable && pluggable.getCategoryName() === AWS_CLOUDWATCH_CATEGORY) {\n            this._pluggables.push(pluggable);\n            pluggable.configure(this._config);\n        }\n    };\n    ConsoleLogger.prototype.listPluggables = function () {\n        return this._pluggables;\n    };\n    ConsoleLogger.LOG_LEVEL = null;\n    return ConsoleLogger;\n}());\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Logging constants\nvar AWS_CLOUDWATCH_BASE_BUFFER_SIZE = 26;\nvar AWS_CLOUDWATCH_MAX_BATCH_EVENT_SIZE = 1048576;\nvar AWS_CLOUDWATCH_MAX_EVENT_SIZE = 256000;\nvar AWS_CLOUDWATCH_CATEGORY = 'Logging';\nvar AWS_CLOUDWATCH_PROVIDER_NAME = 'AWSCloudWatch';\nvar NO_CREDS_ERROR_STRING = 'No credentials';\nvar RETRY_ERROR_CODES = [\n    'ResourceNotFoundException',\n    'InvalidSequenceTokenException',\n];\nexport { AWS_CLOUDWATCH_BASE_BUFFER_SIZE, AWS_CLOUDWATCH_CATEGORY, AWS_CLOUDWATCH_MAX_BATCH_EVENT_SIZE, AWS_CLOUDWATCH_MAX_EVENT_SIZE, AWS_CLOUDWATCH_PROVIDER_NAME, NO_CREDS_ERROR_STRING, RETRY_ERROR_CODES, };\n","var __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger as LoggerClass } from './Logger';\nvar logger = new LoggerClass('Amplify');\nvar AmplifyClass = /** @class */ (function () {\n    function AmplifyClass() {\n        // Everything that is `register`ed is tracked here\n        this._components = [];\n        this._config = {};\n        // All modules (with `getModuleName()`) are stored here for dependency injection\n        this._modules = {};\n        // for backward compatibility to avoid breaking change\n        // if someone is using like Amplify.Auth\n        this.Auth = null;\n        this.Analytics = null;\n        this.API = null;\n        this.Credentials = null;\n        this.Storage = null;\n        this.I18n = null;\n        this.Cache = null;\n        this.PubSub = null;\n        this.Interactions = null;\n        this.Pushnotification = null;\n        this.UI = null;\n        this.XR = null;\n        this.Predictions = null;\n        this.DataStore = null;\n        this.Geo = null;\n        this.Notifications = null;\n        this.Logger = LoggerClass;\n        this.ServiceWorker = null;\n    }\n    AmplifyClass.prototype.register = function (comp) {\n        logger.debug('component registered in amplify', comp);\n        this._components.push(comp);\n        if (typeof comp.getModuleName === 'function') {\n            this._modules[comp.getModuleName()] = comp;\n            this[comp.getModuleName()] = comp;\n        }\n        else {\n            logger.debug('no getModuleName method for component', comp);\n        }\n        // Finally configure this new component(category) loaded\n        // With the new modularization changes in Amplify V3, all the Amplify\n        // component are not loaded/registered right away but when they are\n        // imported (and hence instantiated) in the client's app. This ensures\n        // that all new components imported get correctly configured with the\n        // configuration that Amplify.configure() was called with.\n        comp.configure(this._config);\n    };\n    AmplifyClass.prototype.configure = function (config) {\n        var _this = this;\n        if (!config)\n            return this._config;\n        this._config = Object.assign(this._config, config);\n        logger.debug('amplify config', this._config);\n        // Dependency Injection via property-setting.\n        // This avoids introducing a public method/interface/setter that's difficult to remove later.\n        // Plus, it reduces `if` statements within the `constructor` and `configure` of each module\n        Object.entries(this._modules).forEach(function (_a) {\n            var _b = __read(_a, 2), Name = _b[0], comp = _b[1];\n            // e.g. Auth.*\n            Object.keys(comp).forEach(function (property) {\n                // e.g. Auth[\"Credentials\"] = this._modules[\"Credentials\"] when set\n                if (_this._modules[property]) {\n                    comp[property] = _this._modules[property];\n                }\n            });\n        });\n        this._components.map(function (comp) {\n            comp.configure(_this._config);\n        });\n        return this._config;\n    };\n    AmplifyClass.prototype.addPluggable = function (pluggable) {\n        if (pluggable &&\n            pluggable['getCategory'] &&\n            typeof pluggable['getCategory'] === 'function') {\n            this._components.map(function (comp) {\n                if (comp['addPluggable'] &&\n                    typeof comp['addPluggable'] === 'function') {\n                    comp.addPluggable(pluggable);\n                }\n            });\n        }\n    };\n    return AmplifyClass;\n}());\nexport { AmplifyClass };\nexport var Amplify = new AmplifyClass();\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tICookieStorageData,\n\tICognitoStorage,\n} from 'amazon-cognito-identity-js';\n\n/**\n * Parameters for user sign up\n */\nexport interface SignUpParams {\n\tusername: string;\n\tpassword: string;\n\tattributes?: object;\n\tvalidationData?: { [key: string]: any };\n\tclientMetadata?: { [key: string]: string };\n\tautoSignIn?: AutoSignInOptions;\n}\n\nexport interface AuthCache {\n\tsetItem();\n\tgetItem();\n\tremoveItem();\n}\n\n/**\n * Auth instance options\n */\nexport interface AuthOptions {\n\tuserPoolId?: string;\n\tuserPoolWebClientId?: string;\n\tidentityPoolId?: string;\n\tregion?: string;\n\tmandatorySignIn?: boolean;\n\tcookieStorage?: ICookieStorageData;\n\toauth?: OAuthOpts;\n\trefreshHandlers?: object;\n\tstorage?: ICognitoStorage;\n\tauthenticationFlowType?: string;\n\tidentityPoolRegion?: string;\n\tclientMetadata?: any;\n\tendpoint?: string;\n\tsignUpVerificationMethod?: 'code' | 'link';\n}\n\nexport enum CognitoHostedUIIdentityProvider {\n\tCognito = 'COGNITO',\n\tGoogle = 'Google',\n\tFacebook = 'Facebook',\n\tAmazon = 'LoginWithAmazon',\n\tApple = 'SignInWithApple',\n}\n\nexport type LegacyProvider =\n\t| 'google'\n\t| 'facebook'\n\t| 'amazon'\n\t| 'developer'\n\t| string;\n\nexport type FederatedSignInOptions = {\n\tprovider: CognitoHostedUIIdentityProvider;\n\tcustomState?: string;\n};\n\nexport type FederatedSignInOptionsCustom = {\n\tcustomProvider: string;\n\tcustomState?: string;\n};\n\nexport function isFederatedSignInOptions(\n\tobj: any\n): obj is FederatedSignInOptions {\n\tconst keys: (keyof FederatedSignInOptions)[] = ['provider'];\n\treturn obj && !!keys.find(k => obj.hasOwnProperty(k));\n}\n\nexport function isFederatedSignInOptionsCustom(\n\tobj: any\n): obj is FederatedSignInOptionsCustom {\n\tconst keys: (keyof FederatedSignInOptionsCustom)[] = ['customProvider'];\n\treturn obj && !!keys.find(k => obj.hasOwnProperty(k));\n}\n\nexport function hasCustomState(obj: any): boolean {\n\tconst keys: (keyof (\n\t\t| FederatedSignInOptions\n\t\t| FederatedSignInOptionsCustom\n\t))[] = ['customState'];\n\treturn obj && !!keys.find(k => obj.hasOwnProperty(k));\n}\n\n/**\n * Details for multi-factor authentication\n */\nexport interface MfaRequiredDetails {\n\tchallengeName: any;\n\tchallengeParameters: any;\n}\n\n/**\n * interface for federatedResponse\n */\nexport interface FederatedResponse {\n\t// access token\n\ttoken: string;\n\t// identity id\n\tidentity_id?: string;\n\t// the universal time when token expired\n\texpires_at: number;\n}\n\n/**\n * interface for federatedUser\n */\nexport interface FederatedUser {\n\tname: string;\n\temail?: string;\n\tpicture?: string;\n}\n\nexport interface AwsCognitoOAuthOpts {\n\tdomain: string;\n\tscope: Array<string>;\n\tredirectSignIn: string;\n\tredirectSignOut: string;\n\tresponseType: string;\n\toptions?: object;\n\turlOpener?: (url: string, redirectUrl: string) => Promise<any>;\n}\n\nexport function isCognitoHostedOpts(\n\toauth: OAuthOpts\n): oauth is AwsCognitoOAuthOpts {\n\treturn (<AwsCognitoOAuthOpts>oauth).redirectSignIn !== undefined;\n}\n\nexport interface Auth0OAuthOpts {\n\tdomain: string;\n\tclientID: string;\n\tscope: string;\n\tredirectUri: string;\n\taudience: string;\n\tresponseType: string;\n\treturnTo: string;\n\turlOpener?: (url: string, redirectUrl: string) => Promise<any>;\n}\n\n// Replacing to fix typings\n// export interface OAuth {\n//     awsCognito?: awsCognitoOAuthOpts,\n//     auth0?: any\n// }\n\nexport type OAuthOpts = AwsCognitoOAuthOpts | Auth0OAuthOpts;\n\nexport interface ConfirmSignUpOptions {\n\tforceAliasCreation?: boolean;\n\tclientMetadata?: ClientMetaData;\n}\n\nexport interface SignOutOpts {\n\tglobal?: boolean;\n}\n\nexport interface CurrentUserOpts {\n\tbypassCache: boolean;\n}\n\nexport interface GetPreferredMFAOpts {\n\tbypassCache: boolean;\n}\n\nexport type UsernamePasswordOpts = {\n\tusername: string;\n\tpassword: string;\n\tvalidationData?: { [key: string]: any };\n};\n\nexport enum AuthErrorTypes {\n\tNoConfig = 'noConfig',\n\tMissingAuthConfig = 'missingAuthConfig',\n\tEmptyUsername = 'emptyUsername',\n\tInvalidUsername = 'invalidUsername',\n\tEmptyPassword = 'emptyPassword',\n\tEmptyCode = 'emptyCode',\n\tSignUpError = 'signUpError',\n\tNoMFA = 'noMFA',\n\tInvalidMFA = 'invalidMFA',\n\tEmptyChallengeResponse = 'emptyChallengeResponse',\n\tNoUserSession = 'noUserSession',\n\tDefault = 'default',\n\tDeviceConfig = 'deviceConfig',\n\tNetworkError = 'networkError',\n\tAutoSignInError = 'autoSignInError',\n}\n\nexport type AuthErrorMessages = { [key in AuthErrorTypes]: AuthErrorMessage };\n\nexport interface AuthErrorMessage {\n\tmessage: string;\n\tlog?: string;\n}\n\n// We can extend this in the future if needed\nexport type SignInOpts = UsernamePasswordOpts;\n\nexport type ClientMetaData =\n\t| {\n\t\t\t[key: string]: string;\n\t  }\n\t| undefined;\n\nexport function isUsernamePasswordOpts(obj: any): obj is UsernamePasswordOpts {\n\treturn !!(obj as UsernamePasswordOpts).username;\n}\n\nexport interface IAuthDevice {\n\tid: string;\n\tname: string;\n}\n\nexport interface AutoSignInOptions {\n\tenabled: boolean;\n\tclientMetaData?: ClientMetaData;\n\tvalidationData?: { [key: string]: any };\n}\n\nexport enum GRAPHQL_AUTH_MODE {\n\tAPI_KEY = 'API_KEY',\n\tAWS_IAM = 'AWS_IAM',\n\tOPENID_CONNECT = 'OPENID_CONNECT',\n\tAMAZON_COGNITO_USER_POOLS = 'AMAZON_COGNITO_USER_POOLS',\n\tAWS_LAMBDA = 'AWS_LAMBDA',\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ConsoleLogger as Logger } from './Logger';\nvar logger = new Logger('Hub');\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n    ? Symbol.for('amplify_default')\n    : '@@amplify_default');\nfunction isLegacyCallback(callback) {\n    return callback.onHubCapsule !== undefined;\n}\nvar HubClass = /** @class */ (function () {\n    function HubClass(name) {\n        this.listeners = [];\n        this.patterns = [];\n        this.protectedChannels = [\n            'core',\n            'auth',\n            'api',\n            'analytics',\n            'interactions',\n            'pubsub',\n            'storage',\n            'ui',\n            'xr',\n        ];\n        this.name = name;\n    }\n    /**\n     * Used internally to remove a Hub listener.\n     *\n     * @remarks\n     * This private method is for internal use only. Instead of calling Hub.remove, call the result of Hub.listen.\n     */\n    HubClass.prototype._remove = function (channel, listener) {\n        if (channel instanceof RegExp) {\n            var pattern_1 = this.patterns.find(function (_a) {\n                var pattern = _a.pattern;\n                return pattern.source === channel.source;\n            });\n            if (!pattern_1) {\n                logger.warn(\"No listeners for \".concat(channel));\n                return;\n            }\n            this.patterns = __spreadArray([], __read(this.patterns.filter(function (x) { return x !== pattern_1; })), false);\n        }\n        else {\n            var holder = this.listeners[channel];\n            if (!holder) {\n                logger.warn(\"No listeners for \".concat(channel));\n                return;\n            }\n            this.listeners[channel] = __spreadArray([], __read(holder.filter(function (_a) {\n                var callback = _a.callback;\n                return callback !== listener;\n            })), false);\n        }\n    };\n    /**\n     * @deprecated Instead of calling Hub.remove, call the result of Hub.listen.\n     */\n    HubClass.prototype.remove = function (channel, listener) {\n        this._remove(channel, listener);\n    };\n    /**\n     * Used to send a Hub event.\n     *\n     * @param channel - The channel on which the event will be broadcast\n     * @param payload - The HubPayload\n     * @param source  - The source of the event; defaults to ''\n     * @param ampSymbol - Symbol used to determine if the event is dispatched internally on a protected channel\n     *\n     */\n    HubClass.prototype.dispatch = function (channel, payload, source, ampSymbol) {\n        if (source === void 0) { source = ''; }\n        if (this.protectedChannels.indexOf(channel) > -1) {\n            var hasAccess = ampSymbol === AMPLIFY_SYMBOL;\n            if (!hasAccess) {\n                logger.warn(\"WARNING: \".concat(channel, \" is protected and dispatching on it can have unintended consequences\"));\n            }\n        }\n        var capsule = {\n            channel: channel,\n            payload: __assign({}, payload),\n            source: source,\n            patternInfo: [],\n        };\n        try {\n            this._toListeners(capsule);\n        }\n        catch (e) {\n            logger.error(e);\n        }\n    };\n    /**\n     * Used to listen for Hub events.\n     *\n     * @param channel - The channel on which to listen\n     * @param callback - The callback to execute when an event is received on the specified channel\n     * @param listenerName - The name of the listener; defaults to 'noname'\n     * @returns A function which can be called to cancel the listener.\n     *\n     */\n    HubClass.prototype.listen = function (channel, callback, listenerName) {\n        var _this = this;\n        if (listenerName === void 0) { listenerName = 'noname'; }\n        var cb;\n        // Check for legacy onHubCapsule callback for backwards compatability\n        if (isLegacyCallback(callback)) {\n            logger.warn(\"WARNING onHubCapsule is Deprecated. Please pass in a callback.\");\n            cb = callback.onHubCapsule.bind(callback);\n        }\n        else if (typeof callback !== 'function') {\n            throw new Error('No callback supplied to Hub');\n        }\n        else {\n            cb = callback;\n        }\n        if (channel instanceof RegExp) {\n            this.patterns.push({\n                pattern: channel,\n                callback: cb,\n            });\n        }\n        else {\n            var holder = this.listeners[channel];\n            if (!holder) {\n                holder = [];\n                this.listeners[channel] = holder;\n            }\n            holder.push({\n                name: listenerName,\n                callback: cb,\n            });\n        }\n        return function () {\n            _this._remove(channel, cb);\n        };\n    };\n    HubClass.prototype._toListeners = function (capsule) {\n        var channel = capsule.channel, payload = capsule.payload;\n        var holder = this.listeners[channel];\n        if (holder) {\n            holder.forEach(function (listener) {\n                logger.debug(\"Dispatching to \".concat(channel, \" with \"), payload);\n                try {\n                    listener.callback(capsule);\n                }\n                catch (e) {\n                    logger.error(e);\n                }\n            });\n        }\n        if (this.patterns.length > 0) {\n            if (!payload.message) {\n                logger.warn(\"Cannot perform pattern matching without a message key\");\n                return;\n            }\n            var payloadStr_1 = payload.message;\n            this.patterns.forEach(function (pattern) {\n                var match = payloadStr_1.match(pattern.pattern);\n                if (match) {\n                    var _a = __read(match), groups = _a.slice(1);\n                    var dispatchingCapsule = __assign(__assign({}, capsule), { patternInfo: groups });\n                    try {\n                        pattern.callback(dispatchingCapsule);\n                    }\n                    catch (e) {\n                        logger.error(e);\n                    }\n                }\n            });\n        }\n    };\n    return HubClass;\n}());\nexport { HubClass };\n/*We export a __default__ instance of HubClass to use it as a\npseudo Singleton for the main messaging bus, however you can still create\nyour own instance of HubClass() for a separate \"private bus\" of events.*/\nexport var Hub = new HubClass('__default__');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar dataMemory = {};\n/** @class */\nvar MemoryStorage = /** @class */ (function () {\n    function MemoryStorage() {\n    }\n    /**\n     * This is used to set a specific item in storage\n     * @param {string} key - the key for the item\n     * @param {object} value - the value\n     * @returns {string} value that was set\n     */\n    MemoryStorage.setItem = function (key, value) {\n        dataMemory[key] = value;\n        return dataMemory[key];\n    };\n    /**\n     * This is used to get a specific key from storage\n     * @param {string} key - the key for the item\n     * This is used to clear the storage\n     * @returns {string} the data item\n     */\n    MemoryStorage.getItem = function (key) {\n        return Object.prototype.hasOwnProperty.call(dataMemory, key)\n            ? dataMemory[key]\n            : undefined;\n    };\n    /**\n     * This is used to remove an item from storage\n     * @param {string} key - the key being set\n     * @returns {string} value - value that was deleted\n     */\n    MemoryStorage.removeItem = function (key) {\n        return delete dataMemory[key];\n    };\n    /**\n     * This is used to clear the storage\n     * @returns {string} nothing\n     */\n    MemoryStorage.clear = function () {\n        dataMemory = {};\n        return dataMemory;\n    };\n    return MemoryStorage;\n}());\nexport { MemoryStorage };\nvar StorageHelper = /** @class */ (function () {\n    /**\n     * This is used to get a storage object\n     * @returns {object} the storage\n     */\n    function StorageHelper() {\n        try {\n            this.storageWindow = window.localStorage;\n            this.storageWindow.setItem('aws.amplify.test-ls', 1);\n            this.storageWindow.removeItem('aws.amplify.test-ls');\n        }\n        catch (exception) {\n            this.storageWindow = MemoryStorage;\n        }\n    }\n    /**\n     * This is used to return the storage\n     * @returns {object} the storage\n     */\n    StorageHelper.prototype.getStorage = function () {\n        return this.storageWindow;\n    };\n    return StorageHelper;\n}());\nexport { StorageHelper };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar MIME_MAP = [\n    { type: 'text/plain', ext: 'txt' },\n    { type: 'text/html', ext: 'html' },\n    { type: 'text/javascript', ext: 'js' },\n    { type: 'text/css', ext: 'css' },\n    { type: 'text/csv', ext: 'csv' },\n    { type: 'text/yaml', ext: 'yml' },\n    { type: 'text/yaml', ext: 'yaml' },\n    { type: 'text/calendar', ext: 'ics' },\n    { type: 'text/calendar', ext: 'ical' },\n    { type: 'image/apng', ext: 'apng' },\n    { type: 'image/bmp', ext: 'bmp' },\n    { type: 'image/gif', ext: 'gif' },\n    { type: 'image/x-icon', ext: 'ico' },\n    { type: 'image/x-icon', ext: 'cur' },\n    { type: 'image/jpeg', ext: 'jpg' },\n    { type: 'image/jpeg', ext: 'jpeg' },\n    { type: 'image/jpeg', ext: 'jfif' },\n    { type: 'image/jpeg', ext: 'pjp' },\n    { type: 'image/jpeg', ext: 'pjpeg' },\n    { type: 'image/png', ext: 'png' },\n    { type: 'image/svg+xml', ext: 'svg' },\n    { type: 'image/tiff', ext: 'tif' },\n    { type: 'image/tiff', ext: 'tiff' },\n    { type: 'image/webp', ext: 'webp' },\n    { type: 'application/json', ext: 'json' },\n    { type: 'application/xml', ext: 'xml' },\n    { type: 'application/x-sh', ext: 'sh' },\n    { type: 'application/zip', ext: 'zip' },\n    { type: 'application/x-rar-compressed', ext: 'rar' },\n    { type: 'application/x-tar', ext: 'tar' },\n    { type: 'application/x-bzip', ext: 'bz' },\n    { type: 'application/x-bzip2', ext: 'bz2' },\n    { type: 'application/pdf', ext: 'pdf' },\n    { type: 'application/java-archive', ext: 'jar' },\n    { type: 'application/msword', ext: 'doc' },\n    { type: 'application/vnd.ms-excel', ext: 'xls' },\n    { type: 'application/vnd.ms-excel', ext: 'xlsx' },\n    { type: 'message/rfc822', ext: 'eml' },\n];\nexport var isEmpty = function (obj) {\n    if (obj === void 0) { obj = {}; }\n    return Object.keys(obj).length === 0;\n};\nexport var sortByField = function (list, field, dir) {\n    if (!list || !list.sort) {\n        return false;\n    }\n    var dirX = dir && dir === 'desc' ? -1 : 1;\n    list.sort(function (a, b) {\n        var a_val = a[field];\n        var b_val = b[field];\n        if (typeof b_val === 'undefined') {\n            return typeof a_val === 'undefined' ? 0 : 1 * dirX;\n        }\n        if (typeof a_val === 'undefined') {\n            return -1 * dirX;\n        }\n        if (a_val < b_val) {\n            return -1 * dirX;\n        }\n        if (a_val > b_val) {\n            return 1 * dirX;\n        }\n        return 0;\n    });\n    return true;\n};\nexport var objectLessAttributes = function (obj, less) {\n    var ret = Object.assign({}, obj);\n    if (less) {\n        if (typeof less === 'string') {\n            delete ret[less];\n        }\n        else {\n            less.forEach(function (attr) {\n                delete ret[attr];\n            });\n        }\n    }\n    return ret;\n};\nexport var filenameToContentType = function (filename, defVal) {\n    if (defVal === void 0) { defVal = 'application/octet-stream'; }\n    var name = filename.toLowerCase();\n    var filtered = MIME_MAP.filter(function (mime) { return name.endsWith('.' + mime.ext); });\n    return filtered.length > 0 ? filtered[0].type : defVal;\n};\nexport var isTextFile = function (contentType) {\n    var type = contentType.toLowerCase();\n    if (type.startsWith('text/')) {\n        return true;\n    }\n    return ('application/json' === type ||\n        'application/xml' === type ||\n        'application/sh' === type);\n};\nexport var generateRandomString = function () {\n    var result = '';\n    var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n    for (var i = 32; i > 0; i -= 1) {\n        result += chars[Math.floor(Math.random() * chars.length)];\n    }\n    return result;\n};\nexport var makeQuerablePromise = function (promise) {\n    if (promise.isResolved)\n        return promise;\n    var isPending = true;\n    var isRejected = false;\n    var isFullfilled = false;\n    var result = promise.then(function (data) {\n        isFullfilled = true;\n        isPending = false;\n        return data;\n    }, function (e) {\n        isRejected = true;\n        isPending = false;\n        throw e;\n    });\n    result.isFullfilled = function () { return isFullfilled; };\n    result.isPending = function () { return isPending; };\n    result.isRejected = function () { return isRejected; };\n    return result;\n};\nexport var isWebWorker = function () {\n    if (typeof self === 'undefined') {\n        return false;\n    }\n    var selfContext = self;\n    return (typeof selfContext.WorkerGlobalScope !== 'undefined' &&\n        self instanceof selfContext.WorkerGlobalScope);\n};\nexport var browserOrNode = function () {\n    var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n    var isNode = typeof process !== 'undefined' &&\n        process.versions != null &&\n        process.versions.node != null;\n    return {\n        isBrowser: isBrowser,\n        isNode: isNode,\n    };\n};\n/**\n * transfer the first letter of the keys to lowercase\n * @param {Object} obj - the object need to be transferred\n * @param {Array} whiteListForItself - whitelist itself from being transferred\n * @param {Array} whiteListForChildren - whitelist its children keys from being transferred\n */\nexport var transferKeyToLowerCase = function (obj, whiteListForItself, whiteListForChildren) {\n    if (whiteListForItself === void 0) { whiteListForItself = []; }\n    if (whiteListForChildren === void 0) { whiteListForChildren = []; }\n    if (!isStrictObject(obj))\n        return obj;\n    var ret = {};\n    for (var key in obj) {\n        if (obj.hasOwnProperty(key)) {\n            var transferedKey = whiteListForItself.includes(key)\n                ? key\n                : key[0].toLowerCase() + key.slice(1);\n            ret[transferedKey] = whiteListForChildren.includes(key)\n                ? obj[key]\n                : transferKeyToLowerCase(obj[key], whiteListForItself, whiteListForChildren);\n        }\n    }\n    return ret;\n};\n/**\n * transfer the first letter of the keys to lowercase\n * @param {Object} obj - the object need to be transferred\n * @param {Array} whiteListForItself - whitelist itself from being transferred\n * @param {Array} whiteListForChildren - whitelist its children keys from being transferred\n */\nexport var transferKeyToUpperCase = function (obj, whiteListForItself, whiteListForChildren) {\n    if (whiteListForItself === void 0) { whiteListForItself = []; }\n    if (whiteListForChildren === void 0) { whiteListForChildren = []; }\n    if (!isStrictObject(obj))\n        return obj;\n    var ret = {};\n    for (var key in obj) {\n        if (obj.hasOwnProperty(key)) {\n            var transferredKey = whiteListForItself.includes(key)\n                ? key\n                : key[0].toUpperCase() + key.slice(1);\n            ret[transferredKey] = whiteListForChildren.includes(key)\n                ? obj[key]\n                : transferKeyToUpperCase(obj[key], whiteListForItself, whiteListForChildren);\n        }\n    }\n    return ret;\n};\n/**\n * Return true if the object is a strict object\n * which means it's not Array, Function, Number, String, Boolean or Null\n * @param obj the Object\n */\nexport var isStrictObject = function (obj) {\n    return (obj instanceof Object &&\n        !(obj instanceof Array) &&\n        !(obj instanceof Function) &&\n        !(obj instanceof Number) &&\n        !(obj instanceof String) &&\n        !(obj instanceof Boolean));\n};\n","var __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n        if (ar || !(i in from)) {\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n            ar[i] = from[i];\n        }\n    }\n    return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ConsoleLogger as Logger } from '../Logger/ConsoleLogger';\nvar logger = new Logger('Util');\nvar NonRetryableError = /** @class */ (function (_super) {\n    __extends(NonRetryableError, _super);\n    function NonRetryableError(message) {\n        var _this = _super.call(this, message) || this;\n        _this.nonRetryable = true;\n        return _this;\n    }\n    return NonRetryableError;\n}(Error));\nexport { NonRetryableError };\nexport var isNonRetryableError = function (obj) {\n    var key = 'nonRetryable';\n    return obj && obj[key];\n};\n/**\n * @private\n * Internal use of Amplify only\n */\nexport function retry(functionToRetry, args, delayFn, onTerminate) {\n    return __awaiter(this, void 0, void 0, function () {\n        var _this = this;\n        return __generator(this, function (_a) {\n            if (typeof functionToRetry !== 'function') {\n                throw Error('functionToRetry must be a function');\n            }\n            return [2 /*return*/, new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {\n                    var attempt, terminated, timeout, wakeUp, lastError, _loop_1, state_1;\n                    return __generator(this, function (_a) {\n                        switch (_a.label) {\n                            case 0:\n                                attempt = 0;\n                                terminated = false;\n                                wakeUp = function () { };\n                                onTerminate &&\n                                    onTerminate.then(function () {\n                                        // signal not to try anymore.\n                                        terminated = true;\n                                        // stop sleeping if we're sleeping.\n                                        clearTimeout(timeout);\n                                        wakeUp();\n                                    });\n                                _loop_1 = function () {\n                                    var _b, _c, err_1, retryIn_1;\n                                    return __generator(this, function (_d) {\n                                        switch (_d.label) {\n                                            case 0:\n                                                attempt++;\n                                                logger.debug(\"\".concat(functionToRetry.name, \" attempt #\").concat(attempt, \" with this vars: \").concat(JSON.stringify(args)));\n                                                _d.label = 1;\n                                            case 1:\n                                                _d.trys.push([1, 3, , 7]);\n                                                _b = {};\n                                                _c = resolve;\n                                                return [4 /*yield*/, functionToRetry.apply(void 0, __spreadArray([], __read(args), false))];\n                                            case 2: return [2 /*return*/, (_b.value = _c.apply(void 0, [_d.sent()]), _b)];\n                                            case 3:\n                                                err_1 = _d.sent();\n                                                lastError = err_1;\n                                                logger.debug(\"error on \".concat(functionToRetry.name), err_1);\n                                                if (isNonRetryableError(err_1)) {\n                                                    logger.debug(\"\".concat(functionToRetry.name, \" non retryable error\"), err_1);\n                                                    return [2 /*return*/, { value: reject(err_1) }];\n                                                }\n                                                retryIn_1 = delayFn(attempt, args, err_1);\n                                                logger.debug(\"\".concat(functionToRetry.name, \" retrying in \").concat(retryIn_1, \" ms\"));\n                                                if (!(retryIn_1 === false || terminated)) return [3 /*break*/, 4];\n                                                return [2 /*return*/, { value: reject(err_1) }];\n                                            case 4: return [4 /*yield*/, new Promise(function (r) {\n                                                    wakeUp = r; // export wakeUp for onTerminate handling\n                                                    timeout = setTimeout(wakeUp, retryIn_1);\n                                                })];\n                                            case 5:\n                                                _d.sent();\n                                                _d.label = 6;\n                                            case 6: return [3 /*break*/, 7];\n                                            case 7: return [2 /*return*/];\n                                        }\n                                    });\n                                };\n                                _a.label = 1;\n                            case 1:\n                                if (!!terminated) return [3 /*break*/, 3];\n                                return [5 /*yield**/, _loop_1()];\n                            case 2:\n                                state_1 = _a.sent();\n                                if (typeof state_1 === \"object\")\n                                    return [2 /*return*/, state_1.value];\n                                return [3 /*break*/, 1];\n                            case 3:\n                                // reached if terminated while waiting for a timer.\n                                reject(lastError);\n                                return [2 /*return*/];\n                        }\n                    });\n                }); })];\n        });\n    });\n}\nvar MAX_DELAY_MS = 5 * 60 * 1000;\n/**\n * @private\n * Internal use of Amplify only\n */\nexport function jitteredBackoff(maxDelayMs) {\n    if (maxDelayMs === void 0) { maxDelayMs = MAX_DELAY_MS; }\n    var BASE_TIME_MS = 100;\n    var JITTER_FACTOR = 100;\n    return function (attempt) {\n        var delay = Math.pow(2, attempt) * BASE_TIME_MS + JITTER_FACTOR * Math.random();\n        return delay > maxDelayMs ? false : delay;\n    };\n}\n/**\n * @private\n * Internal use of Amplify only\n */\nexport var jitteredExponentialRetry = function (functionToRetry, args, maxDelayMs, onTerminate) {\n    if (maxDelayMs === void 0) { maxDelayMs = MAX_DELAY_MS; }\n    return retry(functionToRetry, args, jitteredBackoff(maxDelayMs), onTerminate);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport var Framework;\n(function (Framework) {\n    // < 100 - Web frameworks\n    Framework[\"WebUnknown\"] = \"0\";\n    Framework[\"React\"] = \"1\";\n    Framework[\"NextJs\"] = \"2\";\n    Framework[\"Angular\"] = \"3\";\n    Framework[\"VueJs\"] = \"4\";\n    Framework[\"Nuxt\"] = \"5\";\n    Framework[\"Svelte\"] = \"6\";\n    // 100s - Server side frameworks\n    Framework[\"ServerSideUnknown\"] = \"100\";\n    Framework[\"ReactSSR\"] = \"101\";\n    Framework[\"NextJsSSR\"] = \"102\";\n    Framework[\"AngularSSR\"] = \"103\";\n    Framework[\"VueJsSSR\"] = \"104\";\n    Framework[\"NuxtSSR\"] = \"105\";\n    Framework[\"SvelteSSR\"] = \"106\";\n    // 200s - Mobile framework\n    Framework[\"ReactNative\"] = \"201\";\n    Framework[\"Expo\"] = \"202\";\n})(Framework || (Framework = {}));\nexport var Category;\n(function (Category) {\n    Category[\"API\"] = \"api\";\n    Category[\"Auth\"] = \"auth\";\n    Category[\"Analytics\"] = \"analytics\";\n    Category[\"DataStore\"] = \"datastore\";\n    Category[\"Geo\"] = \"geo\";\n    Category[\"InAppMessaging\"] = \"inappmessaging\";\n    Category[\"Interactions\"] = \"interactions\";\n    Category[\"Predictions\"] = \"predictions\";\n    Category[\"PubSub\"] = \"pubsub\";\n    Category[\"PushNotification\"] = \"pushnotification\";\n    Category[\"Storage\"] = \"storage\";\n})(Category || (Category = {}));\nexport var AnalyticsAction;\n(function (AnalyticsAction) {\n    AnalyticsAction[\"Record\"] = \"1\";\n    AnalyticsAction[\"UpdateEndpoint\"] = \"2\";\n})(AnalyticsAction || (AnalyticsAction = {}));\nexport var ApiAction;\n(function (ApiAction) {\n    ApiAction[\"GraphQl\"] = \"1\";\n    ApiAction[\"Get\"] = \"2\";\n    ApiAction[\"Post\"] = \"3\";\n    ApiAction[\"Put\"] = \"4\";\n    ApiAction[\"Patch\"] = \"5\";\n    ApiAction[\"Del\"] = \"6\";\n    ApiAction[\"Head\"] = \"7\";\n})(ApiAction || (ApiAction = {}));\nexport var AuthAction;\n(function (AuthAction) {\n    // SignUp = '1',\n    // ConfirmSignUp = '2',\n    // ResendSignUp = '3',\n    // SignIn = '4',\n    // GetMFAOptions = '5',\n    // GetPreferredMFA = '6',\n    // SetPreferredMFA = '7',\n    // DisableSMS = '8',\n    // EnableSMS = '9',\n    // SetupTOTP = '10',\n    // VerifyTotpToken = '11',\n    // ConfirmSignIn = '12',\n    // CompleteNewPassword = '13',\n    // SendCustomChallengeAnswer = '14',\n    // DeleteUserAttributes = '15',\n    // DeleteUser = '16',\n    // UpdateUserAttributes = '17',\n    // UserAttributes = '18',\n    // CurrentUserPoolUser = '19',\n    // CurrentAuthenticatedUser = '20',\n    // CurrentSession = '21',\n    // VerifyUserAttribute = '22',\n    // VerifyUserAttributeSubmit = '23',\n    // VerifyCurrentUserAttribute = '24',\n    // VerifyCurrentUserAttributeSubmit = '25',\n    // SignOut = '26',\n    // ChangePassword = '27',\n    // ForgotPassword = '28',\n    // ForgotPasswordSubmit = '29',\n    AuthAction[\"FederatedSignIn\"] = \"30\";\n    // CurrentUserInfo = '31',\n    // RememberDevice = '32',\n    // ForgetDevice = '33',\n    // FetchDevices = '34',\n})(AuthAction || (AuthAction = {}));\nexport var DataStoreAction;\n(function (DataStoreAction) {\n    DataStoreAction[\"Subscribe\"] = \"1\";\n    DataStoreAction[\"GraphQl\"] = \"2\";\n})(DataStoreAction || (DataStoreAction = {}));\nexport var GeoAction;\n(function (GeoAction) {\n    GeoAction[\"None\"] = \"0\";\n})(GeoAction || (GeoAction = {}));\nexport var InAppMessagingAction;\n(function (InAppMessagingAction) {\n    InAppMessagingAction[\"None\"] = \"0\";\n})(InAppMessagingAction || (InAppMessagingAction = {}));\nexport var InteractionsAction;\n(function (InteractionsAction) {\n    InteractionsAction[\"None\"] = \"0\";\n})(InteractionsAction || (InteractionsAction = {}));\nexport var PredictionsAction;\n(function (PredictionsAction) {\n    PredictionsAction[\"Convert\"] = \"1\";\n    PredictionsAction[\"Identify\"] = \"2\";\n    PredictionsAction[\"Interpret\"] = \"3\";\n})(PredictionsAction || (PredictionsAction = {}));\nexport var PubSubAction;\n(function (PubSubAction) {\n    PubSubAction[\"Subscribe\"] = \"1\";\n})(PubSubAction || (PubSubAction = {}));\nexport var PushNotificationAction;\n(function (PushNotificationAction) {\n    PushNotificationAction[\"None\"] = \"0\";\n})(PushNotificationAction || (PushNotificationAction = {}));\nexport var StorageAction;\n(function (StorageAction) {\n    StorageAction[\"Put\"] = \"1\";\n    StorageAction[\"Get\"] = \"2\";\n    StorageAction[\"List\"] = \"3\";\n    StorageAction[\"Copy\"] = \"4\";\n    StorageAction[\"Remove\"] = \"5\";\n    StorageAction[\"GetProperties\"] = \"6\";\n})(StorageAction || (StorageAction = {}));\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nimport { NonRetryableError } from '../Util';\nvar logger = new Logger('CognitoCredentials');\nvar waitForInit = new Promise(function (res, rej) {\n    if (!browserOrNode().isBrowser) {\n        logger.debug('not in the browser, directly resolved');\n        return res();\n    }\n    var ga = window['gapi'] && window['gapi'].auth2 ? window['gapi'].auth2 : null;\n    if (ga) {\n        logger.debug('google api already loaded');\n        return res();\n    }\n    else {\n        setTimeout(function () {\n            return res();\n        }, 2000);\n    }\n});\nvar GoogleOAuth = /** @class */ (function () {\n    function GoogleOAuth() {\n        this.initialized = false;\n        this.refreshGoogleToken = this.refreshGoogleToken.bind(this);\n        this._refreshGoogleTokenImpl = this._refreshGoogleTokenImpl.bind(this);\n    }\n    GoogleOAuth.prototype.refreshGoogleToken = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!!this.initialized) return [3 /*break*/, 2];\n                        logger.debug('need to wait for the Google SDK loaded');\n                        return [4 /*yield*/, waitForInit];\n                    case 1:\n                        _a.sent();\n                        this.initialized = true;\n                        logger.debug('finish waiting');\n                        _a.label = 2;\n                    case 2: return [2 /*return*/, this._refreshGoogleTokenImpl()];\n                }\n            });\n        });\n    };\n    GoogleOAuth.prototype._refreshGoogleTokenImpl = function () {\n        var ga = null;\n        if (browserOrNode().isBrowser)\n            ga = window['gapi'] && window['gapi'].auth2 ? window['gapi'].auth2 : null;\n        if (!ga) {\n            logger.debug('no gapi auth2 available');\n            return Promise.reject('no gapi auth2 available');\n        }\n        return new Promise(function (res, rej) {\n            ga.getAuthInstance()\n                .then(function (googleAuth) {\n                if (!googleAuth) {\n                    logger.debug('google Auth undefined');\n                    rej(new NonRetryableError('google Auth undefined'));\n                }\n                var googleUser = googleAuth.currentUser.get();\n                // refresh the token\n                if (googleUser.isSignedIn()) {\n                    logger.debug('refreshing the google access token');\n                    googleUser\n                        .reloadAuthResponse()\n                        .then(function (authResponse) {\n                        var id_token = authResponse.id_token, expires_at = authResponse.expires_at;\n                        res({ token: id_token, expires_at: expires_at });\n                    })\n                        .catch(function (err) {\n                        if (err && err.error === 'network_error') {\n                            // Not using NonRetryableError so handler will be retried\n                            rej('Network error reloading google auth response');\n                        }\n                        else {\n                            rej(new NonRetryableError('Failed to reload google auth response'));\n                        }\n                    });\n                }\n                else {\n                    rej(new NonRetryableError('User is not signed in with Google'));\n                }\n            })\n                .catch(function (err) {\n                logger.debug('Failed to refresh google token', err);\n                rej(new NonRetryableError('Failed to refresh google token'));\n            });\n        });\n    };\n    return GoogleOAuth;\n}());\nexport { GoogleOAuth };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nimport { NonRetryableError } from '../Util';\nvar logger = new Logger('CognitoCredentials');\nvar waitForInit = new Promise(function (res, rej) {\n    if (!browserOrNode().isBrowser) {\n        logger.debug('not in the browser, directly resolved');\n        return res();\n    }\n    var fb = window['FB'];\n    if (fb) {\n        logger.debug('FB SDK already loaded');\n        return res();\n    }\n    else {\n        setTimeout(function () {\n            return res();\n        }, 2000);\n    }\n});\nvar FacebookOAuth = /** @class */ (function () {\n    function FacebookOAuth() {\n        this.initialized = false;\n        this.refreshFacebookToken = this.refreshFacebookToken.bind(this);\n        this._refreshFacebookTokenImpl = this._refreshFacebookTokenImpl.bind(this);\n    }\n    FacebookOAuth.prototype.refreshFacebookToken = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!!this.initialized) return [3 /*break*/, 2];\n                        logger.debug('need to wait for the Facebook SDK loaded');\n                        return [4 /*yield*/, waitForInit];\n                    case 1:\n                        _a.sent();\n                        this.initialized = true;\n                        logger.debug('finish waiting');\n                        _a.label = 2;\n                    case 2: return [2 /*return*/, this._refreshFacebookTokenImpl()];\n                }\n            });\n        });\n    };\n    FacebookOAuth.prototype._refreshFacebookTokenImpl = function () {\n        var fb = null;\n        if (browserOrNode().isBrowser)\n            fb = window['FB'];\n        if (!fb) {\n            var errorMessage = 'no fb sdk available';\n            logger.debug(errorMessage);\n            return Promise.reject(new NonRetryableError(errorMessage));\n        }\n        return new Promise(function (res, rej) {\n            fb.getLoginStatus(function (fbResponse) {\n                if (!fbResponse || !fbResponse.authResponse) {\n                    var errorMessage = 'no response from facebook when refreshing the jwt token';\n                    logger.debug(errorMessage);\n                    // There is no definitive indication for a network error in\n                    // fbResponse, so we are treating it as an invalid token.\n                    rej(new NonRetryableError(errorMessage));\n                }\n                else {\n                    var response = fbResponse.authResponse;\n                    var accessToken = response.accessToken, expiresIn = response.expiresIn;\n                    var date = new Date();\n                    var expires_at = expiresIn * 1000 + date.getTime();\n                    if (!accessToken) {\n                        var errorMessage = 'the jwtToken is undefined';\n                        logger.debug(errorMessage);\n                        rej(new NonRetryableError(errorMessage));\n                    }\n                    res({\n                        token: accessToken,\n                        expires_at: expires_at,\n                    });\n                }\n            }, { scope: 'public_profile,email' });\n        });\n    };\n    return FacebookOAuth;\n}());\nexport { FacebookOAuth };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { GoogleOAuth as GoogleOAuthClass } from './GoogleOAuth';\nimport { FacebookOAuth as FacebookOAuthClass } from './FacebookOAuth';\nexport var GoogleOAuth = new GoogleOAuthClass();\nexport var FacebookOAuth = new FacebookOAuthClass();\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Default partition for AWS services. This is used when the region is not provided or the region is not recognized.\n *\n * @internal\n */\nexport var defaultPartition = {\n    id: 'aws',\n    outputs: {\n        dnsSuffix: 'amazonaws.com',\n    },\n    regionRegex: '^(us|eu|ap|sa|ca|me|af)\\\\-\\\\w+\\\\-\\\\d+$',\n    regions: ['aws-global'],\n};\n/**\n * This data is adapted from the partition file from AWS SDK shared utilities but remove some contents for bundle size\n * concern. Information removed are `dualStackDnsSuffix`, `supportDualStack`, `supportFIPS`, restricted partitions, and\n * list of regions for each partition other than global regions.\n *\n * * Ref: https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints\n * * Ref: https://github.com/aws/aws-sdk-js-v3/blob/0201baef03c2379f1f6f7150b9d401d4b230d488/packages/util-endpoints/src/lib/aws/partitions.json#L1\n *\n * @internal\n */\nexport var partitionsInfo = {\n    partitions: [\n        defaultPartition,\n        {\n            id: 'aws-cn',\n            outputs: {\n                dnsSuffix: 'amazonaws.com.cn',\n            },\n            regionRegex: '^cn\\\\-\\\\w+\\\\-\\\\d+$',\n            regions: ['aws-cn-global'],\n        },\n    ],\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __values = (this && this.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { defaultPartition, partitionsInfo } from './partitions';\n/**\n * Get the AWS Services endpoint URL's DNS suffix for a given region. A typical AWS regional service endpoint URL will\n * follow this pattern: {endpointPrefix}.{region}.{dnsSuffix}. For example, the endpoint URL for Cognito Identity in\n * us-east-1 will be cognito-identity.us-east-1.amazonaws.com. Here the DnsSuffix is `amazonaws.com`.\n *\n * @param region\n * @returns The DNS suffix\n *\n * @internal\n */\nexport var getDnsSuffix = function (region) {\n    var e_1, _a;\n    var partitions = partitionsInfo.partitions;\n    try {\n        for (var partitions_1 = __values(partitions), partitions_1_1 = partitions_1.next(); !partitions_1_1.done; partitions_1_1 = partitions_1.next()) {\n            var _b = partitions_1_1.value, regions = _b.regions, outputs = _b.outputs, regionRegex = _b.regionRegex;\n            var regex = new RegExp(regionRegex);\n            if (regions.includes(region) || regex.test(region)) {\n                return outputs.dnsSuffix;\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (partitions_1_1 && !partitions_1_1.done && (_a = partitions_1.return)) _a.call(partitions_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return defaultPartition.outputs.dnsSuffix;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar DEFAULT_RETRY_ATTEMPTS = 3;\n/**\n * Retry middleware\n */\nexport var retryMiddleware = function (_a) {\n    var _b = _a.maxAttempts, maxAttempts = _b === void 0 ? DEFAULT_RETRY_ATTEMPTS : _b, retryDecider = _a.retryDecider, computeDelay = _a.computeDelay, abortSignal = _a.abortSignal;\n    if (maxAttempts < 1) {\n        throw new Error('maxAttempts must be greater than 0');\n    }\n    return function (next, context) {\n        return function retryMiddleware(request) {\n            var _a;\n            return __awaiter(this, void 0, void 0, function () {\n                var error, attemptsCount, response, handleTerminalErrorOrResponse, e_1, delay;\n                return __generator(this, function (_b) {\n                    switch (_b.label) {\n                        case 0:\n                            attemptsCount = (_a = context.attemptsCount) !== null && _a !== void 0 ? _a : 0;\n                            handleTerminalErrorOrResponse = function () {\n                                if (response) {\n                                    addOrIncrementMetadataAttempts(response, attemptsCount);\n                                    return response;\n                                }\n                                else {\n                                    addOrIncrementMetadataAttempts(error, attemptsCount);\n                                    throw error;\n                                }\n                            };\n                            _b.label = 1;\n                        case 1:\n                            if (!(!(abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) && attemptsCount < maxAttempts)) return [3 /*break*/, 11];\n                            _b.label = 2;\n                        case 2:\n                            _b.trys.push([2, 4, , 5]);\n                            return [4 /*yield*/, next(request)];\n                        case 3:\n                            response = _b.sent();\n                            error = undefined;\n                            return [3 /*break*/, 5];\n                        case 4:\n                            e_1 = _b.sent();\n                            error = e_1;\n                            response = undefined;\n                            return [3 /*break*/, 5];\n                        case 5:\n                            // context.attemptsCount may be updated after calling next handler which may retry the request by itself.\n                            attemptsCount =\n                                context.attemptsCount > attemptsCount\n                                    ? context.attemptsCount\n                                    : attemptsCount + 1;\n                            context.attemptsCount = attemptsCount;\n                            return [4 /*yield*/, retryDecider(response, error)];\n                        case 6:\n                            if (!_b.sent()) return [3 /*break*/, 9];\n                            if (!(!(abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) && attemptsCount < maxAttempts)) return [3 /*break*/, 8];\n                            delay = computeDelay(attemptsCount);\n                            return [4 /*yield*/, cancellableSleep(delay, abortSignal)];\n                        case 7:\n                            _b.sent();\n                            _b.label = 8;\n                        case 8: return [3 /*break*/, 1];\n                        case 9: return [2 /*return*/, handleTerminalErrorOrResponse()];\n                        case 10: return [3 /*break*/, 1];\n                        case 11:\n                            if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {\n                                throw new Error('Request aborted.');\n                            }\n                            else {\n                                return [2 /*return*/, handleTerminalErrorOrResponse()];\n                            }\n                            return [2 /*return*/];\n                    }\n                });\n            });\n        };\n    };\n};\nvar cancellableSleep = function (timeoutMs, abortSignal) {\n    if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {\n        return Promise.resolve();\n    }\n    var timeoutId;\n    var sleepPromiseResolveFn;\n    var sleepPromise = new Promise(function (resolve) {\n        sleepPromiseResolveFn = resolve;\n        timeoutId = setTimeout(resolve, timeoutMs);\n    });\n    abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener('abort', function cancelSleep(event) {\n        clearTimeout(timeoutId);\n        abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener('abort', cancelSleep);\n        sleepPromiseResolveFn();\n    });\n    return sleepPromise;\n};\nvar addOrIncrementMetadataAttempts = function (nextHandlerOutput, attempts) {\n    var _a;\n    if (Object.prototype.toString.call(nextHandlerOutput) !== '[object Object]') {\n        return;\n    }\n    nextHandlerOutput['$metadata'] = __assign(__assign({}, ((_a = nextHandlerOutput['$metadata']) !== null && _a !== void 0 ? _a : {})), { attempts: attempts });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n/**\n * Middleware injects user agent string to specified header(default to 'x-amz-user-agent'),\n * if the header is not set already.\n *\n * TODO: incorporate new user agent design\n */\nexport var userAgentMiddleware = function (_a) {\n    var _b = _a.userAgentHeader, userAgentHeader = _b === void 0 ? 'x-amz-user-agent' : _b, _c = _a.userAgentValue, userAgentValue = _c === void 0 ? '' : _c;\n    return function (next) {\n        return function userAgentMiddleware(request) {\n            return __awaiter(this, void 0, void 0, function () {\n                var result, headerName, response;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            if (!(userAgentValue.trim().length === 0)) return [3 /*break*/, 2];\n                            return [4 /*yield*/, next(request)];\n                        case 1:\n                            result = _a.sent();\n                            return [2 /*return*/, result];\n                        case 2:\n                            headerName = userAgentHeader.toLowerCase();\n                            request.headers[headerName] = request.headers[headerName]\n                                ? \"\".concat(request.headers[headerName], \" \").concat(userAgentValue)\n                                : userAgentValue;\n                            return [4 /*yield*/, next(request)];\n                        case 3:\n                            response = _a.sent();\n                            return [2 /*return*/, response];\n                    }\n                });\n            });\n        };\n    };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Compose a transfer handler with a core transfer handler and a list of middleware.\n * @param coreHandler Core transfer handler\n * @param middleware\tList of middleware\n * @returns A transfer handler whose option type is the union of the core\n * \ttransfer handler's option type and the middleware's option type.\n * @internal\n */\nexport var composeTransferHandler = function (coreHandler, middleware) {\n    return function (request, options) {\n        var context = {};\n        var composedHandler = function (request) { return coreHandler(request, options); };\n        for (var i = middleware.length - 1; i >= 0; i--) {\n            var m = middleware[i];\n            var resolvedMiddleware = m(options);\n            composedHandler = resolvedMiddleware(composedHandler, context);\n        }\n        return composedHandler(request);\n    };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Cache the payload of a response body. It allows multiple calls to the body,\n * for example, when reading the body in both retry decider and error deserializer.\n * Caching body is allowed here because we call the body accessor(blob(), json(),\n * etc.) when body is small or streaming implementation is not available(RN).\n *\n * @internal\n */\nexport var withMemoization = function (payloadAccessor) {\n    var cached;\n    return function () {\n        if (!cached) {\n            // Explicitly not awaiting. Intermediate await would add overhead and\n            // introduce a possible race in the event that this wrapper is called\n            // again before the first `payloadAccessor` call resolves.\n            cached = payloadAccessor();\n        }\n        return cached;\n    };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport 'isomorphic-unfetch'; // TODO: remove this dependency in v6\nimport { withMemoization } from '../utils/memoization';\nvar shouldSendBody = function (method) {\n    return !['HEAD', 'GET', 'DELETE'].includes(method.toUpperCase());\n};\nexport var fetchTransferHandler = function (_a, _b) {\n    var url = _a.url, method = _a.method, headers = _a.headers, body = _a.body;\n    var abortSignal = _b.abortSignal;\n    return __awaiter(void 0, void 0, void 0, function () {\n        var resp, e_1, responseHeaders, httpResponse, bodyWithMixin;\n        var _c, _d;\n        return __generator(this, function (_e) {\n            switch (_e.label) {\n                case 0:\n                    _e.trys.push([0, 2, , 3]);\n                    return [4 /*yield*/, fetch(url, {\n                            method: method,\n                            headers: headers,\n                            body: shouldSendBody(method) ? body : undefined,\n                            signal: abortSignal,\n                        })];\n                case 1:\n                    resp = _e.sent();\n                    return [3 /*break*/, 3];\n                case 2:\n                    e_1 = _e.sent();\n                    // TODO: needs to revise error handling in v6\n                    // For now this is a thin wrapper over original fetch error similar to cognito-identity-js package.\n                    // Ref: https://github.com/aws-amplify/amplify-js/blob/4fbc8c0a2be7526aab723579b4c95b552195a80b/packages/amazon-cognito-identity-js/src/Client.js#L103-L108\n                    if (e_1 instanceof TypeError) {\n                        throw new Error('Network error');\n                    }\n                    throw e_1;\n                case 3:\n                    responseHeaders = {};\n                    (_c = resp.headers) === null || _c === void 0 ? void 0 : _c.forEach(function (value, key) {\n                        responseHeaders[key.toLowerCase()] = value;\n                    });\n                    httpResponse = {\n                        statusCode: resp.status,\n                        headers: responseHeaders,\n                        body: null,\n                    };\n                    bodyWithMixin = Object.assign((_d = resp.body) !== null && _d !== void 0 ? _d : {}, {\n                        text: withMemoization(function () { return resp.text(); }),\n                        blob: withMemoization(function () { return resp.blob(); }),\n                        json: withMemoization(function () { return resp.json(); }),\n                    });\n                    return [2 /*return*/, __assign(__assign({}, httpResponse), { body: bodyWithMixin })];\n            }\n        });\n    });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { retryMiddleware } from '../middleware/retry';\nimport { userAgentMiddleware } from '../middleware/userAgent';\nimport { composeTransferHandler } from '../internal/composeTransferHandler';\nimport { fetchTransferHandler } from './fetch';\nexport var unauthenticatedHandler = composeTransferHandler(fetchTransferHandler, [userAgentMiddleware, retryMiddleware]);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nexport var parseMetadata = function (response) {\n    var _a, _b;\n    var headers = response.headers, statusCode = response.statusCode;\n    return __assign(__assign({}, (isMetadataBearer(response) ? response.$metadata : {})), { httpStatusCode: statusCode, requestId: (_b = (_a = headers['x-amzn-requestid']) !== null && _a !== void 0 ? _a : headers['x-amzn-request-id']) !== null && _b !== void 0 ? _b : headers['x-amz-request-id'], extendedRequestId: headers['x-amz-id-2'], cfId: headers['x-amz-cf-id'] });\n};\nvar isMetadataBearer = function (response) {\n    return typeof (response === null || response === void 0 ? void 0 : response['$metadata']) === 'object';\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nimport { parseMetadata } from './responseInfo';\n/**\n * Utility functions for serializing and deserializing of JSON protocol in general(including: REST-JSON, JSON-RPC, etc.)\n */\n/**\n * Error parser for AWS JSON protocol.\n */\nexport var parseJsonError = function (response) { return __awaiter(void 0, void 0, void 0, function () {\n    var body, sanitizeErrorCode, code, message, error;\n    var _a, _b, _c, _d, _e;\n    return __generator(this, function (_f) {\n        switch (_f.label) {\n            case 0:\n                if (!response || response.statusCode < 300) {\n                    return [2 /*return*/];\n                }\n                return [4 /*yield*/, parseJsonBody(response)];\n            case 1:\n                body = _f.sent();\n                sanitizeErrorCode = function (rawValue) {\n                    var _a = __read(rawValue.toString().split(/[\\,\\:]+/), 1), cleanValue = _a[0];\n                    if (cleanValue.includes('#')) {\n                        return cleanValue.split('#')[1];\n                    }\n                    return cleanValue;\n                };\n                code = sanitizeErrorCode((_c = (_b = (_a = response.headers['x-amzn-errortype']) !== null && _a !== void 0 ? _a : body.code) !== null && _b !== void 0 ? _b : body.__type) !== null && _c !== void 0 ? _c : 'UnknownError');\n                message = (_e = (_d = body.message) !== null && _d !== void 0 ? _d : body.Message) !== null && _e !== void 0 ? _e : 'Unknown error';\n                error = new Error(message);\n                return [2 /*return*/, Object.assign(error, {\n                        name: code,\n                        $metadata: parseMetadata(response),\n                    })];\n        }\n    });\n}); };\n/**\n * Parse JSON response body to JavaScript object.\n */\nexport var parseJsonBody = function (response) { return __awaiter(void 0, void 0, void 0, function () {\n    var output;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0:\n                if (!response.body) {\n                    throw new Error('Missing response payload');\n                }\n                return [4 /*yield*/, response.body.json()];\n            case 1:\n                output = _a.sent();\n                return [2 /*return*/, Object.assign(output, {\n                        $metadata: parseMetadata(response),\n                    })];\n        }\n    });\n}); };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// via https://github.com/aws/aws-sdk-js-v3/blob/ab0e7be36e7e7f8a0c04834357aaad643c7912c3/packages/service-error-classification/src/constants.ts#L8\nvar CLOCK_SKEW_ERROR_CODES = [\n    'AuthFailure',\n    'InvalidSignatureException',\n    'RequestExpired',\n    'RequestInTheFuture',\n    'RequestTimeTooSkewed',\n    'SignatureDoesNotMatch',\n    'BadRequestException', // API Gateway\n];\n/**\n * Given an error code, returns true if it is related to a clock skew error.\n *\n * @param errorCode String representation of some error.\n * @returns True if given error is present in `CLOCK_SKEW_ERROR_CODES`, false otherwise.\n *\n * @internal\n */\nexport var isClockSkewError = function (errorCode) {\n    return CLOCK_SKEW_ERROR_CODES.includes(errorCode);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { isClockSkewError } from './isClockSkewError';\n/**\n * Get retry decider function\n * @param errorParser Function to load JavaScript error from HTTP response\n */\nexport var getRetryDecider = function (errorParser) {\n    return function (response, error) { return __awaiter(void 0, void 0, void 0, function () {\n        var errorCode, _a, statusCode;\n        var _b;\n        return __generator(this, function (_c) {\n            switch (_c.label) {\n                case 0:\n                    if (!(error !== null && error !== void 0)) return [3 /*break*/, 1];\n                    _a = error;\n                    return [3 /*break*/, 3];\n                case 1: return [4 /*yield*/, errorParser(response)];\n                case 2:\n                    _a = (_c.sent());\n                    _c.label = 3;\n                case 3:\n                    errorCode = ((_b = _a) !== null && _b !== void 0 ? _b : {}).name;\n                    statusCode = response === null || response === void 0 ? void 0 : response.statusCode;\n                    return [2 /*return*/, (isConnectionError(error) ||\n                            isThrottlingError(statusCode, errorCode) ||\n                            isClockSkewError(errorCode) ||\n                            isServerSideError(statusCode, errorCode))];\n            }\n        });\n    }); };\n};\n// reference: https://github.com/aws/aws-sdk-js-v3/blob/ab0e7be36e7e7f8a0c04834357aaad643c7912c3/packages/service-error-classification/src/constants.ts#L22-L37\nvar THROTTLING_ERROR_CODES = [\n    'BandwidthLimitExceeded',\n    'EC2ThrottledException',\n    'LimitExceededException',\n    'PriorRequestNotComplete',\n    'ProvisionedThroughputExceededException',\n    'RequestLimitExceeded',\n    'RequestThrottled',\n    'RequestThrottledException',\n    'SlowDown',\n    'ThrottledException',\n    'Throttling',\n    'ThrottlingException',\n    'TooManyRequestsException',\n];\nvar TIMEOUT_ERROR_CODES = [\n    'TimeoutError',\n    'RequestTimeout',\n    'RequestTimeoutException',\n];\nvar isThrottlingError = function (statusCode, errorCode) {\n    return statusCode === 429 || THROTTLING_ERROR_CODES.includes(errorCode);\n};\nvar isConnectionError = function (error) { return (error === null || error === void 0 ? void 0 : error.name) === 'Network error'; };\nvar isServerSideError = function (statusCode, errorCode) {\n    return [500, 502, 503, 504].includes(statusCode) ||\n        TIMEOUT_ERROR_CODES.includes(errorCode);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// TODO: [v6] The separate retry utility is used by Data packages now and will replaced by retry middleware.\nimport { jitteredBackoff as jitteredBackoffUtil } from '../../../Util/Retry';\nvar DEFAULT_MAX_DELAY_MS = 5 * 60 * 1000;\nexport var jitteredBackoff = function (attempt) {\n    var delayFunction = jitteredBackoffUtil(DEFAULT_MAX_DELAY_MS);\n    var delay = delayFunction(attempt);\n    // The delayFunction returns false when the delay is greater than the max delay(5 mins).\n    // In this case, the retry middleware will delay 5 mins instead, as a ceiling of the delay.\n    return delay === false ? DEFAULT_MAX_DELAY_MS : delay;\n};\n","// generated by genversion\nexport var version = '5.3.26';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport var globalExists = function () {\n    return typeof global !== 'undefined';\n};\nexport var globalThisExists = function () {\n    return typeof globalThis !== 'undefined';\n};\nexport var windowExists = function () {\n    return typeof window !== 'undefined';\n};\nexport var documentExists = function () {\n    return typeof document !== 'undefined';\n};\nexport var processExists = function () {\n    return typeof process !== 'undefined';\n};\nexport var keyPrefixMatch = function (object, prefix) {\n    return !!Object.keys(object).find(function (key) { return key.startsWith(prefix); });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Framework } from '../types';\nimport { reactWebDetect, reactSSRDetect } from './React';\nimport { vueWebDetect, vueSSRDetect } from './Vue';\nimport { svelteWebDetect, svelteSSRDetect } from './Svelte';\nimport { nextWebDetect, nextSSRDetect } from './Next';\nimport { nuxtWebDetect, nuxtSSRDetect } from './Nuxt';\nimport { angularWebDetect, angularSSRDetect } from './Angular';\nimport { reactNativeDetect } from './ReactNative';\nimport { expoDetect } from './Expo';\nimport { webDetect } from './Web';\n// These are in the order of detection where when both are detectable, the early Framework will be reported\nvar detectionMap = [\n    // First, detect mobile\n    { platform: Framework.Expo, detectionMethod: expoDetect },\n    { platform: Framework.ReactNative, detectionMethod: reactNativeDetect },\n    // Next, detect web frameworks\n    { platform: Framework.NextJs, detectionMethod: nextWebDetect },\n    { platform: Framework.Nuxt, detectionMethod: nuxtWebDetect },\n    { platform: Framework.Angular, detectionMethod: angularWebDetect },\n    { platform: Framework.React, detectionMethod: reactWebDetect },\n    { platform: Framework.VueJs, detectionMethod: vueWebDetect },\n    { platform: Framework.Svelte, detectionMethod: svelteWebDetect },\n    { platform: Framework.WebUnknown, detectionMethod: webDetect },\n    // Last, detect ssr frameworks\n    { platform: Framework.NextJsSSR, detectionMethod: nextSSRDetect },\n    { platform: Framework.NuxtSSR, detectionMethod: nuxtSSRDetect },\n    { platform: Framework.ReactSSR, detectionMethod: reactSSRDetect },\n    { platform: Framework.VueJsSSR, detectionMethod: vueSSRDetect },\n    { platform: Framework.AngularSSR, detectionMethod: angularSSRDetect },\n    { platform: Framework.SvelteSSR, detectionMethod: svelteSSRDetect },\n];\nexport function detect() {\n    var _a;\n    return (((_a = detectionMap.find(function (detectionEntry) { return detectionEntry.detectionMethod(); })) === null || _a === void 0 ? void 0 : _a.platform) || Framework.ServerSideUnknown);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Framework } from './types';\nimport { detect } from './detection';\n// We want to cache detection since the framework won't change\nvar frameworkCache;\nexport var frameworkChangeObservers = [];\n// Setup the detection reset tracking / timeout delays\nvar resetTriggered = false;\nvar SSR_RESET_TIMEOUT = 10; // ms\nvar WEB_RESET_TIMEOUT = 10; // ms\nvar PRIME_FRAMEWORK_DELAY = 1000; // ms\nexport var detectFramework = function () {\n    if (!frameworkCache) {\n        frameworkCache = detect();\n        if (resetTriggered) {\n            // The final run of detectFramework:\n            // Starting from this point, the `frameworkCache` becomes \"final\".\n            // So we don't need to notify the observers again so the observer\n            // can be removed after the final notice.\n            while (frameworkChangeObservers.length) {\n                frameworkChangeObservers.pop()();\n            }\n        }\n        else {\n            // The first run of detectFramework:\n            // Every time we update the cache, call each observer function\n            frameworkChangeObservers.forEach(function (fcn) { return fcn(); });\n        }\n        // Retry once for either Unknown type after a delay (explained below)\n        resetTimeout(Framework.ServerSideUnknown, SSR_RESET_TIMEOUT);\n        resetTimeout(Framework.WebUnknown, WEB_RESET_TIMEOUT);\n    }\n    return frameworkCache;\n};\n/**\n * @internal Setup observer callback that will be called everytime the framework changes\n */\nexport var observeFrameworkChanges = function (fcn) {\n    // When the `frameworkCache` won't be updated again, we ignore all incoming\n    // observers.\n    if (resetTriggered) {\n        return;\n    }\n    frameworkChangeObservers.push(fcn);\n};\nexport function clearCache() {\n    frameworkCache = undefined;\n}\n// For a framework type and a delay amount, setup the event to re-detect\n//   During the runtime boot, it is possible that framework detection will\n//   be triggered before the framework has made modifications to the\n//   global/window/etc needed for detection. When no framework is detected\n//   we will reset and try again to ensure we don't use a cached\n//   non-framework detection result for all requests.\nfunction resetTimeout(framework, delay) {\n    if (frameworkCache === framework && !resetTriggered) {\n        setTimeout(function () {\n            clearCache();\n            resetTriggered = true;\n            setTimeout(detectFramework, PRIME_FRAMEWORK_DELAY);\n        }, delay);\n    }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { globalExists } from './helpers';\n// Tested with expo 48 / react-native 0.71.3\nexport function expoDetect() {\n    // @ts-ignore\n    return globalExists() && typeof global['expo'] !== 'undefined';\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// Tested with react-native 0.17.7\nexport function reactNativeDetect() {\n    return (typeof navigator !== 'undefined' &&\n        typeof navigator.product !== 'undefined' &&\n        navigator.product === 'ReactNative');\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { globalExists, keyPrefixMatch, windowExists } from './helpers';\n// Tested with next 13.4 / react 18.2\nexport function nextWebDetect() {\n    // @ts-ignore\n    return windowExists() && window['next'] && typeof window['next'] === 'object';\n}\nexport function nextSSRDetect() {\n    return (globalExists() &&\n        (keyPrefixMatch(global, '__next') || keyPrefixMatch(global, '__NEXT')));\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { globalExists, windowExists } from './helpers';\n// Tested with nuxt 2.15 / vue 2.7\nexport function nuxtWebDetect() {\n    return (windowExists() &&\n        // @ts-ignore\n        (window['__NUXT__'] !== undefined || window['$nuxt'] !== undefined));\n}\nexport function nuxtSSRDetect() {\n    // @ts-ignore\n    return globalExists() && typeof global['__NUXT_PATHS__'] !== 'undefined';\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { documentExists, processExists, windowExists } from './helpers';\n// Tested with @angular/core 16.0.0\nexport function angularWebDetect() {\n    var angularVersionSetInDocument = Boolean(documentExists() && document.querySelector('[ng-version]'));\n    var angularContentSetInWindow = Boolean(\n    // @ts-ignore\n    windowExists() && typeof window['ng'] !== 'undefined');\n    return angularVersionSetInDocument || angularContentSetInWindow;\n}\nexport function angularSSRDetect() {\n    var _a;\n    return ((processExists() &&\n        typeof process.env === 'object' &&\n        ((_a = process.env['npm_lifecycle_script']) === null || _a === void 0 ? void 0 : _a.startsWith('ng '))) ||\n        false);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { documentExists, processExists } from './helpers';\n// Tested with react 18.2 - built using Vite\nexport function reactWebDetect() {\n    var elementKeyPrefixedWithReact = function (key) {\n        return key.startsWith('_react') || key.startsWith('__react');\n    };\n    var elementIsReactEnabled = function (element) {\n        return Object.keys(element).find(elementKeyPrefixedWithReact);\n    };\n    var allElementsWithId = function () { return Array.from(document.querySelectorAll('[id]')); };\n    return documentExists() && allElementsWithId().some(elementIsReactEnabled);\n}\nexport function reactSSRDetect() {\n    return (processExists() &&\n        typeof process.env !== 'undefined' &&\n        !!Object.keys(process.env).find(function (key) { return key.includes('react'); }));\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { globalExists, keyPrefixMatch, windowExists } from './helpers';\n// Tested with vue 3.3.2\nexport function vueWebDetect() {\n    return windowExists() && keyPrefixMatch(window, '__VUE');\n}\nexport function vueSSRDetect() {\n    return globalExists() && keyPrefixMatch(global, '__VUE');\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { keyPrefixMatch, processExists, windowExists } from './helpers';\n// Tested with svelte 3.59\nexport function svelteWebDetect() {\n    return windowExists() && keyPrefixMatch(window, '__SVELTE');\n}\nexport function svelteSSRDetect() {\n    return (processExists() &&\n        typeof process.env !== 'undefined' &&\n        !!Object.keys(process.env).find(function (key) { return key.includes('svelte'); }));\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { windowExists } from './helpers';\nexport function webDetect() {\n    return windowExists();\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nimport { Framework } from './types';\nimport { version } from './version';\nimport { detectFramework, observeFrameworkChanges } from './detectFramework';\nvar BASE_USER_AGENT = \"aws-amplify\";\nvar PlatformBuilder = /** @class */ (function () {\n    function PlatformBuilder() {\n        this.userAgent = \"\".concat(BASE_USER_AGENT, \"/\").concat(version);\n    }\n    Object.defineProperty(PlatformBuilder.prototype, \"framework\", {\n        get: function () {\n            return detectFramework();\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(PlatformBuilder.prototype, \"isReactNative\", {\n        get: function () {\n            return (this.framework === Framework.ReactNative ||\n                this.framework === Framework.Expo);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    PlatformBuilder.prototype.observeFrameworkChanges = function (fcn) {\n        observeFrameworkChanges(fcn);\n    };\n    return PlatformBuilder;\n}());\nexport var Platform = new PlatformBuilder();\nexport var getAmplifyUserAgentObject = function (_a) {\n    var _b = _a === void 0 ? {} : _a, category = _b.category, action = _b.action, framework = _b.framework;\n    var userAgent = [[BASE_USER_AGENT, version]];\n    if (category) {\n        userAgent.push([category, action]);\n    }\n    userAgent.push(['framework', detectFramework()]);\n    return userAgent;\n};\nexport var getAmplifyUserAgent = function (customUserAgentDetails) {\n    var userAgent = getAmplifyUserAgentObject(customUserAgentDetails);\n    var userAgentString = userAgent\n        .map(function (_a) {\n        var _b = __read(_a, 2), agentKey = _b[0], agentValue = _b[1];\n        return \"\".concat(agentKey, \"/\").concat(agentValue);\n    })\n        .join(' ');\n    return userAgentString;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { getDnsSuffix, unauthenticatedHandler, parseJsonError, } from '../../clients';\nimport { composeTransferHandler } from '../../clients/internal/composeTransferHandler';\nimport { jitteredBackoff, getRetryDecider, } from '../../clients/middleware/retry';\nimport { getAmplifyUserAgent } from '../../Platform';\nimport { observeFrameworkChanges } from '../../Platform/detectFramework';\n/**\n * The service name used to sign requests if the API requires authentication.\n */\nvar SERVICE_NAME = 'cognito-identity';\n/**\n * The endpoint resolver function that returns the endpoint URL for a given region.\n */\nvar endpointResolver = function (_a) {\n    var region = _a.region;\n    return ({\n        url: new URL(\"https://cognito-identity.\".concat(region, \".\").concat(getDnsSuffix(region))),\n    });\n};\n/**\n * A Cognito Identity-specific middleware that disables caching for all requests.\n */\nvar disableCacheMiddleware = function () { return function (next, context) {\n    return function disableCacheMiddleware(request) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                request.headers['cache-control'] = 'no-store';\n                return [2 /*return*/, next(request)];\n            });\n        });\n    };\n}; };\n/**\n * A Cognito Identity-specific transfer handler that does NOT sign requests, and\n * disables caching.\n *\n * @internal\n */\nexport var cognitoIdentityTransferHandler = composeTransferHandler(unauthenticatedHandler, [disableCacheMiddleware]);\n/**\n * @internal\n */\nexport var defaultConfig = {\n    service: SERVICE_NAME,\n    endpointResolver: endpointResolver,\n    retryDecider: getRetryDecider(parseJsonError),\n    computeDelay: jitteredBackoff,\n    userAgentValue: getAmplifyUserAgent(),\n};\nobserveFrameworkChanges(function () {\n    defaultConfig.userAgentValue = getAmplifyUserAgent();\n});\n/**\n * @internal\n */\nexport var getSharedHeaders = function (operation) { return ({\n    'content-type': 'application/x-amz-json-1.1',\n    'x-amz-target': \"AWSCognitoIdentityService.\".concat(operation),\n}); };\n/**\n * @internal\n */\nexport var buildHttpRpcRequest = function (_a, headers, body) {\n    var url = _a.url;\n    return ({\n        headers: headers,\n        url: url,\n        body: body,\n        method: 'POST',\n    });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nexport var composeServiceApi = function (transferHandler, serializer, deserializer, defaultConfig) {\n    return function (config, input) { return __awaiter(void 0, void 0, void 0, function () {\n        var resolvedConfig, endpoint, request, response;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    resolvedConfig = __assign(__assign({}, defaultConfig), config);\n                    return [4 /*yield*/, resolvedConfig.endpointResolver(resolvedConfig, input)];\n                case 1:\n                    endpoint = _a.sent();\n                    return [4 /*yield*/, serializer(input, endpoint)];\n                case 2:\n                    request = _a.sent();\n                    return [4 /*yield*/, transferHandler(request, __assign({}, resolvedConfig))];\n                case 3:\n                    response = _a.sent();\n                    return [4 /*yield*/, deserializer(response)];\n                case 4: return [2 /*return*/, _a.sent()];\n            }\n        });\n    }); };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { buildHttpRpcRequest, cognitoIdentityTransferHandler, defaultConfig, getSharedHeaders, } from './base';\nimport { parseJsonBody, parseJsonError, parseMetadata, } from '../../clients';\nimport { composeServiceApi } from '../../clients/internal';\nvar getIdSerializer = function (input, endpoint) {\n    var headers = getSharedHeaders('GetId');\n    var body = JSON.stringify(input);\n    return buildHttpRpcRequest(endpoint, headers, body);\n};\nvar getIdDeserializer = function (response) { return __awaiter(void 0, void 0, void 0, function () {\n    var error, body;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0:\n                if (!(response.statusCode >= 300)) return [3 /*break*/, 2];\n                return [4 /*yield*/, parseJsonError(response)];\n            case 1:\n                error = _a.sent();\n                throw error;\n            case 2: return [4 /*yield*/, parseJsonBody(response)];\n            case 3:\n                body = _a.sent();\n                return [2 /*return*/, {\n                        IdentityId: body.IdentityId,\n                        $metadata: parseMetadata(response),\n                    }];\n        }\n    });\n}); };\n/**\n * @internal\n */\nexport var getId = composeServiceApi(cognitoIdentityTransferHandler, getIdSerializer, getIdDeserializer, defaultConfig);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nimport { buildHttpRpcRequest, cognitoIdentityTransferHandler, defaultConfig, getSharedHeaders, } from './base';\nimport { parseJsonBody, parseJsonError, parseMetadata, } from '../../clients';\nimport { composeServiceApi } from '../../clients/internal';\nvar getCredentialsForIdentitySerializer = function (input, endpoint) {\n    var headers = getSharedHeaders('GetCredentialsForIdentity');\n    var body = JSON.stringify(input);\n    return buildHttpRpcRequest(endpoint, headers, body);\n};\nvar getCredentialsForIdentityDeserializer = function (response) { return __awaiter(void 0, void 0, void 0, function () {\n    var error, body;\n    return __generator(this, function (_a) {\n        switch (_a.label) {\n            case 0:\n                if (!(response.statusCode >= 300)) return [3 /*break*/, 2];\n                return [4 /*yield*/, parseJsonError(response)];\n            case 1:\n                error = _a.sent();\n                throw error;\n            case 2: return [4 /*yield*/, parseJsonBody(response)];\n            case 3:\n                body = _a.sent();\n                return [2 /*return*/, {\n                        IdentityId: body.IdentityId,\n                        Credentials: deserializeCredentials(body.Credentials),\n                        $metadata: parseMetadata(response),\n                    }];\n        }\n    });\n}); };\nvar deserializeCredentials = function (output) {\n    if (output === void 0) { output = {}; }\n    return ({\n        AccessKeyId: output['AccessKeyId'],\n        SecretKey: output['SecretKey'],\n        SessionToken: output['SessionToken'],\n        Expiration: new Date(output['Expiration'] * 1000),\n    });\n};\n/**\n * @internal\n */\nexport var getCredentialsForIdentity = composeServiceApi(cognitoIdentityTransferHandler, getCredentialsForIdentitySerializer, getCredentialsForIdentityDeserializer, defaultConfig);\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport { ConsoleLogger as Logger } from './Logger';\nvar logger = new Logger('Parser');\nexport var parseAWSExports = function (config) {\n    var amplifyConfig = {};\n    // Analytics\n    if (config['aws_mobile_analytics_app_id']) {\n        var Analytics = {\n            AWSPinpoint: {\n                appId: config['aws_mobile_analytics_app_id'],\n                region: config['aws_mobile_analytics_app_region'],\n            },\n        };\n        amplifyConfig.Analytics = Analytics;\n    }\n    // Auth\n    if (config['aws_cognito_identity_pool_id'] || config['aws_user_pools_id']) {\n        amplifyConfig.Auth = {\n            userPoolId: config['aws_user_pools_id'],\n            userPoolWebClientId: config['aws_user_pools_web_client_id'],\n            region: config['aws_cognito_region'],\n            identityPoolId: config['aws_cognito_identity_pool_id'],\n            identityPoolRegion: config['aws_cognito_region'],\n            mandatorySignIn: config['aws_mandatory_sign_in'] === 'enable',\n            signUpVerificationMethod: config['aws_cognito_sign_up_verification_method'] || 'code',\n        };\n    }\n    // Storage\n    var storageConfig;\n    if (config['aws_user_files_s3_bucket']) {\n        storageConfig = {\n            AWSS3: {\n                bucket: config['aws_user_files_s3_bucket'],\n                region: config['aws_user_files_s3_bucket_region'],\n                dangerouslyConnectToHttpEndpointForTesting: config['aws_user_files_s3_dangerously_connect_to_http_endpoint_for_testing'],\n            },\n        };\n    }\n    else {\n        storageConfig = config ? config.Storage || config : {};\n    }\n    // Logging\n    if (config['Logging']) {\n        amplifyConfig.Logging = __assign(__assign({}, config['Logging']), { region: config['aws_project_region'] });\n    }\n    // Geo\n    if (config['geo']) {\n        amplifyConfig.Geo = Object.assign({}, config.geo);\n        if (config.geo['amazon_location_service']) {\n            amplifyConfig.Geo = {\n                AmazonLocationService: config.geo['amazon_location_service'],\n            };\n        }\n    }\n    amplifyConfig.Analytics = Object.assign({}, amplifyConfig.Analytics, config.Analytics);\n    amplifyConfig.Auth = Object.assign({}, amplifyConfig.Auth, config.Auth);\n    amplifyConfig.Storage = Object.assign({}, storageConfig);\n    amplifyConfig.Logging = Object.assign({}, amplifyConfig.Logging, config.Logging);\n    logger.debug('parse config', config, 'to amplifyconfig', amplifyConfig);\n    return amplifyConfig;\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger as Logger } from './Logger';\nimport { StorageHelper } from './StorageHelper';\nimport { makeQuerablePromise } from './JS';\nimport { FacebookOAuth, GoogleOAuth } from './OAuthHelper';\nimport { jitteredExponentialRetry } from './Util';\nimport { Amplify } from './Amplify';\nimport { getId, getCredentialsForIdentity } from './AwsClients/CognitoIdentity';\nimport { parseAWSExports } from './parseAWSExports';\nimport { Hub } from './Hub';\nvar logger = new Logger('Credentials');\nvar CREDENTIALS_TTL = 50 * 60 * 1000; // 50 min, can be modified on config if required in the future\nvar COGNITO_IDENTITY_KEY_PREFIX = 'CognitoIdentityId-';\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n    ? Symbol.for('amplify_default')\n    : '@@amplify_default');\nvar dispatchCredentialsEvent = function (event, data, message) {\n    Hub.dispatch('core', { event: event, data: data, message: message }, 'Credentials', AMPLIFY_SYMBOL);\n};\nvar CredentialsClass = /** @class */ (function () {\n    function CredentialsClass(config) {\n        this._gettingCredPromise = null;\n        this._refreshHandlers = {};\n        // Allow `Auth` to be injected for SSR, but Auth isn't a required dependency for Credentials\n        this.Auth = undefined;\n        this.configure(config);\n        this._refreshHandlers['google'] = GoogleOAuth.refreshGoogleToken;\n        this._refreshHandlers['facebook'] = FacebookOAuth.refreshFacebookToken;\n    }\n    CredentialsClass.prototype.getModuleName = function () {\n        return 'Credentials';\n    };\n    CredentialsClass.prototype.getCredSource = function () {\n        return this._credentials_source;\n    };\n    CredentialsClass.prototype.configure = function (config) {\n        if (!config)\n            return this._config || {};\n        this._config = Object.assign({}, this._config, config);\n        var refreshHandlers = this._config.refreshHandlers;\n        // If the developer has provided an object of refresh handlers,\n        // then we can merge the provided handlers with the current handlers.\n        if (refreshHandlers) {\n            this._refreshHandlers = __assign(__assign({}, this._refreshHandlers), refreshHandlers);\n        }\n        this._storage = this._config.storage;\n        if (!this._storage) {\n            this._storage = new StorageHelper().getStorage();\n        }\n        this._storageSync = Promise.resolve();\n        if (typeof this._storage['sync'] === 'function') {\n            this._storageSync = this._storage['sync']();\n        }\n        dispatchCredentialsEvent('credentials_configured', null, \"Credentials has been configured successfully\");\n        return this._config;\n    };\n    CredentialsClass.prototype.get = function () {\n        logger.debug('getting credentials');\n        return this._pickupCredentials();\n    };\n    // currently we only store the guest identity in local storage\n    CredentialsClass.prototype._getCognitoIdentityIdStorageKey = function (identityPoolId) {\n        return \"\".concat(COGNITO_IDENTITY_KEY_PREFIX).concat(identityPoolId);\n    };\n    CredentialsClass.prototype._pickupCredentials = function () {\n        logger.debug('picking up credentials');\n        if (!this._gettingCredPromise || !this._gettingCredPromise.isPending()) {\n            logger.debug('getting new cred promise');\n            this._gettingCredPromise = makeQuerablePromise(this._keepAlive());\n        }\n        else {\n            logger.debug('getting old cred promise');\n        }\n        return this._gettingCredPromise;\n    };\n    CredentialsClass.prototype._keepAlive = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var cred, _a, Auth, user_1, session, refreshToken_1, refreshRequest, err_1;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        logger.debug('checking if credentials exists and not expired');\n                        cred = this._credentials;\n                        if (cred && !this._isExpired(cred) && !this._isPastTTL()) {\n                            logger.debug('credentials not changed and not expired, directly return');\n                            return [2 /*return*/, Promise.resolve(cred)];\n                        }\n                        logger.debug('need to get a new credential or refresh the existing one');\n                        _a = this.Auth, Auth = _a === void 0 ? Amplify.Auth : _a;\n                        if (!Auth || typeof Auth.currentUserCredentials !== 'function') {\n                            // If Auth module is not imported, do a best effort to get guest credentials\n                            return [2 /*return*/, this._setCredentialsForGuest()];\n                        }\n                        if (!(!this._isExpired(cred) && this._isPastTTL())) return [3 /*break*/, 6];\n                        logger.debug('ttl has passed but token is not yet expired');\n                        _b.label = 1;\n                    case 1:\n                        _b.trys.push([1, 5, , 6]);\n                        return [4 /*yield*/, Auth.currentUserPoolUser()];\n                    case 2:\n                        user_1 = _b.sent();\n                        return [4 /*yield*/, Auth.currentSession()];\n                    case 3:\n                        session = _b.sent();\n                        refreshToken_1 = session.refreshToken;\n                        refreshRequest = new Promise(function (res, rej) {\n                            user_1.refreshSession(refreshToken_1, function (err, data) {\n                                return err ? rej(err) : res(data);\n                            });\n                        });\n                        return [4 /*yield*/, refreshRequest];\n                    case 4:\n                        _b.sent(); // note that rejections will be caught and handled in the catch block.\n                        return [3 /*break*/, 6];\n                    case 5:\n                        err_1 = _b.sent();\n                        // should not throw because user might just be on guest access or is authenticated through federation\n                        logger.debug('Error attempting to refreshing the session', err_1);\n                        return [3 /*break*/, 6];\n                    case 6: return [2 /*return*/, Auth.currentUserCredentials()];\n                }\n            });\n        });\n    };\n    CredentialsClass.prototype.refreshFederatedToken = function (federatedInfo) {\n        logger.debug('Getting federated credentials');\n        var provider = federatedInfo.provider, user = federatedInfo.user, token = federatedInfo.token, identity_id = federatedInfo.identity_id;\n        var expires_at = federatedInfo.expires_at;\n        // Make sure expires_at is in millis\n        expires_at =\n            new Date(expires_at).getFullYear() === 1970\n                ? expires_at * 1000\n                : expires_at;\n        var that = this;\n        logger.debug('checking if federated jwt token expired');\n        if (expires_at > new Date().getTime()) {\n            // if not expired\n            logger.debug('token not expired');\n            return this._setCredentialsFromFederation({\n                provider: provider,\n                token: token,\n                user: user,\n                identity_id: identity_id,\n                expires_at: expires_at,\n            });\n        }\n        else {\n            // if refresh handler exists\n            if (that._refreshHandlers[provider] &&\n                typeof that._refreshHandlers[provider] === 'function') {\n                logger.debug('getting refreshed jwt token from federation provider');\n                return this._providerRefreshWithRetry({\n                    refreshHandler: that._refreshHandlers[provider],\n                    provider: provider,\n                    user: user,\n                });\n            }\n            else {\n                logger.debug('no refresh handler for provider:', provider);\n                this.clear();\n                return Promise.reject('no refresh handler for provider');\n            }\n        }\n    };\n    CredentialsClass.prototype._providerRefreshWithRetry = function (_a) {\n        var _this = this;\n        var refreshHandler = _a.refreshHandler, provider = _a.provider, user = _a.user;\n        var MAX_DELAY_MS = 10 * 1000;\n        // refreshHandler will retry network errors, otherwise it will\n        // return NonRetryableError to break out of jitteredExponentialRetry\n        return jitteredExponentialRetry(refreshHandler, [], MAX_DELAY_MS)\n            .then(function (data) {\n            logger.debug('refresh federated token sucessfully', data);\n            return _this._setCredentialsFromFederation({\n                provider: provider,\n                token: data.token,\n                user: user,\n                identity_id: data.identity_id,\n                expires_at: data.expires_at,\n            });\n        })\n            .catch(function (e) {\n            var isNetworkError = typeof e === 'string' &&\n                e.toLowerCase().lastIndexOf('network error', e.length) === 0;\n            if (!isNetworkError) {\n                _this.clear();\n            }\n            logger.debug('refresh federated token failed', e);\n            return Promise.reject('refreshing federation token failed: ' + e);\n        });\n    };\n    CredentialsClass.prototype._isExpired = function (credentials) {\n        if (!credentials) {\n            logger.debug('no credentials for expiration check');\n            return true;\n        }\n        logger.debug('are these credentials expired?', credentials);\n        var ts = Date.now();\n        /* returns date object.\n            https://github.com/aws/aws-sdk-js-v3/blob/v1.0.0-beta.1/packages/types/src/credentials.ts#L26\n        */\n        var expiration = credentials.expiration;\n        return expiration.getTime() <= ts;\n    };\n    CredentialsClass.prototype._isPastTTL = function () {\n        return this._nextCredentialsRefresh <= Date.now();\n    };\n    CredentialsClass.prototype._setCredentialsForGuest = function () {\n        var _a;\n        return __awaiter(this, void 0, void 0, function () {\n            var _b, identityPoolId, region, mandatorySignIn, identityPoolRegion, identityId, _c, cognitoConfig, guestCredentialsProvider, credentials;\n            var _this = this;\n            return __generator(this, function (_d) {\n                switch (_d.label) {\n                    case 0:\n                        logger.debug('setting credentials for guest');\n                        if (!((_a = this._config) === null || _a === void 0 ? void 0 : _a.identityPoolId)) {\n                            // If Credentials are not configured thru Auth module,\n                            // doing best effort to check if the library was configured\n                            this._config = Object.assign({}, this._config, parseAWSExports(this._config || {}).Auth);\n                        }\n                        _b = this._config, identityPoolId = _b.identityPoolId, region = _b.region, mandatorySignIn = _b.mandatorySignIn, identityPoolRegion = _b.identityPoolRegion;\n                        if (mandatorySignIn) {\n                            return [2 /*return*/, Promise.reject('cannot get guest credentials when mandatory signin enabled')];\n                        }\n                        if (!identityPoolId) {\n                            logger.debug('No Cognito Identity pool provided for unauthenticated access');\n                            return [2 /*return*/, Promise.reject('No Cognito Identity pool provided for unauthenticated access')];\n                        }\n                        if (!identityPoolRegion && !region) {\n                            logger.debug('region is not configured for getting the credentials');\n                            return [2 /*return*/, Promise.reject('region is not configured for getting the credentials')];\n                        }\n                        _c = this;\n                        return [4 /*yield*/, this._getGuestIdentityId()];\n                    case 1:\n                        identityId = (_c._identityId = _d.sent());\n                        cognitoConfig = { region: identityPoolRegion !== null && identityPoolRegion !== void 0 ? identityPoolRegion : region };\n                        guestCredentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n                            var IdentityId, Credentials;\n                            return __generator(this, function (_a) {\n                                switch (_a.label) {\n                                    case 0:\n                                        if (!!identityId) return [3 /*break*/, 2];\n                                        return [4 /*yield*/, getId(cognitoConfig, {\n                                                IdentityPoolId: identityPoolId,\n                                            })];\n                                    case 1:\n                                        IdentityId = (_a.sent()).IdentityId;\n                                        this._identityId = IdentityId;\n                                        _a.label = 2;\n                                    case 2: return [4 /*yield*/, getCredentialsForIdentity(cognitoConfig, {\n                                            IdentityId: this._identityId,\n                                        })];\n                                    case 3:\n                                        Credentials = (_a.sent()).Credentials;\n                                        return [2 /*return*/, {\n                                                identityId: this._identityId,\n                                                accessKeyId: Credentials.AccessKeyId,\n                                                secretAccessKey: Credentials.SecretKey,\n                                                sessionToken: Credentials.SessionToken,\n                                                expiration: Credentials.Expiration,\n                                            }];\n                                }\n                            });\n                        }); };\n                        credentials = guestCredentialsProvider().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n                            return __generator(this, function (_a) {\n                                throw err;\n                            });\n                        }); });\n                        return [2 /*return*/, this._loadCredentials(credentials, 'guest', false, null)\n                                .then(function (res) {\n                                return res;\n                            })\n                                .catch(function (e) { return __awaiter(_this, void 0, void 0, function () {\n                                var guestCredentialsProvider_1;\n                                var _this = this;\n                                return __generator(this, function (_a) {\n                                    switch (_a.label) {\n                                        case 0:\n                                            if (!(e.name === 'ResourceNotFoundException' &&\n                                                e.message === \"Identity '\".concat(identityId, \"' not found.\"))) return [3 /*break*/, 2];\n                                            logger.debug('Failed to load guest credentials');\n                                            return [4 /*yield*/, this._removeGuestIdentityId()];\n                                        case 1:\n                                            _a.sent();\n                                            guestCredentialsProvider_1 = function () { return __awaiter(_this, void 0, void 0, function () {\n                                                var IdentityId, Credentials;\n                                                return __generator(this, function (_a) {\n                                                    switch (_a.label) {\n                                                        case 0: return [4 /*yield*/, getId(cognitoConfig, {\n                                                                IdentityPoolId: identityPoolId,\n                                                            })];\n                                                        case 1:\n                                                            IdentityId = (_a.sent()).IdentityId;\n                                                            this._identityId = IdentityId;\n                                                            return [4 /*yield*/, getCredentialsForIdentity(cognitoConfig, {\n                                                                    IdentityId: IdentityId,\n                                                                })];\n                                                        case 2:\n                                                            Credentials = (_a.sent()).Credentials;\n                                                            return [2 /*return*/, {\n                                                                    identityId: IdentityId,\n                                                                    accessKeyId: Credentials.AccessKeyId,\n                                                                    secretAccessKey: Credentials.SecretKey,\n                                                                    sessionToken: Credentials.SessionToken,\n                                                                    expiration: Credentials.Expiration,\n                                                                }];\n                                                    }\n                                                });\n                                            }); };\n                                            credentials = guestCredentialsProvider_1().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n                                                return __generator(this, function (_a) {\n                                                    throw err;\n                                                });\n                                            }); });\n                                            return [2 /*return*/, this._loadCredentials(credentials, 'guest', false, null)];\n                                        case 2: return [2 /*return*/, e];\n                                    }\n                                });\n                            }); })];\n                }\n            });\n        });\n    };\n    CredentialsClass.prototype._setCredentialsFromFederation = function (params) {\n        var _this = this;\n        var provider = params.provider, token = params.token;\n        var identity_id = params.identity_id;\n        var domains = {\n            google: 'accounts.google.com',\n            facebook: 'graph.facebook.com',\n            amazon: 'www.amazon.com',\n            developer: 'cognito-identity.amazonaws.com',\n        };\n        // Use custom provider url instead of the predefined ones\n        var domain = domains[provider] || provider;\n        if (!domain) {\n            return Promise.reject('You must specify a federated provider');\n        }\n        var logins = {};\n        logins[domain] = token;\n        var _a = this._config, identityPoolId = _a.identityPoolId, region = _a.region, identityPoolRegion = _a.identityPoolRegion;\n        if (!identityPoolId) {\n            logger.debug('No Cognito Federated Identity pool provided');\n            return Promise.reject('No Cognito Federated Identity pool provided');\n        }\n        if (!identityPoolRegion && !region) {\n            logger.debug('region is not configured for getting the credentials');\n            return Promise.reject('region is not configured for getting the credentials');\n        }\n        var cognitoConfig = { region: identityPoolRegion !== null && identityPoolRegion !== void 0 ? identityPoolRegion : region };\n        var authenticatedCredentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n            var IdentityId, Credentials;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!!identity_id) return [3 /*break*/, 2];\n                        return [4 /*yield*/, getId(cognitoConfig, {\n                                IdentityPoolId: identityPoolId,\n                                Logins: logins,\n                            })];\n                    case 1:\n                        IdentityId = (_a.sent()).IdentityId;\n                        identity_id = IdentityId;\n                        _a.label = 2;\n                    case 2: return [4 /*yield*/, getCredentialsForIdentity(cognitoConfig, {\n                            IdentityId: identity_id,\n                            Logins: logins,\n                        })];\n                    case 3:\n                        Credentials = (_a.sent()).Credentials;\n                        return [2 /*return*/, {\n                                identityId: identity_id,\n                                accessKeyId: Credentials.AccessKeyId,\n                                secretAccessKey: Credentials.SecretKey,\n                                sessionToken: Credentials.SessionToken,\n                                expiration: Credentials.Expiration,\n                            }];\n                }\n            });\n        }); };\n        var credentials = authenticatedCredentialsProvider().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                throw err;\n            });\n        }); });\n        return this._loadCredentials(credentials, 'federated', true, params);\n    };\n    CredentialsClass.prototype._setCredentialsFromSession = function (session) {\n        var _this = this;\n        logger.debug('set credentials from session');\n        var idToken = session.getIdToken().getJwtToken();\n        var _a = this._config, region = _a.region, userPoolId = _a.userPoolId, identityPoolId = _a.identityPoolId, identityPoolRegion = _a.identityPoolRegion;\n        if (!identityPoolId) {\n            logger.debug('No Cognito Federated Identity pool provided');\n            return Promise.reject('No Cognito Federated Identity pool provided');\n        }\n        if (!identityPoolRegion && !region) {\n            logger.debug('region is not configured for getting the credentials');\n            return Promise.reject('region is not configured for getting the credentials');\n        }\n        var key = 'cognito-idp.' + region + '.amazonaws.com/' + userPoolId;\n        var logins = {};\n        logins[key] = idToken;\n        var cognitoConfig = { region: identityPoolRegion !== null && identityPoolRegion !== void 0 ? identityPoolRegion : region };\n        /*\n            Retreiving identityId with GetIdCommand to mimic the behavior in the following code in aws-sdk-v3:\n            https://git.io/JeDxU\n\n            Note: Retreive identityId from CredentialsProvider once aws-sdk-js v3 supports this.\n        */\n        var credentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n            var guestIdentityId, generatedOrRetrievedIdentityId, IdentityId, _a, _b, AccessKeyId, Expiration, SecretKey, SessionToken, primaryIdentityId;\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0: return [4 /*yield*/, this._getGuestIdentityId()];\n                    case 1:\n                        guestIdentityId = _c.sent();\n                        if (!!guestIdentityId) return [3 /*break*/, 3];\n                        return [4 /*yield*/, getId(cognitoConfig, {\n                                IdentityPoolId: identityPoolId,\n                                Logins: logins,\n                            })];\n                    case 2:\n                        IdentityId = (_c.sent()).IdentityId;\n                        generatedOrRetrievedIdentityId = IdentityId;\n                        _c.label = 3;\n                    case 3: return [4 /*yield*/, getCredentialsForIdentity(cognitoConfig, {\n                            IdentityId: guestIdentityId || generatedOrRetrievedIdentityId,\n                            Logins: logins,\n                        })];\n                    case 4:\n                        _a = _c.sent(), _b = _a.Credentials, AccessKeyId = _b.AccessKeyId, Expiration = _b.Expiration, SecretKey = _b.SecretKey, SessionToken = _b.SessionToken, primaryIdentityId = _a.IdentityId;\n                        this._identityId = primaryIdentityId;\n                        if (!guestIdentityId) return [3 /*break*/, 6];\n                        // if guestIdentity is found and used by GetCredentialsForIdentity\n                        // it will be linked to the logins provided, and disqualified as an unauth identity\n                        logger.debug(\"The guest identity \".concat(guestIdentityId, \" has been successfully linked to the logins\"));\n                        if (guestIdentityId === primaryIdentityId) {\n                            logger.debug(\"The guest identity \".concat(guestIdentityId, \" has become the primary identity\"));\n                        }\n                        // remove it from local storage to avoid being used as a guest Identity by _setCredentialsForGuest\n                        return [4 /*yield*/, this._removeGuestIdentityId()];\n                    case 5:\n                        // remove it from local storage to avoid being used as a guest Identity by _setCredentialsForGuest\n                        _c.sent();\n                        _c.label = 6;\n                    case 6: \n                    // https://github.com/aws/aws-sdk-js-v3/blob/main/packages/credential-provider-cognito-identity/src/fromCognitoIdentity.ts#L40\n                    return [2 /*return*/, {\n                            accessKeyId: AccessKeyId,\n                            secretAccessKey: SecretKey,\n                            sessionToken: SessionToken,\n                            expiration: Expiration,\n                            identityId: primaryIdentityId,\n                        }];\n                }\n            });\n        }); };\n        var credentials = credentialsProvider().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                throw err;\n            });\n        }); });\n        return this._loadCredentials(credentials, 'userPool', true, null);\n    };\n    CredentialsClass.prototype._loadCredentials = function (credentials, source, authenticated, info) {\n        var _this = this;\n        var that = this;\n        return new Promise(function (res, rej) {\n            credentials\n                .then(function (credentials) { return __awaiter(_this, void 0, void 0, function () {\n                var user, provider, token, expires_at, identity_id;\n                return __generator(this, function (_a) {\n                    switch (_a.label) {\n                        case 0:\n                            logger.debug('Load credentials successfully', credentials);\n                            if (this._identityId && !credentials.identityId) {\n                                credentials['identityId'] = this._identityId;\n                            }\n                            that._credentials = credentials;\n                            that._credentials.authenticated = authenticated;\n                            that._credentials_source = source;\n                            that._nextCredentialsRefresh = new Date().getTime() + CREDENTIALS_TTL;\n                            if (source === 'federated') {\n                                user = Object.assign({ id: this._credentials.identityId }, info.user);\n                                provider = info.provider, token = info.token, expires_at = info.expires_at, identity_id = info.identity_id;\n                                try {\n                                    this._storage.setItem('aws-amplify-federatedInfo', JSON.stringify({\n                                        provider: provider,\n                                        token: token,\n                                        user: user,\n                                        expires_at: expires_at,\n                                        identity_id: identity_id,\n                                    }));\n                                }\n                                catch (e) {\n                                    logger.debug('Failed to put federated info into auth storage', e);\n                                }\n                            }\n                            if (!(source === 'guest')) return [3 /*break*/, 2];\n                            return [4 /*yield*/, this._setGuestIdentityId(credentials.identityId)];\n                        case 1:\n                            _a.sent();\n                            _a.label = 2;\n                        case 2:\n                            res(that._credentials);\n                            return [2 /*return*/];\n                    }\n                });\n            }); })\n                .catch(function (err) {\n                if (err) {\n                    logger.debug('Failed to load credentials', credentials);\n                    logger.debug('Error loading credentials', err);\n                    rej(err);\n                    return;\n                }\n            });\n        });\n    };\n    CredentialsClass.prototype.set = function (params, source) {\n        if (source === 'session') {\n            return this._setCredentialsFromSession(params);\n        }\n        else if (source === 'federation') {\n            return this._setCredentialsFromFederation(params);\n        }\n        else if (source === 'guest') {\n            return this._setCredentialsForGuest();\n        }\n        else {\n            logger.debug('no source specified for setting credentials');\n            return Promise.reject('invalid source');\n        }\n    };\n    CredentialsClass.prototype.clear = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                this._credentials = null;\n                this._credentials_source = null;\n                logger.debug('removing aws-amplify-federatedInfo from storage');\n                this._storage.removeItem('aws-amplify-federatedInfo');\n                return [2 /*return*/];\n            });\n        });\n    };\n    /* operations on local stored guest identity */\n    CredentialsClass.prototype._getGuestIdentityId = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var identityPoolId, e_1;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        identityPoolId = this._config.identityPoolId;\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, this._storageSync];\n                    case 2:\n                        _a.sent();\n                        return [2 /*return*/, this._storage.getItem(this._getCognitoIdentityIdStorageKey(identityPoolId))];\n                    case 3:\n                        e_1 = _a.sent();\n                        logger.debug('Failed to get the cached guest identityId', e_1);\n                        return [3 /*break*/, 4];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CredentialsClass.prototype._setGuestIdentityId = function (identityId) {\n        return __awaiter(this, void 0, void 0, function () {\n            var identityPoolId, e_2;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        identityPoolId = this._config.identityPoolId;\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, this._storageSync];\n                    case 2:\n                        _a.sent();\n                        this._storage.setItem(this._getCognitoIdentityIdStorageKey(identityPoolId), identityId);\n                        return [3 /*break*/, 4];\n                    case 3:\n                        e_2 = _a.sent();\n                        logger.debug('Failed to cache guest identityId', e_2);\n                        return [3 /*break*/, 4];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CredentialsClass.prototype._removeGuestIdentityId = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var identityPoolId;\n            return __generator(this, function (_a) {\n                identityPoolId = this._config.identityPoolId;\n                logger.debug(\"removing \".concat(this._getCognitoIdentityIdStorageKey(identityPoolId), \" from storage\"));\n                this._storage.removeItem(this._getCognitoIdentityIdStorageKey(identityPoolId));\n                return [2 /*return*/];\n            });\n        });\n    };\n    /**\n     * Compact version of credentials\n     * @param {Object} credentials\n     * @return {Object} - Credentials\n     */\n    CredentialsClass.prototype.shear = function (credentials) {\n        return {\n            accessKeyId: credentials.accessKeyId,\n            sessionToken: credentials.sessionToken,\n            secretAccessKey: credentials.secretAccessKey,\n            identityId: credentials.identityId,\n            authenticated: credentials.authenticated,\n        };\n    };\n    return CredentialsClass;\n}());\nexport { CredentialsClass };\nexport var Credentials = new CredentialsClass(null);\nAmplify.register(Credentials);\n","var cookie = {};\n\n/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\nvar hasRequiredCookie;\n\nfunction requireCookie () {\n\tif (hasRequiredCookie) return cookie;\n\thasRequiredCookie = 1;\n\n\t/**\n\t * Module exports.\n\t * @public\n\t */\n\n\tcookie.parse = parse;\n\tcookie.serialize = serialize;\n\n\t/**\n\t * Module variables.\n\t * @private\n\t */\n\n\tvar __toString = Object.prototype.toString;\n\tvar __hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\t/**\n\t * RegExp to match cookie-name in RFC 6265 sec 4.1.1\n\t * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2\n\t * which has been replaced by the token definition in RFC 7230 appendix B.\n\t *\n\t * cookie-name       = token\n\t * token             = 1*tchar\n\t * tchar             = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" /\n\t *                     \"*\" / \"+\" / \"-\" / \".\" / \"^\" / \"_\" /\n\t *                     \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\n\t */\n\n\tvar cookieNameRegExp = /^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/;\n\n\t/**\n\t * RegExp to match cookie-value in RFC 6265 sec 4.1.1\n\t *\n\t * cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n\t * cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n\t *                     ; US-ASCII characters excluding CTLs,\n\t *                     ; whitespace DQUOTE, comma, semicolon,\n\t *                     ; and backslash\n\t */\n\n\tvar cookieValueRegExp = /^(\"?)[\\u0021\\u0023-\\u002B\\u002D-\\u003A\\u003C-\\u005B\\u005D-\\u007E]*\\1$/;\n\n\t/**\n\t * RegExp to match domain-value in RFC 6265 sec 4.1.1\n\t *\n\t * domain-value      = <subdomain>\n\t *                     ; defined in [RFC1034], Section 3.5, as\n\t *                     ; enhanced by [RFC1123], Section 2.1\n\t * <subdomain>       = <label> | <subdomain> \".\" <label>\n\t * <label>           = <let-dig> [ [ <ldh-str> ] <let-dig> ]\n\t *                     Labels must be 63 characters or less.\n\t *                     'let-dig' not 'letter' in the first char, per RFC1123\n\t * <ldh-str>         = <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n\t * <let-dig-hyp>     = <let-dig> | \"-\"\n\t * <let-dig>         = <letter> | <digit>\n\t * <letter>          = any one of the 52 alphabetic characters A through Z in\n\t *                     upper case and a through z in lower case\n\t * <digit>           = any one of the ten digits 0 through 9\n\t *\n\t * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173\n\t *\n\t * > (Note that a leading %x2E (\".\"), if present, is ignored even though that\n\t * character is not permitted, but a trailing %x2E (\".\"), if present, will\n\t * cause the user agent to ignore the attribute.)\n\t */\n\n\tvar domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n\n\t/**\n\t * RegExp to match path-value in RFC 6265 sec 4.1.1\n\t *\n\t * path-value        = <any CHAR except CTLs or \";\">\n\t * CHAR              = %x01-7F\n\t *                     ; defined in RFC 5234 appendix B.1\n\t */\n\n\tvar pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\n\n\t/**\n\t * Parse a cookie header.\n\t *\n\t * Parse the given cookie header string into an object\n\t * The object has the various cookies as keys(names) => values\n\t *\n\t * @param {string} str\n\t * @param {object} [opt]\n\t * @return {object}\n\t * @public\n\t */\n\n\tfunction parse(str, opt) {\n\t  if (typeof str !== 'string') {\n\t    throw new TypeError('argument str must be a string');\n\t  }\n\n\t  var obj = {};\n\t  var len = str.length;\n\t  // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.\n\t  if (len < 2) return obj;\n\n\t  var dec = (opt && opt.decode) || decode;\n\t  var index = 0;\n\t  var eqIdx = 0;\n\t  var endIdx = 0;\n\n\t  do {\n\t    eqIdx = str.indexOf('=', index);\n\t    if (eqIdx === -1) break; // No more cookie pairs.\n\n\t    endIdx = str.indexOf(';', index);\n\n\t    if (endIdx === -1) {\n\t      endIdx = len;\n\t    } else if (eqIdx > endIdx) {\n\t      // backtrack on prior semicolon\n\t      index = str.lastIndexOf(';', eqIdx - 1) + 1;\n\t      continue;\n\t    }\n\n\t    var keyStartIdx = startIndex(str, index, eqIdx);\n\t    var keyEndIdx = endIndex(str, eqIdx, keyStartIdx);\n\t    var key = str.slice(keyStartIdx, keyEndIdx);\n\n\t    // only assign once\n\t    if (!__hasOwnProperty.call(obj, key)) {\n\t      var valStartIdx = startIndex(str, eqIdx + 1, endIdx);\n\t      var valEndIdx = endIndex(str, endIdx, valStartIdx);\n\n\t      if (str.charCodeAt(valStartIdx) === 0x22 /* \" */ && str.charCodeAt(valEndIdx - 1) === 0x22 /* \" */) {\n\t        valStartIdx++;\n\t        valEndIdx--;\n\t      }\n\n\t      var val = str.slice(valStartIdx, valEndIdx);\n\t      obj[key] = tryDecode(val, dec);\n\t    }\n\n\t    index = endIdx + 1;\n\t  } while (index < len);\n\n\t  return obj;\n\t}\n\n\tfunction startIndex(str, index, max) {\n\t  do {\n\t    var code = str.charCodeAt(index);\n\t    if (code !== 0x20 /*   */ && code !== 0x09 /* \\t */) return index;\n\t  } while (++index < max);\n\t  return max;\n\t}\n\n\tfunction endIndex(str, index, min) {\n\t  while (index > min) {\n\t    var code = str.charCodeAt(--index);\n\t    if (code !== 0x20 /*   */ && code !== 0x09 /* \\t */) return index + 1;\n\t  }\n\t  return min;\n\t}\n\n\t/**\n\t * Serialize data into a cookie header.\n\t *\n\t * Serialize a name value pair into a cookie string suitable for\n\t * http headers. An optional options object specifies cookie parameters.\n\t *\n\t * serialize('foo', 'bar', { httpOnly: true })\n\t *   => \"foo=bar; httpOnly\"\n\t *\n\t * @param {string} name\n\t * @param {string} val\n\t * @param {object} [opt]\n\t * @return {string}\n\t * @public\n\t */\n\n\tfunction serialize(name, val, opt) {\n\t  var enc = (opt && opt.encode) || encodeURIComponent;\n\n\t  if (typeof enc !== 'function') {\n\t    throw new TypeError('option encode is invalid');\n\t  }\n\n\t  if (!cookieNameRegExp.test(name)) {\n\t    throw new TypeError('argument name is invalid');\n\t  }\n\n\t  var value = enc(val);\n\n\t  if (!cookieValueRegExp.test(value)) {\n\t    throw new TypeError('argument val is invalid');\n\t  }\n\n\t  var str = name + '=' + value;\n\t  if (!opt) return str;\n\n\t  if (null != opt.maxAge) {\n\t    var maxAge = Math.floor(opt.maxAge);\n\n\t    if (!isFinite(maxAge)) {\n\t      throw new TypeError('option maxAge is invalid')\n\t    }\n\n\t    str += '; Max-Age=' + maxAge;\n\t  }\n\n\t  if (opt.domain) {\n\t    if (!domainValueRegExp.test(opt.domain)) {\n\t      throw new TypeError('option domain is invalid');\n\t    }\n\n\t    str += '; Domain=' + opt.domain;\n\t  }\n\n\t  if (opt.path) {\n\t    if (!pathValueRegExp.test(opt.path)) {\n\t      throw new TypeError('option path is invalid');\n\t    }\n\n\t    str += '; Path=' + opt.path;\n\t  }\n\n\t  if (opt.expires) {\n\t    var expires = opt.expires;\n\n\t    if (!isDate(expires) || isNaN(expires.valueOf())) {\n\t      throw new TypeError('option expires is invalid');\n\t    }\n\n\t    str += '; Expires=' + expires.toUTCString();\n\t  }\n\n\t  if (opt.httpOnly) {\n\t    str += '; HttpOnly';\n\t  }\n\n\t  if (opt.secure) {\n\t    str += '; Secure';\n\t  }\n\n\t  if (opt.partitioned) {\n\t    str += '; Partitioned';\n\t  }\n\n\t  if (opt.priority) {\n\t    var priority = typeof opt.priority === 'string'\n\t      ? opt.priority.toLowerCase() : opt.priority;\n\n\t    switch (priority) {\n\t      case 'low':\n\t        str += '; Priority=Low';\n\t        break\n\t      case 'medium':\n\t        str += '; Priority=Medium';\n\t        break\n\t      case 'high':\n\t        str += '; Priority=High';\n\t        break\n\t      default:\n\t        throw new TypeError('option priority is invalid')\n\t    }\n\t  }\n\n\t  if (opt.sameSite) {\n\t    var sameSite = typeof opt.sameSite === 'string'\n\t      ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n\t    switch (sameSite) {\n\t      case true:\n\t        str += '; SameSite=Strict';\n\t        break;\n\t      case 'lax':\n\t        str += '; SameSite=Lax';\n\t        break;\n\t      case 'strict':\n\t        str += '; SameSite=Strict';\n\t        break;\n\t      case 'none':\n\t        str += '; SameSite=None';\n\t        break;\n\t      default:\n\t        throw new TypeError('option sameSite is invalid');\n\t    }\n\t  }\n\n\t  return str;\n\t}\n\n\t/**\n\t * URL-decode string value. Optimized to skip native call when no %.\n\t *\n\t * @param {string} str\n\t * @returns {string}\n\t */\n\n\tfunction decode (str) {\n\t  return str.indexOf('%') !== -1\n\t    ? decodeURIComponent(str)\n\t    : str\n\t}\n\n\t/**\n\t * Determine if value is a Date.\n\t *\n\t * @param {*} val\n\t * @private\n\t */\n\n\tfunction isDate (val) {\n\t  return __toString.call(val) === '[object Date]';\n\t}\n\n\t/**\n\t * Try decoding a string using a decoding function.\n\t *\n\t * @param {string} str\n\t * @param {function} decode\n\t * @private\n\t */\n\n\tfunction tryDecode(str, decode) {\n\t  try {\n\t    return decode(str);\n\t  } catch (e) {\n\t    return str;\n\t  }\n\t}\n\treturn cookie;\n}\n\nvar cookieExports = requireCookie();\n\nfunction hasDocumentCookie() {\n    const testingValue = typeof global === 'undefined'\n        ? undefined\n        : global.TEST_HAS_DOCUMENT_COOKIE;\n    if (typeof testingValue === 'boolean') {\n        return testingValue;\n    }\n    // Can we get/set cookies on document.cookie?\n    return typeof document === 'object' && typeof document.cookie === 'string';\n}\nfunction parseCookies(cookies) {\n    if (typeof cookies === 'string') {\n        return cookieExports.parse(cookies);\n    }\n    else if (typeof cookies === 'object' && cookies !== null) {\n        return cookies;\n    }\n    else {\n        return {};\n    }\n}\nfunction readCookie(value, options = {}) {\n    const cleanValue = cleanupCookieValue(value);\n    if (!options.doNotParse) {\n        try {\n            return JSON.parse(cleanValue);\n        }\n        catch (e) {\n            // At least we tried\n        }\n    }\n    // Ignore clean value if we failed the deserialization\n    // It is not relevant anymore to trim those values\n    return value;\n}\nfunction cleanupCookieValue(value) {\n    // express prepend j: before serializing a cookie\n    if (value && value[0] === 'j' && value[1] === ':') {\n        return value.substr(2);\n    }\n    return value;\n}\n\nclass Cookies {\n    constructor(cookies, defaultSetOptions = {}) {\n        this.changeListeners = [];\n        this.HAS_DOCUMENT_COOKIE = false;\n        this.update = () => {\n            if (!this.HAS_DOCUMENT_COOKIE) {\n                return;\n            }\n            const previousCookies = this.cookies;\n            this.cookies = cookieExports.parse(document.cookie);\n            this._checkChanges(previousCookies);\n        };\n        const domCookies = typeof document === 'undefined' ? '' : document.cookie;\n        this.cookies = parseCookies(cookies || domCookies);\n        this.defaultSetOptions = defaultSetOptions;\n        this.HAS_DOCUMENT_COOKIE = hasDocumentCookie();\n    }\n    _emitChange(params) {\n        for (let i = 0; i < this.changeListeners.length; ++i) {\n            this.changeListeners[i](params);\n        }\n    }\n    _checkChanges(previousCookies) {\n        const names = new Set(Object.keys(previousCookies).concat(Object.keys(this.cookies)));\n        names.forEach((name) => {\n            if (previousCookies[name] !== this.cookies[name]) {\n                this._emitChange({\n                    name,\n                    value: readCookie(this.cookies[name]),\n                });\n            }\n        });\n    }\n    _startPolling() {\n        this.pollingInterval = setInterval(this.update, 300);\n    }\n    _stopPolling() {\n        if (this.pollingInterval) {\n            clearInterval(this.pollingInterval);\n        }\n    }\n    get(name, options = {}) {\n        if (!options.doNotUpdate) {\n            this.update();\n        }\n        return readCookie(this.cookies[name], options);\n    }\n    getAll(options = {}) {\n        if (!options.doNotUpdate) {\n            this.update();\n        }\n        const result = {};\n        for (let name in this.cookies) {\n            result[name] = readCookie(this.cookies[name], options);\n        }\n        return result;\n    }\n    set(name, value, options) {\n        if (options) {\n            options = Object.assign(Object.assign({}, this.defaultSetOptions), options);\n        }\n        else {\n            options = this.defaultSetOptions;\n        }\n        const stringValue = typeof value === 'string' ? value : JSON.stringify(value);\n        this.cookies = Object.assign(Object.assign({}, this.cookies), { [name]: stringValue });\n        if (this.HAS_DOCUMENT_COOKIE) {\n            document.cookie = cookieExports.serialize(name, stringValue, options);\n        }\n        this._emitChange({ name, value, options });\n    }\n    remove(name, options) {\n        const finalOptions = (options = Object.assign(Object.assign(Object.assign({}, this.defaultSetOptions), options), { expires: new Date(1970, 1, 1, 0, 0, 1), maxAge: 0 }));\n        this.cookies = Object.assign({}, this.cookies);\n        delete this.cookies[name];\n        if (this.HAS_DOCUMENT_COOKIE) {\n            document.cookie = cookieExports.serialize(name, '', finalOptions);\n        }\n        this._emitChange({ name, value: undefined, options });\n    }\n    addChangeListener(callback) {\n        this.changeListeners.push(callback);\n        if (this.HAS_DOCUMENT_COOKIE && this.changeListeners.length === 1) {\n            if (typeof window === 'object' && 'cookieStore' in window) {\n                window.cookieStore.addEventListener('change', this.update);\n            }\n            else {\n                this._startPolling();\n            }\n        }\n    }\n    removeChangeListener(callback) {\n        const idx = this.changeListeners.indexOf(callback);\n        if (idx >= 0) {\n            this.changeListeners.splice(idx, 1);\n        }\n        if (this.HAS_DOCUMENT_COOKIE && this.changeListeners.length === 0) {\n            if (typeof window === 'object' && 'cookieStore' in window) {\n                window.cookieStore.removeEventListener('change', this.update);\n            }\n            else {\n                this._stopPolling();\n            }\n        }\n    }\n}\n\nexport { Cookies as default };\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport Cookies from 'universal-cookie';\nimport { browserOrNode } from '../JS';\nvar isBrowser = browserOrNode().isBrowser;\nvar ONE_YEAR_IN_MS = 365 * 24 * 60 * 60 * 1000;\nvar UniversalStorage = /** @class */ (function () {\n    function UniversalStorage(context) {\n        if (context === void 0) { context = {}; }\n        this.cookies = new Cookies();\n        this.store = isBrowser ? window.localStorage : Object.create(null);\n        this.cookies = context.req\n            ? new Cookies(decodeURIComponent(context.req.headers.cookie))\n            : new Cookies();\n        Object.assign(this.store, this.cookies.getAll());\n    }\n    Object.defineProperty(UniversalStorage.prototype, \"length\", {\n        get: function () {\n            return Object.entries(this.store).length;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    UniversalStorage.prototype.clear = function () {\n        var _this = this;\n        Array.from(new Array(this.length))\n            .map(function (_, i) { return _this.key(i); })\n            .forEach(function (key) { return _this.removeItem(key); });\n    };\n    UniversalStorage.prototype.getItem = function (key) {\n        return this.getLocalItem(key);\n    };\n    UniversalStorage.prototype.getLocalItem = function (key) {\n        return Object.prototype.hasOwnProperty.call(this.store, key)\n            ? this.store[key]\n            : null;\n    };\n    UniversalStorage.prototype.getUniversalItem = function (key) {\n        return this.cookies.get(key);\n    };\n    UniversalStorage.prototype.key = function (index) {\n        return Object.keys(this.store)[index];\n    };\n    UniversalStorage.prototype.removeItem = function (key) {\n        this.removeLocalItem(key);\n        this.removeUniversalItem(key);\n    };\n    UniversalStorage.prototype.removeLocalItem = function (key) {\n        delete this.store[key];\n    };\n    UniversalStorage.prototype.removeUniversalItem = function (key) {\n        this.cookies.remove(key, {\n            path: '/',\n        });\n    };\n    UniversalStorage.prototype.setItem = function (key, value) {\n        this.setLocalItem(key, value);\n        // keys take the shape:\n        //  1. `${ProviderPrefix}.${userPoolClientId}.${username}.${tokenType}\n        //  2. `${ProviderPrefix}.${userPoolClientId}.LastAuthUser\n        var tokenType = key.split('.').pop();\n        var sessionTokenTypes = [\n            'LastAuthUser',\n            'accessToken',\n            // refreshToken originates on the client, but SSR pages won't fail when this expires\n            // Note: the new `accessToken` will also be refreshed on the client (since Amplify doesn't set server-side cookies)\n            'refreshToken',\n            // Required for CognitoUserSession\n            'idToken',\n            // userData is used when `Auth.currentAuthenticatedUser({ bypassCache: false })`.\n            // Can be persisted to speed up calls to `Auth.currentAuthenticatedUser()`\n            // 'userData',\n            // Ignoring clockDrift on the server for now, but needs testing\n            // 'clockDrift',\n        ];\n        if (sessionTokenTypes.includes(tokenType !== null && tokenType !== void 0 ? tokenType : '')) {\n            this.setUniversalItem(key, value, {\n                expires: new Date(Date.now() + ONE_YEAR_IN_MS),\n            });\n        }\n    };\n    UniversalStorage.prototype.setLocalItem = function (key, value) {\n        this.store[key] = value;\n    };\n    UniversalStorage.prototype.setUniversalItem = function (key, value, options) {\n        if (options === void 0) { options = {}; }\n        this.cookies.set(key, value, __assign(__assign({}, options), { path: '/', \n            // `httpOnly` cannot be set via JavaScript: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#JavaScript_access_using_Document.cookie\n            sameSite: true, \n            // Allow unsecure requests to http://localhost:3000/ when in development.\n            secure: isBrowser && window.location.hostname === 'localhost' ? false : true }));\n    };\n    return UniversalStorage;\n}());\nexport { UniversalStorage };\n","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/** @class */\nvar AuthenticationDetails = /*#__PURE__*/function () {\n  /**\n   * Constructs a new AuthenticationDetails object\n   * @param {object=} data Creation options.\n   * @param {string} data.Username User being authenticated.\n   * @param {string} data.Password Plain-text password to authenticate with.\n   * @param {(AttributeArg[])?} data.ValidationData Application extra metadata.\n   * @param {(AttributeArg[])?} data.AuthParamaters Authentication paramaters for custom auth.\n   */\n  function AuthenticationDetails(data) {\n    var _ref = data || {},\n      ValidationData = _ref.ValidationData,\n      Username = _ref.Username,\n      Password = _ref.Password,\n      AuthParameters = _ref.AuthParameters,\n      ClientMetadata = _ref.ClientMetadata;\n    this.validationData = ValidationData || {};\n    this.authParameters = AuthParameters || {};\n    this.clientMetadata = ClientMetadata || {};\n    this.username = Username;\n    this.password = Password;\n  }\n\n  /**\n   * @returns {string} the record's username\n   */\n  var _proto = AuthenticationDetails.prototype;\n  _proto.getUsername = function getUsername() {\n    return this.username;\n  }\n\n  /**\n   * @returns {string} the record's password\n   */;\n  _proto.getPassword = function getPassword() {\n    return this.password;\n  }\n\n  /**\n   * @returns {Array} the record's validationData\n   */;\n  _proto.getValidationData = function getValidationData() {\n    return this.validationData;\n  }\n\n  /**\n   * @returns {Array} the record's authParameters\n   */;\n  _proto.getAuthParameters = function getAuthParameters() {\n    return this.authParameters;\n  }\n\n  /**\n   * @returns {ClientMetadata} the clientMetadata for a Lambda trigger\n   */;\n  _proto.getClientMetadata = function getClientMetadata() {\n    return this.clientMetadata;\n  };\n  return AuthenticationDetails;\n}();\nexport { AuthenticationDetails as default };","var crypto;\n\n// Native crypto from window (Browser)\nif (typeof window !== 'undefined' && window.crypto) {\n  crypto = window.crypto;\n}\n\n// Native (experimental IE 11) crypto from window (Browser)\nif (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n  crypto = window.msCrypto;\n}\n\n/*\n * Cryptographically secure pseudorandom number generator\n * As Math.random() is cryptographically not safe to use\n */\nexport default function cryptoSecureRandomInt() {\n  if (crypto) {\n    // Use getRandomValues method (Browser)\n    if (typeof crypto.getRandomValues === 'function') {\n      try {\n        return crypto.getRandomValues(new Uint32Array(1))[0];\n      } catch (err) {}\n    }\n\n    // Use randomBytes method (NodeJS)\n    if (typeof crypto.randomBytes === 'function') {\n      try {\n        return crypto.randomBytes(4).readInt32LE();\n      } catch (err) {}\n    }\n  }\n  throw new Error('Native crypto module could not be used to get secure random number.');\n}","import cryptoSecureRandomInt from './cryptoSecureRandomInt';\n\n/**\n * Hex encoding strategy.\n * Converts a word array to a hex string.\n * @param {WordArray} wordArray The word array.\n * @return {string} The hex string.\n * @static\n */\nfunction hexStringify(wordArray) {\n  // Shortcuts\n  var words = wordArray.words;\n  var sigBytes = wordArray.sigBytes;\n\n  // Convert\n  var hexChars = [];\n  for (var i = 0; i < sigBytes; i++) {\n    var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n    hexChars.push((bite >>> 4).toString(16));\n    hexChars.push((bite & 0x0f).toString(16));\n  }\n  return hexChars.join('');\n}\nvar WordArray = /*#__PURE__*/function () {\n  function WordArray(words, sigBytes) {\n    words = this.words = words || [];\n    if (sigBytes != undefined) {\n      this.sigBytes = sigBytes;\n    } else {\n      this.sigBytes = words.length * 4;\n    }\n  }\n  var _proto = WordArray.prototype;\n  _proto.random = function random(nBytes) {\n    var words = [];\n    for (var i = 0; i < nBytes; i += 4) {\n      words.push(cryptoSecureRandomInt());\n    }\n    return new WordArray(words, nBytes);\n  };\n  _proto.toString = function toString() {\n    return hexStringify(this);\n  };\n  return WordArray;\n}();\nexport { WordArray as default };","// A small implementation of BigInteger based on http://www-cs-students.stanford.edu/~tjw/jsbn/\n//\n// All public methods have been removed except the following:\n//   new BigInteger(a, b) (only radix 2, 4, 8, 16 and 32 supported)\n//   toString (only radix 2, 4, 8, 16 and 32 supported)\n//   negate\n//   abs\n//   compareTo\n//   bitLength\n//   mod\n//   equals\n//   add\n//   subtract\n//   multiply\n//   divide\n//   modPow\n\nexport default BigInteger;\n\n/*\n * Copyright (c) 2003-2005  Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a 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\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n\n// (public) Constructor\nfunction BigInteger(a, b) {\n  if (a != null) this.fromString(a, b);\n}\n\n// return new, unset BigInteger\nfunction nbi() {\n  return new BigInteger(null);\n}\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = (canary & 0xffffff) == 0xefcafe;\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i, x, w, j, c, n) {\n  while (--n >= 0) {\n    var v = x * this[i++] + w[j] + c;\n    c = Math.floor(v / 0x4000000);\n    w[j++] = v & 0x3ffffff;\n  }\n  return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i, x, w, j, c, n) {\n  var xl = x & 0x7fff,\n    xh = x >> 15;\n  while (--n >= 0) {\n    var l = this[i] & 0x7fff;\n    var h = this[i++] >> 15;\n    var m = xh * l + h * xl;\n    l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n    c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n    w[j++] = l & 0x3fffffff;\n  }\n  return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i, x, w, j, c, n) {\n  var xl = x & 0x3fff,\n    xh = x >> 14;\n  while (--n >= 0) {\n    var l = this[i] & 0x3fff;\n    var h = this[i++] >> 14;\n    var m = xh * l + h * xl;\n    l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n    c = (l >> 28) + (m >> 14) + xh * h;\n    w[j++] = l & 0xfffffff;\n  }\n  return c;\n}\nvar inBrowser = typeof navigator !== 'undefined';\nif (inBrowser && j_lm && navigator.appName == 'Microsoft Internet Explorer') {\n  BigInteger.prototype.am = am2;\n  dbits = 30;\n} else if (inBrowser && j_lm && navigator.appName != 'Netscape') {\n  BigInteger.prototype.am = am1;\n  dbits = 26;\n} else {\n  // Mozilla/Netscape seems to prefer am3\n  BigInteger.prototype.am = am3;\n  dbits = 28;\n}\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = (1 << dbits) - 1;\nBigInteger.prototype.DV = 1 << dbits;\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\n\n// Digit conversions\nvar BI_RM = '0123456789abcdefghijklmnopqrstuvwxyz';\nvar BI_RC = new Array();\nvar rr, vv;\nrr = '0'.charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;\nrr = 'a'.charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\nrr = 'A'.charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;\nfunction int2char(n) {\n  return BI_RM.charAt(n);\n}\nfunction intAt(s, i) {\n  var c = BI_RC[s.charCodeAt(i)];\n  return c == null ? -1 : c;\n}\n\n// (protected) copy this to r\nfunction bnpCopyTo(r) {\n  for (var i = this.t - 1; i >= 0; --i) r[i] = this[i];\n  r.t = this.t;\n  r.s = this.s;\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n  this.t = 1;\n  this.s = x < 0 ? -1 : 0;\n  if (x > 0) this[0] = x;else if (x < -1) this[0] = x + this.DV;else this.t = 0;\n}\n\n// return bigint initialized to value\nfunction nbv(i) {\n  var r = nbi();\n  r.fromInt(i);\n  return r;\n}\n\n// (protected) set from string and radix\nfunction bnpFromString(s, b) {\n  var k;\n  if (b == 16) k = 4;else if (b == 8) k = 3;else if (b == 2) k = 1;else if (b == 32) k = 5;else if (b == 4) k = 2;else throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n  this.t = 0;\n  this.s = 0;\n  var i = s.length,\n    mi = false,\n    sh = 0;\n  while (--i >= 0) {\n    var x = intAt(s, i);\n    if (x < 0) {\n      if (s.charAt(i) == '-') mi = true;\n      continue;\n    }\n    mi = false;\n    if (sh == 0) this[this.t++] = x;else if (sh + k > this.DB) {\n      this[this.t - 1] |= (x & (1 << this.DB - sh) - 1) << sh;\n      this[this.t++] = x >> this.DB - sh;\n    } else this[this.t - 1] |= x << sh;\n    sh += k;\n    if (sh >= this.DB) sh -= this.DB;\n  }\n  this.clamp();\n  if (mi) BigInteger.ZERO.subTo(this, this);\n}\n\n// (protected) clamp off excess high words\nfunction bnpClamp() {\n  var c = this.s & this.DM;\n  while (this.t > 0 && this[this.t - 1] == c) --this.t;\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n  if (this.s < 0) return '-' + this.negate().toString(b);\n  var k;\n  if (b == 16) k = 4;else if (b == 8) k = 3;else if (b == 2) k = 1;else if (b == 32) k = 5;else if (b == 4) k = 2;else throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n  var km = (1 << k) - 1,\n    d,\n    m = false,\n    r = '',\n    i = this.t;\n  var p = this.DB - i * this.DB % k;\n  if (i-- > 0) {\n    if (p < this.DB && (d = this[i] >> p) > 0) {\n      m = true;\n      r = int2char(d);\n    }\n    while (i >= 0) {\n      if (p < k) {\n        d = (this[i] & (1 << p) - 1) << k - p;\n        d |= this[--i] >> (p += this.DB - k);\n      } else {\n        d = this[i] >> (p -= k) & km;\n        if (p <= 0) {\n          p += this.DB;\n          --i;\n        }\n      }\n      if (d > 0) m = true;\n      if (m) r += int2char(d);\n    }\n  }\n  return m ? r : '0';\n}\n\n// (public) -this\nfunction bnNegate() {\n  var r = nbi();\n  BigInteger.ZERO.subTo(this, r);\n  return r;\n}\n\n// (public) |this|\nfunction bnAbs() {\n  return this.s < 0 ? this.negate() : this;\n}\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n  var r = this.s - a.s;\n  if (r != 0) return r;\n  var i = this.t;\n  r = i - a.t;\n  if (r != 0) return this.s < 0 ? -r : r;\n  while (--i >= 0) if ((r = this[i] - a[i]) != 0) return r;\n  return 0;\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n  var r = 1,\n    t;\n  if ((t = x >>> 16) != 0) {\n    x = t;\n    r += 16;\n  }\n  if ((t = x >> 8) != 0) {\n    x = t;\n    r += 8;\n  }\n  if ((t = x >> 4) != 0) {\n    x = t;\n    r += 4;\n  }\n  if ((t = x >> 2) != 0) {\n    x = t;\n    r += 2;\n  }\n  if ((t = x >> 1) != 0) {\n    x = t;\n    r += 1;\n  }\n  return r;\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n  if (this.t <= 0) return 0;\n  return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ this.s & this.DM);\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n, r) {\n  var i;\n  for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i];\n  for (i = n - 1; i >= 0; --i) r[i] = 0;\n  r.t = this.t + n;\n  r.s = this.s;\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n, r) {\n  for (var i = n; i < this.t; ++i) r[i - n] = this[i];\n  r.t = Math.max(this.t - n, 0);\n  r.s = this.s;\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n, r) {\n  var bs = n % this.DB;\n  var cbs = this.DB - bs;\n  var bm = (1 << cbs) - 1;\n  var ds = Math.floor(n / this.DB),\n    c = this.s << bs & this.DM,\n    i;\n  for (i = this.t - 1; i >= 0; --i) {\n    r[i + ds + 1] = this[i] >> cbs | c;\n    c = (this[i] & bm) << bs;\n  }\n  for (i = ds - 1; i >= 0; --i) r[i] = 0;\n  r[ds] = c;\n  r.t = this.t + ds + 1;\n  r.s = this.s;\n  r.clamp();\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n, r) {\n  r.s = this.s;\n  var ds = Math.floor(n / this.DB);\n  if (ds >= this.t) {\n    r.t = 0;\n    return;\n  }\n  var bs = n % this.DB;\n  var cbs = this.DB - bs;\n  var bm = (1 << bs) - 1;\n  r[0] = this[ds] >> bs;\n  for (var i = ds + 1; i < this.t; ++i) {\n    r[i - ds - 1] |= (this[i] & bm) << cbs;\n    r[i - ds] = this[i] >> bs;\n  }\n  if (bs > 0) r[this.t - ds - 1] |= (this.s & bm) << cbs;\n  r.t = this.t - ds;\n  r.clamp();\n}\n\n// (protected) r = this - a\nfunction bnpSubTo(a, r) {\n  var i = 0,\n    c = 0,\n    m = Math.min(a.t, this.t);\n  while (i < m) {\n    c += this[i] - a[i];\n    r[i++] = c & this.DM;\n    c >>= this.DB;\n  }\n  if (a.t < this.t) {\n    c -= a.s;\n    while (i < this.t) {\n      c += this[i];\n      r[i++] = c & this.DM;\n      c >>= this.DB;\n    }\n    c += this.s;\n  } else {\n    c += this.s;\n    while (i < a.t) {\n      c -= a[i];\n      r[i++] = c & this.DM;\n      c >>= this.DB;\n    }\n    c -= a.s;\n  }\n  r.s = c < 0 ? -1 : 0;\n  if (c < -1) r[i++] = this.DV + c;else if (c > 0) r[i++] = c;\n  r.t = i;\n  r.clamp();\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a, r) {\n  var x = this.abs(),\n    y = a.abs();\n  var i = x.t;\n  r.t = i + y.t;\n  while (--i >= 0) r[i] = 0;\n  for (i = 0; i < y.t; ++i) r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n  r.s = 0;\n  r.clamp();\n  if (this.s != a.s) BigInteger.ZERO.subTo(r, r);\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n  var x = this.abs();\n  var i = r.t = 2 * x.t;\n  while (--i >= 0) r[i] = 0;\n  for (i = 0; i < x.t - 1; ++i) {\n    var c = x.am(i, x[i], r, 2 * i, 0, 1);\n    if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n      r[i + x.t] -= x.DV;\n      r[i + x.t + 1] = 1;\n    }\n  }\n  if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n  r.s = 0;\n  r.clamp();\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m.  q or r may be null.\nfunction bnpDivRemTo(m, q, r) {\n  var pm = m.abs();\n  if (pm.t <= 0) return;\n  var pt = this.abs();\n  if (pt.t < pm.t) {\n    if (q != null) q.fromInt(0);\n    if (r != null) this.copyTo(r);\n    return;\n  }\n  if (r == null) r = nbi();\n  var y = nbi(),\n    ts = this.s,\n    ms = m.s;\n  var nsh = this.DB - nbits(pm[pm.t - 1]);\n  // normalize modulus\n  if (nsh > 0) {\n    pm.lShiftTo(nsh, y);\n    pt.lShiftTo(nsh, r);\n  } else {\n    pm.copyTo(y);\n    pt.copyTo(r);\n  }\n  var ys = y.t;\n  var y0 = y[ys - 1];\n  if (y0 == 0) return;\n  var yt = y0 * (1 << this.F1) + (ys > 1 ? y[ys - 2] >> this.F2 : 0);\n  var d1 = this.FV / yt,\n    d2 = (1 << this.F1) / yt,\n    e = 1 << this.F2;\n  var i = r.t,\n    j = i - ys,\n    t = q == null ? nbi() : q;\n  y.dlShiftTo(j, t);\n  if (r.compareTo(t) >= 0) {\n    r[r.t++] = 1;\n    r.subTo(t, r);\n  }\n  BigInteger.ONE.dlShiftTo(ys, t);\n  t.subTo(y, y);\n  // \"negative\" y so we can replace sub with am later\n  while (y.t < ys) y[y.t++] = 0;\n  while (--j >= 0) {\n    // Estimate quotient digit\n    var qd = r[--i] == y0 ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n    if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) {\n      // Try it out\n      y.dlShiftTo(j, t);\n      r.subTo(t, r);\n      while (r[i] < --qd) r.subTo(t, r);\n    }\n  }\n  if (q != null) {\n    r.drShiftTo(ys, q);\n    if (ts != ms) BigInteger.ZERO.subTo(q, q);\n  }\n  r.t = ys;\n  r.clamp();\n  if (nsh > 0) r.rShiftTo(nsh, r);\n  // Denormalize remainder\n  if (ts < 0) BigInteger.ZERO.subTo(r, r);\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n  var r = nbi();\n  this.abs().divRemTo(a, null, r);\n  if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r);\n  return r;\n}\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n//         xy == 1 (mod m)\n//         xy =  1+km\n//   xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n  if (this.t < 1) return 0;\n  var x = this[0];\n  if ((x & 1) == 0) return 0;\n  var y = x & 3;\n  // y == 1/x mod 2^2\n  y = y * (2 - (x & 0xf) * y) & 0xf;\n  // y == 1/x mod 2^4\n  y = y * (2 - (x & 0xff) * y) & 0xff;\n  // y == 1/x mod 2^8\n  y = y * (2 - ((x & 0xffff) * y & 0xffff)) & 0xffff;\n  // y == 1/x mod 2^16\n  // last step - calculate inverse mod DV directly;\n  // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n  y = y * (2 - x * y % this.DV) % this.DV;\n  // y == 1/x mod 2^dbits\n  // we really want the negative inverse, and -DV < y < DV\n  return y > 0 ? this.DV - y : -y;\n}\nfunction bnEquals(a) {\n  return this.compareTo(a) == 0;\n}\n\n// (protected) r = this + a\nfunction bnpAddTo(a, r) {\n  var i = 0,\n    c = 0,\n    m = Math.min(a.t, this.t);\n  while (i < m) {\n    c += this[i] + a[i];\n    r[i++] = c & this.DM;\n    c >>= this.DB;\n  }\n  if (a.t < this.t) {\n    c += a.s;\n    while (i < this.t) {\n      c += this[i];\n      r[i++] = c & this.DM;\n      c >>= this.DB;\n    }\n    c += this.s;\n  } else {\n    c += this.s;\n    while (i < a.t) {\n      c += a[i];\n      r[i++] = c & this.DM;\n      c >>= this.DB;\n    }\n    c += a.s;\n  }\n  r.s = c < 0 ? -1 : 0;\n  if (c > 0) r[i++] = c;else if (c < -1) r[i++] = this.DV + c;\n  r.t = i;\n  r.clamp();\n}\n\n// (public) this + a\nfunction bnAdd(a) {\n  var r = nbi();\n  this.addTo(a, r);\n  return r;\n}\n\n// (public) this - a\nfunction bnSubtract(a) {\n  var r = nbi();\n  this.subTo(a, r);\n  return r;\n}\n\n// (public) this * a\nfunction bnMultiply(a) {\n  var r = nbi();\n  this.multiplyTo(a, r);\n  return r;\n}\n\n// (public) this / a\nfunction bnDivide(a) {\n  var r = nbi();\n  this.divRemTo(a, r, null);\n  return r;\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n  this.m = m;\n  this.mp = m.invDigit();\n  this.mpl = this.mp & 0x7fff;\n  this.mph = this.mp >> 15;\n  this.um = (1 << m.DB - 15) - 1;\n  this.mt2 = 2 * m.t;\n}\n\n// xR mod m\nfunction montConvert(x) {\n  var r = nbi();\n  x.abs().dlShiftTo(this.m.t, r);\n  r.divRemTo(this.m, null, r);\n  if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r);\n  return r;\n}\n\n// x/R mod m\nfunction montRevert(x) {\n  var r = nbi();\n  x.copyTo(r);\n  this.reduce(r);\n  return r;\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n  while (x.t <= this.mt2)\n  // pad x so am has enough room later\n  x[x.t++] = 0;\n  for (var i = 0; i < this.m.t; ++i) {\n    // faster way of calculating u0 = x[i]*mp mod DV\n    var j = x[i] & 0x7fff;\n    var u0 = j * this.mpl + ((j * this.mph + (x[i] >> 15) * this.mpl & this.um) << 15) & x.DM;\n    // use am to combine the multiply-shift-add into one call\n    j = i + this.m.t;\n    x[j] += this.m.am(0, u0, x, i, 0, this.m.t);\n    // propagate carry\n    while (x[j] >= x.DV) {\n      x[j] -= x.DV;\n      x[++j]++;\n    }\n  }\n  x.clamp();\n  x.drShiftTo(this.m.t, x);\n  if (x.compareTo(this.m) >= 0) x.subTo(this.m, x);\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x, r) {\n  x.squareTo(r);\n  this.reduce(r);\n}\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x, y, r) {\n  x.multiplyTo(y, r);\n  this.reduce(r);\n}\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n\n// (public) this^e % m (HAC 14.85)\nfunction bnModPow(e, m, callback) {\n  var i = e.bitLength(),\n    k,\n    r = nbv(1),\n    z = new Montgomery(m);\n  if (i <= 0) return r;else if (i < 18) k = 1;else if (i < 48) k = 3;else if (i < 144) k = 4;else if (i < 768) k = 5;else k = 6;\n\n  // precomputation\n  var g = new Array(),\n    n = 3,\n    k1 = k - 1,\n    km = (1 << k) - 1;\n  g[1] = z.convert(this);\n  if (k > 1) {\n    var g2 = nbi();\n    z.sqrTo(g[1], g2);\n    while (n <= km) {\n      g[n] = nbi();\n      z.mulTo(g2, g[n - 2], g[n]);\n      n += 2;\n    }\n  }\n  var j = e.t - 1,\n    w,\n    is1 = true,\n    r2 = nbi(),\n    t;\n  i = nbits(e[j]) - 1;\n  while (j >= 0) {\n    if (i >= k1) w = e[j] >> i - k1 & km;else {\n      w = (e[j] & (1 << i + 1) - 1) << k1 - i;\n      if (j > 0) w |= e[j - 1] >> this.DB + i - k1;\n    }\n    n = k;\n    while ((w & 1) == 0) {\n      w >>= 1;\n      --n;\n    }\n    if ((i -= n) < 0) {\n      i += this.DB;\n      --j;\n    }\n    if (is1) {\n      // ret == 1, don't bother squaring or multiplying it\n      g[w].copyTo(r);\n      is1 = false;\n    } else {\n      while (n > 1) {\n        z.sqrTo(r, r2);\n        z.sqrTo(r2, r);\n        n -= 2;\n      }\n      if (n > 0) z.sqrTo(r, r2);else {\n        t = r;\n        r = r2;\n        r2 = t;\n      }\n      z.mulTo(r2, g[w], r);\n    }\n    while (j >= 0 && (e[j] & 1 << i) == 0) {\n      z.sqrTo(r, r2);\n      t = r;\n      r = r2;\n      r2 = t;\n      if (--i < 0) {\n        i = this.DB - 1;\n        --j;\n      }\n    }\n  }\n  var result = z.revert(r);\n  callback(null, result);\n  return result;\n}\n\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.addTo = bnpAddTo;\n\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.modPow = bnModPow;\n\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Buffer } from 'buffer';\nimport WordArray from './utils/WordArray';\nimport { Sha256 } from '@aws-crypto/sha256-js';\n\n/**\n * Returns a Buffer with a sequence of random nBytes\n *\n * @param {number} nBytes\n * @returns {Buffer} fixed-length sequence of random bytes\n */\n\nfunction randomBytes(nBytes) {\n  return Buffer.from(new WordArray().random(nBytes).toString(), 'hex');\n}\nimport BigInteger from './BigInteger';\n\n/**\n * Tests if a hex string has it most significant bit set (case-insensitive regex)\n */\nvar HEX_MSB_REGEX = /^[89a-f]/i;\nvar initN = 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1' + '29024E088A67CC74020BBEA63B139B22514A08798E3404DD' + 'EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245' + 'E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' + 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D' + 'C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F' + '83655D23DCA3AD961C62F356208552BB9ED529077096966D' + '670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B' + 'E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9' + 'DE2BCBF6955817183995497CEA956AE515D2261898FA0510' + '15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64' + 'ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7' + 'ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B' + 'F12FFA06D98A0864D87602733EC86A64521F2B18177B200C' + 'BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31' + '43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF';\nvar newPasswordRequiredChallengeUserAttributePrefix = 'userAttributes.';\n\n/** @class */\nvar AuthenticationHelper = /*#__PURE__*/function () {\n  /**\n   * Constructs a new AuthenticationHelper object\n   * @param {string} PoolName Cognito user pool name.\n   */\n  function AuthenticationHelper(PoolName) {\n    this.N = new BigInteger(initN, 16);\n    this.g = new BigInteger('2', 16);\n    this.k = new BigInteger(this.hexHash(\"\" + this.padHex(this.N) + this.padHex(this.g)), 16);\n    this.smallAValue = this.generateRandomSmallA();\n    this.getLargeAValue(function () {});\n    this.infoBits = Buffer.from('Caldera Derived Key', 'utf8');\n    this.poolName = PoolName;\n  }\n\n  /**\n   * @returns {BigInteger} small A, a random number\n   */\n  var _proto = AuthenticationHelper.prototype;\n  _proto.getSmallAValue = function getSmallAValue() {\n    return this.smallAValue;\n  }\n\n  /**\n   * @param {nodeCallback<BigInteger>} callback Called with (err, largeAValue)\n   * @returns {void}\n   */;\n  _proto.getLargeAValue = function getLargeAValue(callback) {\n    var _this = this;\n    if (this.largeAValue) {\n      callback(null, this.largeAValue);\n    } else {\n      this.calculateA(this.smallAValue, function (err, largeAValue) {\n        if (err) {\n          callback(err, null);\n        }\n        _this.largeAValue = largeAValue;\n        callback(null, _this.largeAValue);\n      });\n    }\n  }\n\n  /**\n   * helper function to generate a random big integer\n   * @returns {BigInteger} a random value.\n   * @private\n   */;\n  _proto.generateRandomSmallA = function generateRandomSmallA() {\n    // This will be interpreted as a postive 128-bit integer\n    var hexRandom = randomBytes(128).toString('hex');\n    var randomBigInt = new BigInteger(hexRandom, 16);\n\n    // There is no need to do randomBigInt.mod(this.N - 1) as N (3072-bit) is > 128 bytes (1024-bit)\n\n    return randomBigInt;\n  }\n\n  /**\n   * helper function to generate a random string\n   * @returns {string} a random value.\n   * @private\n   */;\n  _proto.generateRandomString = function generateRandomString() {\n    return randomBytes(40).toString('base64');\n  }\n\n  /**\n   * @returns {string} Generated random value included in password hash.\n   */;\n  _proto.getRandomPassword = function getRandomPassword() {\n    return this.randomPassword;\n  }\n\n  /**\n   * @returns {string} Generated random value included in devices hash.\n   */;\n  _proto.getSaltDevices = function getSaltDevices() {\n    return this.SaltToHashDevices;\n  }\n\n  /**\n   * @returns {string} Value used to verify devices.\n   */;\n  _proto.getVerifierDevices = function getVerifierDevices() {\n    return this.verifierDevices;\n  }\n\n  /**\n   * Generate salts and compute verifier.\n   * @param {string} deviceGroupKey Devices to generate verifier for.\n   * @param {string} username User to generate verifier for.\n   * @param {nodeCallback<null>} callback Called with (err, null)\n   * @returns {void}\n   */;\n  _proto.generateHashDevice = function generateHashDevice(deviceGroupKey, username, callback) {\n    var _this2 = this;\n    this.randomPassword = this.generateRandomString();\n    var combinedString = \"\" + deviceGroupKey + username + \":\" + this.randomPassword;\n    var hashedString = this.hash(combinedString);\n    var hexRandom = randomBytes(16).toString('hex');\n\n    // The random hex will be unambiguously represented as a postive integer\n    this.SaltToHashDevices = this.padHex(new BigInteger(hexRandom, 16));\n    this.g.modPow(new BigInteger(this.hexHash(this.SaltToHashDevices + hashedString), 16), this.N, function (err, verifierDevicesNotPadded) {\n      if (err) {\n        callback(err, null);\n      }\n      _this2.verifierDevices = _this2.padHex(verifierDevicesNotPadded);\n      callback(null, null);\n    });\n  }\n\n  /**\n   * Calculate the client's public value A = g^a%N\n   * with the generated random number a\n   * @param {BigInteger} a Randomly generated small A.\n   * @param {nodeCallback<BigInteger>} callback Called with (err, largeAValue)\n   * @returns {void}\n   * @private\n   */;\n  _proto.calculateA = function calculateA(a, callback) {\n    var _this3 = this;\n    this.g.modPow(a, this.N, function (err, A) {\n      if (err) {\n        callback(err, null);\n      }\n      if (A.mod(_this3.N).equals(BigInteger.ZERO)) {\n        callback(new Error('Illegal paramater. A mod N cannot be 0.'), null);\n      }\n      callback(null, A);\n    });\n  }\n\n  /**\n   * Calculate the client's value U which is the hash of A and B\n   * @param {BigInteger} A Large A value.\n   * @param {BigInteger} B Server B value.\n   * @returns {BigInteger} Computed U value.\n   * @private\n   */;\n  _proto.calculateU = function calculateU(A, B) {\n    this.UHexHash = this.hexHash(this.padHex(A) + this.padHex(B));\n    var finalU = new BigInteger(this.UHexHash, 16);\n    return finalU;\n  }\n\n  /**\n   * Calculate a hash from a bitArray\n   * @param {Buffer} buf Value to hash.\n   * @returns {String} Hex-encoded hash.\n   * @private\n   */;\n  _proto.hash = function hash(buf) {\n    var awsCryptoHash = new Sha256();\n    awsCryptoHash.update(buf);\n    var resultFromAWSCrypto = awsCryptoHash.digestSync();\n    var hashHex = Buffer.from(resultFromAWSCrypto).toString('hex');\n    return new Array(64 - hashHex.length).join('0') + hashHex;\n  }\n\n  /**\n   * Calculate a hash from a hex string\n   * @param {String} hexStr Value to hash.\n   * @returns {String} Hex-encoded hash.\n   * @private\n   */;\n  _proto.hexHash = function hexHash(hexStr) {\n    return this.hash(Buffer.from(hexStr, 'hex'));\n  }\n\n  /**\n   * Standard hkdf algorithm\n   * @param {Buffer} ikm Input key material.\n   * @param {Buffer} salt Salt value.\n   * @returns {Buffer} Strong key material.\n   * @private\n   */;\n  _proto.computehkdf = function computehkdf(ikm, salt) {\n    var infoBitsBuffer = Buffer.concat([this.infoBits, Buffer.from(String.fromCharCode(1), 'utf8')]);\n    var awsCryptoHash = new Sha256(salt);\n    awsCryptoHash.update(ikm);\n    var resultFromAWSCryptoPrk = awsCryptoHash.digestSync();\n    var awsCryptoHashHmac = new Sha256(resultFromAWSCryptoPrk);\n    awsCryptoHashHmac.update(infoBitsBuffer);\n    var resultFromAWSCryptoHmac = awsCryptoHashHmac.digestSync();\n    var hashHexFromAWSCrypto = resultFromAWSCryptoHmac;\n    var currentHex = hashHexFromAWSCrypto.slice(0, 16);\n    return currentHex;\n  }\n\n  /**\n   * Calculates the final hkdf based on computed S value, and computed U value and the key\n   * @param {String} username Username.\n   * @param {String} password Password.\n   * @param {BigInteger} serverBValue Server B value.\n   * @param {BigInteger} salt Generated salt.\n   * @param {nodeCallback<Buffer>} callback Called with (err, hkdfValue)\n   * @returns {void}\n   */;\n  _proto.getPasswordAuthenticationKey = function getPasswordAuthenticationKey(username, password, serverBValue, salt, callback) {\n    var _this4 = this;\n    if (serverBValue.mod(this.N).equals(BigInteger.ZERO)) {\n      throw new Error('B cannot be zero.');\n    }\n    this.UValue = this.calculateU(this.largeAValue, serverBValue);\n    if (this.UValue.equals(BigInteger.ZERO)) {\n      throw new Error('U cannot be zero.');\n    }\n    var usernamePassword = \"\" + this.poolName + username + \":\" + password;\n    var usernamePasswordHash = this.hash(usernamePassword);\n    var xValue = new BigInteger(this.hexHash(this.padHex(salt) + usernamePasswordHash), 16);\n    this.calculateS(xValue, serverBValue, function (err, sValue) {\n      if (err) {\n        callback(err, null);\n      }\n      var hkdf = _this4.computehkdf(Buffer.from(_this4.padHex(sValue), 'hex'), Buffer.from(_this4.padHex(_this4.UValue), 'hex'));\n      callback(null, hkdf);\n    });\n  }\n\n  /**\n   * Calculates the S value used in getPasswordAuthenticationKey\n   * @param {BigInteger} xValue Salted password hash value.\n   * @param {BigInteger} serverBValue Server B value.\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @returns {void}\n   */;\n  _proto.calculateS = function calculateS(xValue, serverBValue, callback) {\n    var _this5 = this;\n    this.g.modPow(xValue, this.N, function (err, gModPowXN) {\n      if (err) {\n        callback(err, null);\n      }\n      var intValue2 = serverBValue.subtract(_this5.k.multiply(gModPowXN));\n      intValue2.modPow(_this5.smallAValue.add(_this5.UValue.multiply(xValue)), _this5.N, function (err2, result) {\n        if (err2) {\n          callback(err2, null);\n        }\n        callback(null, result.mod(_this5.N));\n      });\n    });\n  }\n\n  /**\n   * Return constant newPasswordRequiredChallengeUserAttributePrefix\n   * @return {newPasswordRequiredChallengeUserAttributePrefix} constant prefix value\n   */;\n  _proto.getNewPasswordRequiredChallengeUserAttributePrefix = function getNewPasswordRequiredChallengeUserAttributePrefix() {\n    return newPasswordRequiredChallengeUserAttributePrefix;\n  }\n\n  /**\n   * Returns an unambiguous, even-length hex string of the two's complement encoding of an integer.\n   *\n   * It is compatible with the hex encoding of Java's BigInteger's toByteArray(), wich returns a\n   * byte array containing the two's-complement representation of a BigInteger. The array contains\n   * the minimum number of bytes required to represent the BigInteger, including at least one sign bit.\n   *\n   * Examples showing how ambiguity is avoided by left padding with:\n   * \t\"00\" (for positive values where the most-significant-bit is set)\n   *  \"FF\" (for negative values where the most-significant-bit is set)\n   *\n   * padHex(bigInteger.fromInt(-236))  === \"FF14\"\n   * padHex(bigInteger.fromInt(20))    === \"14\"\n   *\n   * padHex(bigInteger.fromInt(-200))  === \"FF38\"\n   * padHex(bigInteger.fromInt(56))    === \"38\"\n   *\n   * padHex(bigInteger.fromInt(-20))   === \"EC\"\n   * padHex(bigInteger.fromInt(236))   === \"00EC\"\n   *\n   * padHex(bigInteger.fromInt(-56))   === \"C8\"\n   * padHex(bigInteger.fromInt(200))   === \"00C8\"\n   *\n   * @param {BigInteger} bigInt Number to encode.\n   * @returns {String} even-length hex string of the two's complement encoding.\n   */;\n  _proto.padHex = function padHex(bigInt) {\n    if (!(bigInt instanceof BigInteger)) {\n      throw new Error('Not a BigInteger');\n    }\n    var isNegative = bigInt.compareTo(BigInteger.ZERO) < 0;\n\n    /* Get a hex string for abs(bigInt) */\n    var hexStr = bigInt.abs().toString(16);\n\n    /* Pad hex to even length if needed */\n    hexStr = hexStr.length % 2 !== 0 ? \"0\" + hexStr : hexStr;\n\n    /* Prepend \"00\" if the most significant bit is set */\n    hexStr = HEX_MSB_REGEX.test(hexStr) ? \"00\" + hexStr : hexStr;\n    if (isNegative) {\n      /* Flip the bits of the representation */\n      var invertedNibbles = hexStr.split('').map(function (x) {\n        var invertedNibble = ~parseInt(x, 16) & 0xf;\n        return '0123456789ABCDEF'.charAt(invertedNibble);\n      }).join('');\n\n      /* After flipping the bits, add one to get the 2's complement representation */\n      var flippedBitsBI = new BigInteger(invertedNibbles, 16).add(BigInteger.ONE);\n      hexStr = flippedBitsBI.toString(16);\n\n      /*\n      For hex strings starting with 'FF8', 'FF' can be dropped, e.g. 0xFFFF80=0xFF80=0x80=-128\n      \t\tAny sequence of '1' bits on the left can always be substituted with a single '1' bit\n      without changing the represented value.\n      \t\tThis only happens in the case when the input is 80...00\n      */\n      if (hexStr.toUpperCase().startsWith('FF8')) {\n        hexStr = hexStr.substring(2);\n      }\n    }\n    return hexStr;\n  };\n  return AuthenticationHelper;\n}();\nexport { AuthenticationHelper as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Buffer } from 'buffer';\n\n/** @class */\nvar CognitoJwtToken = /*#__PURE__*/function () {\n  /**\n   * Constructs a new CognitoJwtToken object\n   * @param {string=} token The JWT token.\n   */\n  function CognitoJwtToken(token) {\n    // Assign object\n    this.jwtToken = token || '';\n    this.payload = this.decodePayload();\n  }\n\n  /**\n   * @returns {string} the record's token.\n   */\n  var _proto = CognitoJwtToken.prototype;\n  _proto.getJwtToken = function getJwtToken() {\n    return this.jwtToken;\n  }\n\n  /**\n   * @returns {int} the token's expiration (exp member).\n   */;\n  _proto.getExpiration = function getExpiration() {\n    return this.payload.exp;\n  }\n\n  /**\n   * @returns {int} the token's \"issued at\" (iat member).\n   */;\n  _proto.getIssuedAt = function getIssuedAt() {\n    return this.payload.iat;\n  }\n\n  /**\n   * @returns {object} the token's payload.\n   */;\n  _proto.decodePayload = function decodePayload() {\n    var payload = this.jwtToken.split('.')[1];\n    try {\n      return JSON.parse(Buffer.from(payload, 'base64').toString('utf8'));\n    } catch (err) {\n      return {};\n    }\n  };\n  return CognitoJwtToken;\n}();\nexport { CognitoJwtToken as default };","function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport CognitoJwtToken from './CognitoJwtToken';\n\n/** @class */\nvar CognitoAccessToken = /*#__PURE__*/function (_CognitoJwtToken) {\n  /**\n   * Constructs a new CognitoAccessToken object\n   * @param {string=} AccessToken The JWT access token.\n   */\n  function CognitoAccessToken(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n      AccessToken = _ref.AccessToken;\n    return _CognitoJwtToken.call(this, AccessToken || '') || this;\n  }\n  _inheritsLoose(CognitoAccessToken, _CognitoJwtToken);\n  return CognitoAccessToken;\n}(CognitoJwtToken);\nexport { CognitoAccessToken as default };","function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport CognitoJwtToken from './CognitoJwtToken';\n\n/** @class */\nvar CognitoIdToken = /*#__PURE__*/function (_CognitoJwtToken) {\n  /**\n   * Constructs a new CognitoIdToken object\n   * @param {string=} IdToken The JWT Id token\n   */\n  function CognitoIdToken(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n      IdToken = _ref.IdToken;\n    return _CognitoJwtToken.call(this, IdToken || '') || this;\n  }\n  _inheritsLoose(CognitoIdToken, _CognitoJwtToken);\n  return CognitoIdToken;\n}(CognitoJwtToken);\nexport { CognitoIdToken as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/** @class */\nvar CognitoRefreshToken = /*#__PURE__*/function () {\n  /**\n   * Constructs a new CognitoRefreshToken object\n   * @param {string=} RefreshToken The JWT refresh token.\n   */\n  function CognitoRefreshToken(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n      RefreshToken = _ref.RefreshToken;\n    // Assign object\n    this.token = RefreshToken || '';\n  }\n\n  /**\n   * @returns {string} the record's token.\n   */\n  var _proto = CognitoRefreshToken.prototype;\n  _proto.getToken = function getToken() {\n    return this.token;\n  };\n  return CognitoRefreshToken;\n}();\nexport { CognitoRefreshToken as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { version } from './version';\nvar BASE_USER_AGENT = \"aws-amplify/\" + version;\nexport var Platform = {\n  userAgent: BASE_USER_AGENT,\n  isReactNative: typeof navigator !== 'undefined' && navigator.product === 'ReactNative'\n};\nexport var getUserAgent = function getUserAgent() {\n  return Platform.userAgent;\n};\n\n/**\n * @deprecated use named import\n */\nexport default Platform;","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/** @class */\nvar CognitoUserSession = /*#__PURE__*/function () {\n  /**\n   * Constructs a new CognitoUserSession object\n   * @param {CognitoIdToken} IdToken The session's Id token.\n   * @param {CognitoRefreshToken=} RefreshToken The session's refresh token.\n   * @param {CognitoAccessToken} AccessToken The session's access token.\n   * @param {int} ClockDrift The saved computer's clock drift or undefined to force calculation.\n   */\n  function CognitoUserSession(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n      IdToken = _ref.IdToken,\n      RefreshToken = _ref.RefreshToken,\n      AccessToken = _ref.AccessToken,\n      ClockDrift = _ref.ClockDrift;\n    if (AccessToken == null || IdToken == null) {\n      throw new Error('Id token and Access Token must be present.');\n    }\n    this.idToken = IdToken;\n    this.refreshToken = RefreshToken;\n    this.accessToken = AccessToken;\n    this.clockDrift = ClockDrift === undefined ? this.calculateClockDrift() : ClockDrift;\n  }\n\n  /**\n   * @returns {CognitoIdToken} the session's Id token\n   */\n  var _proto = CognitoUserSession.prototype;\n  _proto.getIdToken = function getIdToken() {\n    return this.idToken;\n  }\n\n  /**\n   * @returns {CognitoRefreshToken} the session's refresh token\n   */;\n  _proto.getRefreshToken = function getRefreshToken() {\n    return this.refreshToken;\n  }\n\n  /**\n   * @returns {CognitoAccessToken} the session's access token\n   */;\n  _proto.getAccessToken = function getAccessToken() {\n    return this.accessToken;\n  }\n\n  /**\n   * @returns {int} the session's clock drift\n   */;\n  _proto.getClockDrift = function getClockDrift() {\n    return this.clockDrift;\n  }\n\n  /**\n   * @returns {int} the computer's clock drift\n   */;\n  _proto.calculateClockDrift = function calculateClockDrift() {\n    var now = Math.floor(new Date() / 1000);\n    var iat = Math.min(this.accessToken.getIssuedAt(), this.idToken.getIssuedAt());\n    return now - iat;\n  }\n\n  /**\n   * Checks to see if the session is still valid based on session expiry information found\n   * in tokens and the current time (adjusted with clock drift)\n   * @returns {boolean} if the session is still valid\n   */;\n  _proto.isValid = function isValid() {\n    var now = Math.floor(new Date() / 1000);\n    var adjusted = now - this.clockDrift;\n    return adjusted < this.accessToken.getExpiration() && adjusted < this.idToken.getExpiration();\n  };\n  return CognitoUserSession;\n}();\nexport { CognitoUserSession as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nvar monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nvar weekNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n/** @class */\nvar DateHelper = /*#__PURE__*/function () {\n  function DateHelper() {}\n  var _proto = DateHelper.prototype;\n  /**\n   * @returns {string} The current time in \"ddd MMM D HH:mm:ss UTC YYYY\" format.\n   */\n  _proto.getNowString = function getNowString() {\n    var now = new Date();\n    var weekDay = weekNames[now.getUTCDay()];\n    var month = monthNames[now.getUTCMonth()];\n    var day = now.getUTCDate();\n    var hours = now.getUTCHours();\n    if (hours < 10) {\n      hours = \"0\" + hours;\n    }\n    var minutes = now.getUTCMinutes();\n    if (minutes < 10) {\n      minutes = \"0\" + minutes;\n    }\n    var seconds = now.getUTCSeconds();\n    if (seconds < 10) {\n      seconds = \"0\" + seconds;\n    }\n    var year = now.getUTCFullYear();\n\n    // ddd MMM D HH:mm:ss UTC YYYY\n    var dateNow = weekDay + \" \" + month + \" \" + day + \" \" + hours + \":\" + minutes + \":\" + seconds + \" UTC \" + year;\n    return dateNow;\n  };\n  return DateHelper;\n}();\nexport { DateHelper as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n/** @class */\nvar CognitoUserAttribute = /*#__PURE__*/function () {\n  /**\n   * Constructs a new CognitoUserAttribute object\n   * @param {string=} Name The record's name\n   * @param {string=} Value The record's value\n   */\n  function CognitoUserAttribute(_temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n      Name = _ref.Name,\n      Value = _ref.Value;\n    this.Name = Name || '';\n    this.Value = Value || '';\n  }\n\n  /**\n   * @returns {string} the record's value.\n   */\n  var _proto = CognitoUserAttribute.prototype;\n  _proto.getValue = function getValue() {\n    return this.Value;\n  }\n\n  /**\n   * Sets the record's value.\n   * @param {string} value The new value.\n   * @returns {CognitoUserAttribute} The record for method chaining.\n   */;\n  _proto.setValue = function setValue(value) {\n    this.Value = value;\n    return this;\n  }\n\n  /**\n   * @returns {string} the record's name.\n   */;\n  _proto.getName = function getName() {\n    return this.Name;\n  }\n\n  /**\n   * Sets the record's name\n   * @param {string} name The new name.\n   * @returns {CognitoUserAttribute} The record for method chaining.\n   */;\n  _proto.setName = function setName(name) {\n    this.Name = name;\n    return this;\n  }\n\n  /**\n   * @returns {string} a string representation of the record.\n   */;\n  _proto.toString = function toString() {\n    return JSON.stringify(this);\n  }\n\n  /**\n   * @returns {object} a flat object representing the record.\n   */;\n  _proto.toJSON = function toJSON() {\n    return {\n      Name: this.Name,\n      Value: this.Value\n    };\n  };\n  return CognitoUserAttribute;\n}();\nexport { CognitoUserAttribute as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nvar dataMemory = {};\n\n/** @class */\nexport var MemoryStorage = /*#__PURE__*/function () {\n  function MemoryStorage() {}\n  /**\n   * This is used to set a specific item in storage\n   * @param {string} key - the key for the item\n   * @param {object} value - the value\n   * @returns {string} value that was set\n   */\n  MemoryStorage.setItem = function setItem(key, value) {\n    dataMemory[key] = value;\n    return dataMemory[key];\n  }\n\n  /**\n   * This is used to get a specific key from storage\n   * @param {string} key - the key for the item\n   * This is used to clear the storage\n   * @returns {string} the data item\n   */;\n  MemoryStorage.getItem = function getItem(key) {\n    return Object.prototype.hasOwnProperty.call(dataMemory, key) ? dataMemory[key] : undefined;\n  }\n\n  /**\n   * This is used to remove an item from storage\n   * @param {string} key - the key being set\n   * @returns {boolean} return true\n   */;\n  MemoryStorage.removeItem = function removeItem(key) {\n    return delete dataMemory[key];\n  }\n\n  /**\n   * This is used to clear the storage\n   * @returns {string} nothing\n   */;\n  MemoryStorage.clear = function clear() {\n    dataMemory = {};\n    return dataMemory;\n  };\n  return MemoryStorage;\n}();\n\n/** @class */\nvar StorageHelper = /*#__PURE__*/function () {\n  /**\n   * This is used to get a storage object\n   * @returns {object} the storage\n   */\n  function StorageHelper() {\n    try {\n      this.storageWindow = window.localStorage;\n      this.storageWindow.setItem('aws.cognito.test-ls', 1);\n      this.storageWindow.removeItem('aws.cognito.test-ls');\n    } catch (exception) {\n      this.storageWindow = MemoryStorage;\n    }\n  }\n\n  /**\n   * This is used to return the storage\n   * @returns {object} the storage\n   */\n  var _proto = StorageHelper.prototype;\n  _proto.getStorage = function getStorage() {\n    return this.storageWindow;\n  };\n  return StorageHelper;\n}();\nexport { StorageHelper as default };","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Buffer } from 'buffer';\nimport { Sha256 } from '@aws-crypto/sha256-js';\nimport { Platform } from './Platform';\nimport BigInteger from './BigInteger';\nimport AuthenticationHelper from './AuthenticationHelper';\nimport CognitoAccessToken from './CognitoAccessToken';\nimport CognitoIdToken from './CognitoIdToken';\nimport CognitoRefreshToken from './CognitoRefreshToken';\nimport CognitoUserSession from './CognitoUserSession';\nimport DateHelper from './DateHelper';\nimport CognitoUserAttribute from './CognitoUserAttribute';\nimport StorageHelper from './StorageHelper';\n\n/**\n * @callback nodeCallback\n * @template T result\n * @param {*} err The operation failure reason, or null.\n * @param {T} result The operation result.\n */\n\n/**\n * @callback onFailure\n * @param {*} err Failure reason.\n */\n\n/**\n * @callback onSuccess\n * @template T result\n * @param {T} result The operation result.\n */\n\n/**\n * @callback mfaRequired\n * @param {*} details MFA challenge details.\n */\n\n/**\n * @callback customChallenge\n * @param {*} details Custom challenge details.\n */\n\n/**\n * @callback inputVerificationCode\n * @param {*} data Server response.\n */\n\n/**\n * @callback authSuccess\n * @param {CognitoUserSession} session The new session.\n * @param {bool=} userConfirmationNecessary User must be confirmed.\n */\n\nvar isNavigatorAvailable = typeof navigator !== 'undefined';\nvar userAgent = isNavigatorAvailable ? Platform.isReactNative ? 'react-native' : navigator.userAgent : 'nodejs';\n\n/** @class */\nvar CognitoUser = /*#__PURE__*/function () {\n  /**\n   * Constructs a new CognitoUser object\n   * @param {object} data Creation options\n   * @param {string} data.Username The user's username.\n   * @param {CognitoUserPool} data.Pool Pool containing the user.\n   * @param {object} data.Storage Optional storage object.\n   */\n  function CognitoUser(data) {\n    if (data == null || data.Username == null || data.Pool == null) {\n      throw new Error('Username and Pool information are required.');\n    }\n    this.username = data.Username || '';\n    this.pool = data.Pool;\n    this.Session = null;\n    this.client = data.Pool.client;\n    this.signInUserSession = null;\n    this.authenticationFlowType = 'USER_SRP_AUTH';\n    this.storage = data.Storage || new StorageHelper().getStorage();\n    this.keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n    this.userDataKey = this.keyPrefix + \".\" + this.username + \".userData\";\n  }\n\n  /**\n   * Sets the session for this user\n   * @param {CognitoUserSession} signInUserSession the session\n   * @returns {void}\n   */\n  var _proto = CognitoUser.prototype;\n  _proto.setSignInUserSession = function setSignInUserSession(signInUserSession) {\n    this.clearCachedUserData();\n    this.signInUserSession = signInUserSession;\n    this.cacheTokens();\n  }\n\n  /**\n   * @returns {CognitoUserSession} the current session for this user\n   */;\n  _proto.getSignInUserSession = function getSignInUserSession() {\n    return this.signInUserSession;\n  }\n\n  /**\n   * @returns {string} the user's username\n   */;\n  _proto.getUsername = function getUsername() {\n    return this.username;\n  }\n\n  /**\n   * @returns {String} the authentication flow type\n   */;\n  _proto.getAuthenticationFlowType = function getAuthenticationFlowType() {\n    return this.authenticationFlowType;\n  }\n\n  /**\n   * sets authentication flow type\n   * @param {string} authenticationFlowType New value.\n   * @returns {void}\n   */;\n  _proto.setAuthenticationFlowType = function setAuthenticationFlowType(authenticationFlowType) {\n    this.authenticationFlowType = authenticationFlowType;\n  }\n\n  /**\n   * This is used for authenticating the user through the custom authentication flow.\n   * @param {AuthenticationDetails} authDetails Contains the authentication data\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {customChallenge} callback.customChallenge Custom challenge\n   *        response required to continue.\n   * @param {authSuccess} callback.onSuccess Called on success with the new session.\n   * @returns {void}\n   */;\n  _proto.initiateAuth = function initiateAuth(authDetails, callback) {\n    var _this = this;\n    var authParameters = authDetails.getAuthParameters();\n    authParameters.USERNAME = this.username;\n    var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n    var jsonReq = {\n      AuthFlow: 'CUSTOM_AUTH',\n      ClientId: this.pool.getClientId(),\n      AuthParameters: authParameters,\n      ClientMetadata: clientMetaData\n    };\n    if (this.getUserContextData()) {\n      jsonReq.UserContextData = this.getUserContextData();\n    }\n    this.client.request('InitiateAuth', jsonReq, function (err, data) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      var challengeName = data.ChallengeName;\n      var challengeParameters = data.ChallengeParameters;\n      if (challengeName === 'CUSTOM_CHALLENGE') {\n        _this.Session = data.Session;\n        return callback.customChallenge(challengeParameters);\n      }\n      _this.signInUserSession = _this.getCognitoUserSession(data.AuthenticationResult);\n      _this.cacheTokens();\n      return callback.onSuccess(_this.signInUserSession);\n    });\n  }\n\n  /**\n   * This is used for authenticating the user.\n   * stuff\n   * @param {AuthenticationDetails} authDetails Contains the authentication data\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {newPasswordRequired} callback.newPasswordRequired new\n   *        password and any required attributes are required to continue\n   * @param {mfaRequired} callback.mfaRequired MFA code\n   *        required to continue.\n   * @param {customChallenge} callback.customChallenge Custom challenge\n   *        response required to continue.\n   * @param {authSuccess} callback.onSuccess Called on success with the new session.\n   * @returns {void}\n   */;\n  _proto.authenticateUser = function authenticateUser(authDetails, callback) {\n    if (this.authenticationFlowType === 'USER_PASSWORD_AUTH') {\n      return this.authenticateUserPlainUsernamePassword(authDetails, callback);\n    } else if (this.authenticationFlowType === 'USER_SRP_AUTH' || this.authenticationFlowType === 'CUSTOM_AUTH') {\n      return this.authenticateUserDefaultAuth(authDetails, callback);\n    }\n    return callback.onFailure(new Error('Authentication flow type is invalid.'));\n  }\n\n  /**\n   * PRIVATE ONLY: This is an internal only method and should not\n   * be directly called by the consumers.\n   * It calls the AuthenticationHelper for SRP related\n   * stuff\n   * @param {AuthenticationDetails} authDetails Contains the authentication data\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {newPasswordRequired} callback.newPasswordRequired new\n   *        password and any required attributes are required to continue\n   * @param {mfaRequired} callback.mfaRequired MFA code\n   *        required to continue.\n   * @param {customChallenge} callback.customChallenge Custom challenge\n   *        response required to continue.\n   * @param {authSuccess} callback.onSuccess Called on success with the new session.\n   * @returns {void}\n   */;\n  _proto.authenticateUserDefaultAuth = function authenticateUserDefaultAuth(authDetails, callback) {\n    var _this2 = this;\n    var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolName());\n    var dateHelper = new DateHelper();\n    var serverBValue;\n    var salt;\n    var authParameters = {};\n    if (this.deviceKey != null) {\n      authParameters.DEVICE_KEY = this.deviceKey;\n    }\n    authParameters.USERNAME = this.username;\n    authenticationHelper.getLargeAValue(function (errOnAValue, aValue) {\n      // getLargeAValue callback start\n      if (errOnAValue) {\n        callback.onFailure(errOnAValue);\n      }\n      authParameters.SRP_A = aValue.toString(16);\n      if (_this2.authenticationFlowType === 'CUSTOM_AUTH') {\n        authParameters.CHALLENGE_NAME = 'SRP_A';\n      }\n      var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n      var jsonReq = {\n        AuthFlow: _this2.authenticationFlowType,\n        ClientId: _this2.pool.getClientId(),\n        AuthParameters: authParameters,\n        ClientMetadata: clientMetaData\n      };\n      if (_this2.getUserContextData(_this2.username)) {\n        jsonReq.UserContextData = _this2.getUserContextData(_this2.username);\n      }\n      _this2.client.request('InitiateAuth', jsonReq, function (err, data) {\n        if (err) {\n          return callback.onFailure(err);\n        }\n        var challengeParameters = data.ChallengeParameters;\n        _this2.username = challengeParameters.USER_ID_FOR_SRP;\n        _this2.userDataKey = _this2.keyPrefix + \".\" + _this2.username + \".userData\";\n        serverBValue = new BigInteger(challengeParameters.SRP_B, 16);\n        salt = new BigInteger(challengeParameters.SALT, 16);\n        _this2.getCachedDeviceKeyAndPassword();\n        authenticationHelper.getPasswordAuthenticationKey(_this2.username, authDetails.getPassword(), serverBValue, salt, function (errOnHkdf, hkdf) {\n          // getPasswordAuthenticationKey callback start\n          if (errOnHkdf) {\n            callback.onFailure(errOnHkdf);\n          }\n          var dateNow = dateHelper.getNowString();\n          var concatBuffer = Buffer.concat([Buffer.from(_this2.pool.getUserPoolName(), 'utf8'), Buffer.from(_this2.username, 'utf8'), Buffer.from(challengeParameters.SECRET_BLOCK, 'base64'), Buffer.from(dateNow, 'utf8')]);\n          var awsCryptoHash = new Sha256(hkdf);\n          awsCryptoHash.update(concatBuffer);\n          var resultFromAWSCrypto = awsCryptoHash.digestSync();\n          var signatureString = Buffer.from(resultFromAWSCrypto).toString('base64');\n          var challengeResponses = {};\n          challengeResponses.USERNAME = _this2.username;\n          challengeResponses.PASSWORD_CLAIM_SECRET_BLOCK = challengeParameters.SECRET_BLOCK;\n          challengeResponses.TIMESTAMP = dateNow;\n          challengeResponses.PASSWORD_CLAIM_SIGNATURE = signatureString;\n          if (_this2.deviceKey != null) {\n            challengeResponses.DEVICE_KEY = _this2.deviceKey;\n          }\n          var _respondToAuthChallenge = function respondToAuthChallenge(challenge, challengeCallback) {\n            return _this2.client.request('RespondToAuthChallenge', challenge, function (errChallenge, dataChallenge) {\n              if (errChallenge && errChallenge.code === 'ResourceNotFoundException' && errChallenge.message.toLowerCase().indexOf('device') !== -1) {\n                challengeResponses.DEVICE_KEY = null;\n                _this2.deviceKey = null;\n                _this2.randomPassword = null;\n                _this2.deviceGroupKey = null;\n                _this2.clearCachedDeviceKeyAndPassword();\n                return _respondToAuthChallenge(challenge, challengeCallback);\n              }\n              return challengeCallback(errChallenge, dataChallenge);\n            });\n          };\n          var jsonReqResp = {\n            ChallengeName: 'PASSWORD_VERIFIER',\n            ClientId: _this2.pool.getClientId(),\n            ChallengeResponses: challengeResponses,\n            Session: data.Session,\n            ClientMetadata: clientMetaData\n          };\n          if (_this2.getUserContextData()) {\n            jsonReqResp.UserContextData = _this2.getUserContextData();\n          }\n          _respondToAuthChallenge(jsonReqResp, function (errAuthenticate, dataAuthenticate) {\n            if (errAuthenticate) {\n              return callback.onFailure(errAuthenticate);\n            }\n            return _this2.authenticateUserInternal(dataAuthenticate, authenticationHelper, callback);\n          });\n          return undefined;\n          // getPasswordAuthenticationKey callback end\n        });\n        return undefined;\n      });\n      // getLargeAValue callback end\n    });\n  }\n\n  /**\n   * PRIVATE ONLY: This is an internal only method and should not\n   * be directly called by the consumers.\n   * @param {AuthenticationDetails} authDetails Contains the authentication data.\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {mfaRequired} callback.mfaRequired MFA code\n   *        required to continue.\n   * @param {authSuccess} callback.onSuccess Called on success with the new session.\n   * @returns {void}\n   */;\n  _proto.authenticateUserPlainUsernamePassword = function authenticateUserPlainUsernamePassword(authDetails, callback) {\n    var _this3 = this;\n    var authParameters = {};\n    authParameters.USERNAME = this.username;\n    authParameters.PASSWORD = authDetails.getPassword();\n    if (!authParameters.PASSWORD) {\n      callback.onFailure(new Error('PASSWORD parameter is required'));\n      return;\n    }\n    var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolName());\n    this.getCachedDeviceKeyAndPassword();\n    if (this.deviceKey != null) {\n      authParameters.DEVICE_KEY = this.deviceKey;\n    }\n    var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n    var jsonReq = {\n      AuthFlow: 'USER_PASSWORD_AUTH',\n      ClientId: this.pool.getClientId(),\n      AuthParameters: authParameters,\n      ClientMetadata: clientMetaData\n    };\n    if (this.getUserContextData(this.username)) {\n      jsonReq.UserContextData = this.getUserContextData(this.username);\n    }\n    // USER_PASSWORD_AUTH happens in a single round-trip: client sends userName and password,\n    // Cognito UserPools verifies password and returns tokens.\n    this.client.request('InitiateAuth', jsonReq, function (err, authResult) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      return _this3.authenticateUserInternal(authResult, authenticationHelper, callback);\n    });\n  }\n\n  /**\n   * PRIVATE ONLY: This is an internal only method and should not\n   * be directly called by the consumers.\n   * @param {object} dataAuthenticate authentication data\n   * @param {object} authenticationHelper helper created\n   * @param {callback} callback passed on from caller\n   * @returns {void}\n   */;\n  _proto.authenticateUserInternal = function authenticateUserInternal(dataAuthenticate, authenticationHelper, callback) {\n    var _this4 = this;\n    var challengeName = dataAuthenticate.ChallengeName;\n    var challengeParameters = dataAuthenticate.ChallengeParameters;\n    if (challengeName === 'SMS_MFA') {\n      this.Session = dataAuthenticate.Session;\n      return callback.mfaRequired(challengeName, challengeParameters);\n    }\n    if (challengeName === 'SELECT_MFA_TYPE') {\n      this.Session = dataAuthenticate.Session;\n      return callback.selectMFAType(challengeName, challengeParameters);\n    }\n    if (challengeName === 'MFA_SETUP') {\n      this.Session = dataAuthenticate.Session;\n      return callback.mfaSetup(challengeName, challengeParameters);\n    }\n    if (challengeName === 'SOFTWARE_TOKEN_MFA') {\n      this.Session = dataAuthenticate.Session;\n      return callback.totpRequired(challengeName, challengeParameters);\n    }\n    if (challengeName === 'CUSTOM_CHALLENGE') {\n      this.Session = dataAuthenticate.Session;\n      return callback.customChallenge(challengeParameters);\n    }\n    if (challengeName === 'NEW_PASSWORD_REQUIRED') {\n      this.Session = dataAuthenticate.Session;\n      var userAttributes = null;\n      var rawRequiredAttributes = null;\n      var requiredAttributes = [];\n      var userAttributesPrefix = authenticationHelper.getNewPasswordRequiredChallengeUserAttributePrefix();\n      if (challengeParameters) {\n        userAttributes = JSON.parse(dataAuthenticate.ChallengeParameters.userAttributes);\n        rawRequiredAttributes = JSON.parse(dataAuthenticate.ChallengeParameters.requiredAttributes);\n      }\n      if (rawRequiredAttributes) {\n        for (var i = 0; i < rawRequiredAttributes.length; i++) {\n          requiredAttributes[i] = rawRequiredAttributes[i].substr(userAttributesPrefix.length);\n        }\n      }\n      return callback.newPasswordRequired(userAttributes, requiredAttributes);\n    }\n    if (challengeName === 'DEVICE_SRP_AUTH') {\n      this.Session = dataAuthenticate.Session;\n      this.getDeviceResponse(callback);\n      return undefined;\n    }\n    this.signInUserSession = this.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n    this.challengeName = challengeName;\n    this.cacheTokens();\n    var newDeviceMetadata = dataAuthenticate.AuthenticationResult.NewDeviceMetadata;\n    if (newDeviceMetadata == null) {\n      return callback.onSuccess(this.signInUserSession);\n    }\n    authenticationHelper.generateHashDevice(dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey, dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey, function (errGenHash) {\n      if (errGenHash) {\n        return callback.onFailure(errGenHash);\n      }\n      var deviceSecretVerifierConfig = {\n        Salt: Buffer.from(authenticationHelper.getSaltDevices(), 'hex').toString('base64'),\n        PasswordVerifier: Buffer.from(authenticationHelper.getVerifierDevices(), 'hex').toString('base64')\n      };\n      _this4.verifierDevices = deviceSecretVerifierConfig.PasswordVerifier;\n      _this4.deviceGroupKey = newDeviceMetadata.DeviceGroupKey;\n      _this4.randomPassword = authenticationHelper.getRandomPassword();\n      _this4.client.request('ConfirmDevice', {\n        DeviceKey: newDeviceMetadata.DeviceKey,\n        AccessToken: _this4.signInUserSession.getAccessToken().getJwtToken(),\n        DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n        DeviceName: userAgent\n      }, function (errConfirm, dataConfirm) {\n        if (errConfirm) {\n          return callback.onFailure(errConfirm);\n        }\n        _this4.deviceKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey;\n        _this4.cacheDeviceKeyAndPassword();\n        if (dataConfirm.UserConfirmationNecessary === true) {\n          return callback.onSuccess(_this4.signInUserSession, dataConfirm.UserConfirmationNecessary);\n        }\n        return callback.onSuccess(_this4.signInUserSession);\n      });\n      return undefined;\n    });\n    return undefined;\n  }\n\n  /**\n   * This method is user to complete the NEW_PASSWORD_REQUIRED challenge.\n   * Pass the new password with any new user attributes to be updated.\n   * User attribute keys must be of format userAttributes.<attribute_name>.\n   * @param {string} newPassword new password for this user\n   * @param {object} requiredAttributeData map with values for all required attributes\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {mfaRequired} callback.mfaRequired MFA code required to continue.\n   * @param {customChallenge} callback.customChallenge Custom challenge\n   *         response required to continue.\n   * @param {authSuccess} callback.onSuccess Called on success with the new session.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.completeNewPasswordChallenge = function completeNewPasswordChallenge(newPassword, requiredAttributeData, callback, clientMetadata) {\n    var _this5 = this;\n    if (!newPassword) {\n      return callback.onFailure(new Error('New password is required.'));\n    }\n    var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolName());\n    var userAttributesPrefix = authenticationHelper.getNewPasswordRequiredChallengeUserAttributePrefix();\n    var finalUserAttributes = {};\n    if (requiredAttributeData) {\n      Object.keys(requiredAttributeData).forEach(function (key) {\n        finalUserAttributes[userAttributesPrefix + key] = requiredAttributeData[key];\n      });\n    }\n    finalUserAttributes.NEW_PASSWORD = newPassword;\n    finalUserAttributes.USERNAME = this.username;\n    var jsonReq = {\n      ChallengeName: 'NEW_PASSWORD_REQUIRED',\n      ClientId: this.pool.getClientId(),\n      ChallengeResponses: finalUserAttributes,\n      Session: this.Session,\n      ClientMetadata: clientMetadata\n    };\n    if (this.getUserContextData()) {\n      jsonReq.UserContextData = this.getUserContextData();\n    }\n    this.client.request('RespondToAuthChallenge', jsonReq, function (errAuthenticate, dataAuthenticate) {\n      if (errAuthenticate) {\n        return callback.onFailure(errAuthenticate);\n      }\n      return _this5.authenticateUserInternal(dataAuthenticate, authenticationHelper, callback);\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used to get a session using device authentication. It is called at the end of user\n   * authentication\n   *\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {authSuccess} callback.onSuccess Called on success with the new session.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   * @private\n   */;\n  _proto.getDeviceResponse = function getDeviceResponse(callback, clientMetadata) {\n    var _this6 = this;\n    var authenticationHelper = new AuthenticationHelper(this.deviceGroupKey);\n    var dateHelper = new DateHelper();\n    var authParameters = {};\n    authParameters.USERNAME = this.username;\n    authParameters.DEVICE_KEY = this.deviceKey;\n    authenticationHelper.getLargeAValue(function (errAValue, aValue) {\n      // getLargeAValue callback start\n      if (errAValue) {\n        callback.onFailure(errAValue);\n      }\n      authParameters.SRP_A = aValue.toString(16);\n      var jsonReq = {\n        ChallengeName: 'DEVICE_SRP_AUTH',\n        ClientId: _this6.pool.getClientId(),\n        ChallengeResponses: authParameters,\n        ClientMetadata: clientMetadata,\n        Session: _this6.Session\n      };\n      if (_this6.getUserContextData()) {\n        jsonReq.UserContextData = _this6.getUserContextData();\n      }\n      _this6.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n        if (err) {\n          return callback.onFailure(err);\n        }\n        var challengeParameters = data.ChallengeParameters;\n        var serverBValue = new BigInteger(challengeParameters.SRP_B, 16);\n        var salt = new BigInteger(challengeParameters.SALT, 16);\n        authenticationHelper.getPasswordAuthenticationKey(_this6.deviceKey, _this6.randomPassword, serverBValue, salt, function (errHkdf, hkdf) {\n          // getPasswordAuthenticationKey callback start\n          if (errHkdf) {\n            return callback.onFailure(errHkdf);\n          }\n          var dateNow = dateHelper.getNowString();\n          var concatBuffer = Buffer.concat([Buffer.from(_this6.deviceGroupKey, 'utf8'), Buffer.from(_this6.deviceKey, 'utf8'), Buffer.from(challengeParameters.SECRET_BLOCK, 'base64'), Buffer.from(dateNow, 'utf8')]);\n          var awsCryptoHash = new Sha256(hkdf);\n          awsCryptoHash.update(concatBuffer);\n          var resultFromAWSCrypto = awsCryptoHash.digestSync();\n          var signatureString = Buffer.from(resultFromAWSCrypto).toString('base64');\n          var challengeResponses = {};\n          challengeResponses.USERNAME = _this6.username;\n          challengeResponses.PASSWORD_CLAIM_SECRET_BLOCK = challengeParameters.SECRET_BLOCK;\n          challengeResponses.TIMESTAMP = dateNow;\n          challengeResponses.PASSWORD_CLAIM_SIGNATURE = signatureString;\n          challengeResponses.DEVICE_KEY = _this6.deviceKey;\n          var jsonReqResp = {\n            ChallengeName: 'DEVICE_PASSWORD_VERIFIER',\n            ClientId: _this6.pool.getClientId(),\n            ChallengeResponses: challengeResponses,\n            Session: data.Session\n          };\n          if (_this6.getUserContextData()) {\n            jsonReqResp.UserContextData = _this6.getUserContextData();\n          }\n          _this6.client.request('RespondToAuthChallenge', jsonReqResp, function (errAuthenticate, dataAuthenticate) {\n            if (errAuthenticate) {\n              return callback.onFailure(errAuthenticate);\n            }\n            _this6.signInUserSession = _this6.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n            _this6.cacheTokens();\n            return callback.onSuccess(_this6.signInUserSession);\n          });\n          return undefined;\n          // getPasswordAuthenticationKey callback end\n        });\n        return undefined;\n      });\n      // getLargeAValue callback end\n    });\n  }\n\n  /**\n   * This is used for a certain user to confirm the registration by using a confirmation code\n   * @param {string} confirmationCode Code entered by user.\n   * @param {bool} forceAliasCreation Allow migrating from an existing email / phone number.\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.confirmRegistration = function confirmRegistration(confirmationCode, forceAliasCreation, callback, clientMetadata) {\n    var jsonReq = {\n      ClientId: this.pool.getClientId(),\n      ConfirmationCode: confirmationCode,\n      Username: this.username,\n      ForceAliasCreation: forceAliasCreation,\n      ClientMetadata: clientMetadata\n    };\n    if (this.getUserContextData()) {\n      jsonReq.UserContextData = this.getUserContextData();\n    }\n    this.client.request('ConfirmSignUp', jsonReq, function (err) {\n      if (err) {\n        return callback(err, null);\n      }\n      return callback(null, 'SUCCESS');\n    });\n  }\n\n  /**\n   * This is used by the user once he has the responses to a custom challenge\n   * @param {string} answerChallenge The custom challenge answer.\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {customChallenge} callback.customChallenge\n   *    Custom challenge response required to continue.\n   * @param {authSuccess} callback.onSuccess Called on success with the new session.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.sendCustomChallengeAnswer = function sendCustomChallengeAnswer(answerChallenge, callback, clientMetadata) {\n    var _this7 = this;\n    var challengeResponses = {};\n    challengeResponses.USERNAME = this.username;\n    challengeResponses.ANSWER = answerChallenge;\n    var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolName());\n    this.getCachedDeviceKeyAndPassword();\n    if (this.deviceKey != null) {\n      challengeResponses.DEVICE_KEY = this.deviceKey;\n    }\n    var jsonReq = {\n      ChallengeName: 'CUSTOM_CHALLENGE',\n      ChallengeResponses: challengeResponses,\n      ClientId: this.pool.getClientId(),\n      Session: this.Session,\n      ClientMetadata: clientMetadata\n    };\n    if (this.getUserContextData()) {\n      jsonReq.UserContextData = this.getUserContextData();\n    }\n    this.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      return _this7.authenticateUserInternal(data, authenticationHelper, callback);\n    });\n  }\n\n  /**\n   * This is used by the user once he has an MFA code\n   * @param {string} confirmationCode The MFA code entered by the user.\n   * @param {object} callback Result callback map.\n   * @param {string} mfaType The mfa we are replying to.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {authSuccess} callback.onSuccess Called on success with the new session.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.sendMFACode = function sendMFACode(confirmationCode, callback, mfaType, clientMetadata) {\n    var _this8 = this;\n    var challengeResponses = {};\n    challengeResponses.USERNAME = this.username;\n    challengeResponses.SMS_MFA_CODE = confirmationCode;\n    var mfaTypeSelection = mfaType || 'SMS_MFA';\n    if (mfaTypeSelection === 'SOFTWARE_TOKEN_MFA') {\n      challengeResponses.SOFTWARE_TOKEN_MFA_CODE = confirmationCode;\n    }\n    if (this.deviceKey != null) {\n      challengeResponses.DEVICE_KEY = this.deviceKey;\n    }\n    var jsonReq = {\n      ChallengeName: mfaTypeSelection,\n      ChallengeResponses: challengeResponses,\n      ClientId: this.pool.getClientId(),\n      Session: this.Session,\n      ClientMetadata: clientMetadata\n    };\n    if (this.getUserContextData()) {\n      jsonReq.UserContextData = this.getUserContextData();\n    }\n    this.client.request('RespondToAuthChallenge', jsonReq, function (err, dataAuthenticate) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      var challengeName = dataAuthenticate.ChallengeName;\n      if (challengeName === 'DEVICE_SRP_AUTH') {\n        _this8.getDeviceResponse(callback);\n        return undefined;\n      }\n      _this8.signInUserSession = _this8.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n      _this8.cacheTokens();\n      if (dataAuthenticate.AuthenticationResult.NewDeviceMetadata == null) {\n        return callback.onSuccess(_this8.signInUserSession);\n      }\n      var authenticationHelper = new AuthenticationHelper(_this8.pool.getUserPoolName());\n      authenticationHelper.generateHashDevice(dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey, dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey, function (errGenHash) {\n        if (errGenHash) {\n          return callback.onFailure(errGenHash);\n        }\n        var deviceSecretVerifierConfig = {\n          Salt: Buffer.from(authenticationHelper.getSaltDevices(), 'hex').toString('base64'),\n          PasswordVerifier: Buffer.from(authenticationHelper.getVerifierDevices(), 'hex').toString('base64')\n        };\n        _this8.verifierDevices = deviceSecretVerifierConfig.PasswordVerifier;\n        _this8.deviceGroupKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey;\n        _this8.randomPassword = authenticationHelper.getRandomPassword();\n        _this8.client.request('ConfirmDevice', {\n          DeviceKey: dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey,\n          AccessToken: _this8.signInUserSession.getAccessToken().getJwtToken(),\n          DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n          DeviceName: userAgent\n        }, function (errConfirm, dataConfirm) {\n          if (errConfirm) {\n            return callback.onFailure(errConfirm);\n          }\n          _this8.deviceKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey;\n          _this8.cacheDeviceKeyAndPassword();\n          if (dataConfirm.UserConfirmationNecessary === true) {\n            return callback.onSuccess(_this8.signInUserSession, dataConfirm.UserConfirmationNecessary);\n          }\n          return callback.onSuccess(_this8.signInUserSession);\n        });\n        return undefined;\n      });\n      return undefined;\n    });\n  }\n\n  /**\n   * This is used by an authenticated user to change the current password\n   * @param {string} oldUserPassword The current password.\n   * @param {string} newUserPassword The requested new password.\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.changePassword = function changePassword(oldUserPassword, newUserPassword, callback, clientMetadata) {\n    if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n      return callback(new Error('User is not authenticated'), null);\n    }\n    this.client.request('ChangePassword', {\n      PreviousPassword: oldUserPassword,\n      ProposedPassword: newUserPassword,\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n      ClientMetadata: clientMetadata\n    }, function (err) {\n      if (err) {\n        return callback(err, null);\n      }\n      return callback(null, 'SUCCESS');\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used by an authenticated user to enable MFA for itself\n   * @deprecated\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @returns {void}\n   */;\n  _proto.enableMFA = function enableMFA(callback) {\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback(new Error('User is not authenticated'), null);\n    }\n    var mfaOptions = [];\n    var mfaEnabled = {\n      DeliveryMedium: 'SMS',\n      AttributeName: 'phone_number'\n    };\n    mfaOptions.push(mfaEnabled);\n    this.client.request('SetUserSettings', {\n      MFAOptions: mfaOptions,\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n    }, function (err) {\n      if (err) {\n        return callback(err, null);\n      }\n      return callback(null, 'SUCCESS');\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used by an authenticated user to enable MFA for itself\n   * @param {IMfaSettings} smsMfaSettings the sms mfa settings\n   * @param {IMFASettings} softwareTokenMfaSettings the software token mfa settings\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @returns {void}\n   */;\n  _proto.setUserMfaPreference = function setUserMfaPreference(smsMfaSettings, softwareTokenMfaSettings, callback) {\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback(new Error('User is not authenticated'), null);\n    }\n    this.client.request('SetUserMFAPreference', {\n      SMSMfaSettings: smsMfaSettings,\n      SoftwareTokenMfaSettings: softwareTokenMfaSettings,\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n    }, function (err) {\n      if (err) {\n        return callback(err, null);\n      }\n      return callback(null, 'SUCCESS');\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used by an authenticated user to disable MFA for itself\n   * @deprecated\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @returns {void}\n   */;\n  _proto.disableMFA = function disableMFA(callback) {\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback(new Error('User is not authenticated'), null);\n    }\n    var mfaOptions = [];\n    this.client.request('SetUserSettings', {\n      MFAOptions: mfaOptions,\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n    }, function (err) {\n      if (err) {\n        return callback(err, null);\n      }\n      return callback(null, 'SUCCESS');\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used by an authenticated user to delete itself\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.deleteUser = function deleteUser(callback, clientMetadata) {\n    var _this9 = this;\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback(new Error('User is not authenticated'), null);\n    }\n    this.client.request('DeleteUser', {\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n      ClientMetadata: clientMetadata\n    }, function (err) {\n      if (err) {\n        return callback(err, null);\n      }\n      _this9.clearCachedUser();\n      return callback(null, 'SUCCESS');\n    });\n    return undefined;\n  }\n\n  /**\n   * @typedef {CognitoUserAttribute | { Name:string, Value:string }} AttributeArg\n   */\n  /**\n   * This is used by an authenticated user to change a list of attributes\n   * @param {AttributeArg[]} attributes A list of the new user attributes.\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.updateAttributes = function updateAttributes(attributes, callback, clientMetadata) {\n    var _this10 = this;\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback(new Error('User is not authenticated'), null);\n    }\n    this.client.request('UpdateUserAttributes', {\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n      UserAttributes: attributes,\n      ClientMetadata: clientMetadata\n    }, function (err, result) {\n      if (err) {\n        return callback(err, null);\n      }\n\n      // update cached user\n      return _this10.getUserData(function () {\n        return callback(null, 'SUCCESS', result);\n      }, {\n        bypassCache: true\n      });\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used by an authenticated user to get a list of attributes\n   * @param {nodeCallback<CognitoUserAttribute[]>} callback Called on success or error.\n   * @returns {void}\n   */;\n  _proto.getUserAttributes = function getUserAttributes(callback) {\n    if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n      return callback(new Error('User is not authenticated'), null);\n    }\n    this.client.request('GetUser', {\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n    }, function (err, userData) {\n      if (err) {\n        return callback(err, null);\n      }\n      var attributeList = [];\n      for (var i = 0; i < userData.UserAttributes.length; i++) {\n        var attribute = {\n          Name: userData.UserAttributes[i].Name,\n          Value: userData.UserAttributes[i].Value\n        };\n        var userAttribute = new CognitoUserAttribute(attribute);\n        attributeList.push(userAttribute);\n      }\n      return callback(null, attributeList);\n    });\n    return undefined;\n  }\n\n  /**\n   * This was previously used by an authenticated user to get MFAOptions,\n   * but no longer returns a meaningful response. Refer to the documentation for\n   * how to setup and use MFA: https://docs.amplify.aws/lib/auth/mfa/q/platform/js\n   * @deprecated\n   * @param {nodeCallback<MFAOptions>} callback Called on success or error.\n   * @returns {void}\n   */;\n  _proto.getMFAOptions = function getMFAOptions(callback) {\n    if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n      return callback(new Error('User is not authenticated'), null);\n    }\n    this.client.request('GetUser', {\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n    }, function (err, userData) {\n      if (err) {\n        return callback(err, null);\n      }\n      return callback(null, userData.MFAOptions);\n    });\n    return undefined;\n  }\n\n  /**\n   * PRIVATE ONLY: This is an internal only method and should not\n   * be directly called by the consumers.\n   */;\n  _proto.createGetUserRequest = function createGetUserRequest() {\n    return this.client.promisifyRequest('GetUser', {\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n    });\n  }\n\n  /**\n   * PRIVATE ONLY: This is an internal only method and should not\n   * be directly called by the consumers.\n   */;\n  _proto.refreshSessionIfPossible = function refreshSessionIfPossible(options) {\n    var _this11 = this;\n    if (options === void 0) {\n      options = {};\n    }\n    // best effort, if not possible\n    return new Promise(function (resolve) {\n      var refresh = _this11.signInUserSession.getRefreshToken();\n      if (refresh && refresh.getToken()) {\n        _this11.refreshSession(refresh, resolve, options.clientMetadata);\n      } else {\n        resolve();\n      }\n    });\n  }\n\n  /**\n   * @typedef {Object} GetUserDataOptions\n   * @property {boolean} bypassCache - force getting data from Cognito service\n   * @property {Record<string, string>} clientMetadata - clientMetadata for getSession\n   */\n\n  /**\n   * This is used by an authenticated users to get the userData\n   * @param {nodeCallback<UserData>} callback Called on success or error.\n   * @param {GetUserDataOptions} params\n   * @returns {void}\n   */;\n  _proto.getUserData = function getUserData(callback, params) {\n    var _this12 = this;\n    if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n      this.clearCachedUserData();\n      return callback(new Error('User is not authenticated'), null);\n    }\n    var userData = this.getUserDataFromCache();\n    if (!userData) {\n      this.fetchUserData().then(function (data) {\n        callback(null, data);\n      })[\"catch\"](callback);\n      return;\n    }\n    if (this.isFetchUserDataAndTokenRequired(params)) {\n      this.fetchUserData().then(function (data) {\n        return _this12.refreshSessionIfPossible(params).then(function () {\n          return data;\n        });\n      }).then(function (data) {\n        return callback(null, data);\n      })[\"catch\"](callback);\n      return;\n    }\n    try {\n      callback(null, JSON.parse(userData));\n      return;\n    } catch (err) {\n      this.clearCachedUserData();\n      callback(err, null);\n      return;\n    }\n  }\n\n  /**\n   *\n   * PRIVATE ONLY: This is an internal only method and should not\n   * be directly called by the consumers.\n   */;\n  _proto.getUserDataFromCache = function getUserDataFromCache() {\n    var userData = this.storage.getItem(this.userDataKey);\n    return userData;\n  }\n\n  /**\n   *\n   * PRIVATE ONLY: This is an internal only method and should not\n   * be directly called by the consumers.\n   */;\n  _proto.isFetchUserDataAndTokenRequired = function isFetchUserDataAndTokenRequired(params) {\n    var _ref = params || {},\n      _ref$bypassCache = _ref.bypassCache,\n      bypassCache = _ref$bypassCache === void 0 ? false : _ref$bypassCache;\n    return bypassCache;\n  }\n  /**\n   *\n   * PRIVATE ONLY: This is an internal only method and should not\n   * be directly called by the consumers.\n   */;\n  _proto.fetchUserData = function fetchUserData() {\n    var _this13 = this;\n    return this.createGetUserRequest().then(function (data) {\n      _this13.cacheUserData(data);\n      return data;\n    });\n  }\n\n  /**\n   * This is used by an authenticated user to delete a list of attributes\n   * @param {string[]} attributeList Names of the attributes to delete.\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @returns {void}\n   */;\n  _proto.deleteAttributes = function deleteAttributes(attributeList, callback) {\n    var _this14 = this;\n    if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n      return callback(new Error('User is not authenticated'), null);\n    }\n    this.client.request('DeleteUserAttributes', {\n      UserAttributeNames: attributeList,\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n    }, function (err) {\n      if (err) {\n        return callback(err, null);\n      }\n\n      // update cached user\n      return _this14.getUserData(function () {\n        return callback(null, 'SUCCESS');\n      }, {\n        bypassCache: true\n      });\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used by a user to resend a confirmation code\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.resendConfirmationCode = function resendConfirmationCode(callback, clientMetadata) {\n    var jsonReq = {\n      ClientId: this.pool.getClientId(),\n      Username: this.username,\n      ClientMetadata: clientMetadata\n    };\n    this.client.request('ResendConfirmationCode', jsonReq, function (err, result) {\n      if (err) {\n        return callback(err, null);\n      }\n      return callback(null, result);\n    });\n  }\n\n  /**\n   * @typedef {Object} GetSessionOptions\n   * @property {Record<string, string>} clientMetadata - clientMetadata for getSession\n   */\n\n  /**\n   * This is used to get a session, either from the session object\n   * or from  the local storage, or by using a refresh token\n   *\n   * @param {nodeCallback<CognitoUserSession>} callback Called on success or error.\n   * @param {GetSessionOptions} options\n   * @returns {void}\n   */;\n  _proto.getSession = function getSession(callback, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    if (this.username == null) {\n      return callback(new Error('Username is null. Cannot retrieve a new session'), null);\n    }\n    if (this.signInUserSession != null && this.signInUserSession.isValid()) {\n      return callback(null, this.signInUserSession);\n    }\n    var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n    var idTokenKey = keyPrefix + \".idToken\";\n    var accessTokenKey = keyPrefix + \".accessToken\";\n    var refreshTokenKey = keyPrefix + \".refreshToken\";\n    var clockDriftKey = keyPrefix + \".clockDrift\";\n    if (this.storage.getItem(idTokenKey)) {\n      var idToken = new CognitoIdToken({\n        IdToken: this.storage.getItem(idTokenKey)\n      });\n      var accessToken = new CognitoAccessToken({\n        AccessToken: this.storage.getItem(accessTokenKey)\n      });\n      var refreshToken = new CognitoRefreshToken({\n        RefreshToken: this.storage.getItem(refreshTokenKey)\n      });\n      var clockDrift = parseInt(this.storage.getItem(clockDriftKey), 0) || 0;\n      var sessionData = {\n        IdToken: idToken,\n        AccessToken: accessToken,\n        RefreshToken: refreshToken,\n        ClockDrift: clockDrift\n      };\n      var cachedSession = new CognitoUserSession(sessionData);\n      if (cachedSession.isValid()) {\n        this.signInUserSession = cachedSession;\n        return callback(null, this.signInUserSession);\n      }\n      if (!refreshToken.getToken()) {\n        return callback(new Error('Cannot retrieve a new session. Please authenticate.'), null);\n      }\n      this.refreshSession(refreshToken, callback, options.clientMetadata);\n    } else {\n      callback(new Error('Local storage is missing an ID Token, Please authenticate'), null);\n    }\n    return undefined;\n  }\n\n  /**\n   * This uses the refreshToken to retrieve a new session\n   * @param {CognitoRefreshToken} refreshToken A previous session's refresh token.\n   * @param {nodeCallback<CognitoUserSession>} callback Called on success or error.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.refreshSession = function refreshSession(refreshToken, callback, clientMetadata) {\n    var _this15 = this;\n    var wrappedCallback = this.pool.wrapRefreshSessionCallback ? this.pool.wrapRefreshSessionCallback(callback) : callback;\n    var authParameters = {};\n    authParameters.REFRESH_TOKEN = refreshToken.getToken();\n    var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n    var lastUserKey = keyPrefix + \".LastAuthUser\";\n    if (this.storage.getItem(lastUserKey)) {\n      this.username = this.storage.getItem(lastUserKey);\n      var deviceKeyKey = keyPrefix + \".\" + this.username + \".deviceKey\";\n      this.deviceKey = this.storage.getItem(deviceKeyKey);\n      authParameters.DEVICE_KEY = this.deviceKey;\n    }\n    var jsonReq = {\n      ClientId: this.pool.getClientId(),\n      AuthFlow: 'REFRESH_TOKEN_AUTH',\n      AuthParameters: authParameters,\n      ClientMetadata: clientMetadata\n    };\n    if (this.getUserContextData()) {\n      jsonReq.UserContextData = this.getUserContextData();\n    }\n    this.client.requestWithRetry('InitiateAuth', jsonReq, function (err, authResult) {\n      if (err) {\n        if (err.code === 'NotAuthorizedException') {\n          _this15.clearCachedUser();\n        }\n        return wrappedCallback(err, null);\n      }\n      if (authResult) {\n        var authenticationResult = authResult.AuthenticationResult;\n        if (!Object.prototype.hasOwnProperty.call(authenticationResult, 'RefreshToken')) {\n          authenticationResult.RefreshToken = refreshToken.getToken();\n        }\n        _this15.signInUserSession = _this15.getCognitoUserSession(authenticationResult);\n        _this15.cacheTokens();\n        return wrappedCallback(null, _this15.signInUserSession);\n      }\n      return undefined;\n    });\n  }\n\n  /**\n   * This is used to save the session tokens to local storage\n   * @returns {void}\n   */;\n  _proto.cacheTokens = function cacheTokens() {\n    var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n    var idTokenKey = keyPrefix + \".\" + this.username + \".idToken\";\n    var accessTokenKey = keyPrefix + \".\" + this.username + \".accessToken\";\n    var refreshTokenKey = keyPrefix + \".\" + this.username + \".refreshToken\";\n    var clockDriftKey = keyPrefix + \".\" + this.username + \".clockDrift\";\n    var lastUserKey = keyPrefix + \".LastAuthUser\";\n    this.storage.setItem(idTokenKey, this.signInUserSession.getIdToken().getJwtToken());\n    this.storage.setItem(accessTokenKey, this.signInUserSession.getAccessToken().getJwtToken());\n    this.storage.setItem(refreshTokenKey, this.signInUserSession.getRefreshToken().getToken());\n    this.storage.setItem(clockDriftKey, \"\" + this.signInUserSession.getClockDrift());\n    this.storage.setItem(lastUserKey, this.username);\n  }\n\n  /**\n   * This is to cache user data\n   */;\n  _proto.cacheUserData = function cacheUserData(userData) {\n    this.storage.setItem(this.userDataKey, JSON.stringify(userData));\n  }\n\n  /**\n   * This is to remove cached user data\n   */;\n  _proto.clearCachedUserData = function clearCachedUserData() {\n    this.storage.removeItem(this.userDataKey);\n  };\n  _proto.clearCachedUser = function clearCachedUser() {\n    this.clearCachedTokens();\n    this.clearCachedUserData();\n  }\n\n  /**\n   * This is used to cache the device key and device group and device password\n   * @returns {void}\n   */;\n  _proto.cacheDeviceKeyAndPassword = function cacheDeviceKeyAndPassword() {\n    var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n    var deviceKeyKey = keyPrefix + \".deviceKey\";\n    var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n    var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n    this.storage.setItem(deviceKeyKey, this.deviceKey);\n    this.storage.setItem(randomPasswordKey, this.randomPassword);\n    this.storage.setItem(deviceGroupKeyKey, this.deviceGroupKey);\n  }\n\n  /**\n   * This is used to get current device key and device group and device password\n   * @returns {void}\n   */;\n  _proto.getCachedDeviceKeyAndPassword = function getCachedDeviceKeyAndPassword() {\n    var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n    var deviceKeyKey = keyPrefix + \".deviceKey\";\n    var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n    var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n    if (this.storage.getItem(deviceKeyKey)) {\n      this.deviceKey = this.storage.getItem(deviceKeyKey);\n      this.randomPassword = this.storage.getItem(randomPasswordKey);\n      this.deviceGroupKey = this.storage.getItem(deviceGroupKeyKey);\n    }\n  }\n\n  /**\n   * This is used to clear the device key info from local storage\n   * @returns {void}\n   */;\n  _proto.clearCachedDeviceKeyAndPassword = function clearCachedDeviceKeyAndPassword() {\n    var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n    var deviceKeyKey = keyPrefix + \".deviceKey\";\n    var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n    var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n    this.storage.removeItem(deviceKeyKey);\n    this.storage.removeItem(randomPasswordKey);\n    this.storage.removeItem(deviceGroupKeyKey);\n  }\n\n  /**\n   * This is used to clear the session tokens from local storage\n   * @returns {void}\n   */;\n  _proto.clearCachedTokens = function clearCachedTokens() {\n    var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n    var idTokenKey = keyPrefix + \".\" + this.username + \".idToken\";\n    var accessTokenKey = keyPrefix + \".\" + this.username + \".accessToken\";\n    var refreshTokenKey = keyPrefix + \".\" + this.username + \".refreshToken\";\n    var lastUserKey = keyPrefix + \".LastAuthUser\";\n    var clockDriftKey = keyPrefix + \".\" + this.username + \".clockDrift\";\n    this.storage.removeItem(idTokenKey);\n    this.storage.removeItem(accessTokenKey);\n    this.storage.removeItem(refreshTokenKey);\n    this.storage.removeItem(lastUserKey);\n    this.storage.removeItem(clockDriftKey);\n  }\n\n  /**\n   * This is used to build a user session from tokens retrieved in the authentication result\n   * @param {object} authResult Successful auth response from server.\n   * @returns {CognitoUserSession} The new user session.\n   * @private\n   */;\n  _proto.getCognitoUserSession = function getCognitoUserSession(authResult) {\n    var idToken = new CognitoIdToken(authResult);\n    var accessToken = new CognitoAccessToken(authResult);\n    var refreshToken = new CognitoRefreshToken(authResult);\n    var sessionData = {\n      IdToken: idToken,\n      AccessToken: accessToken,\n      RefreshToken: refreshToken\n    };\n    return new CognitoUserSession(sessionData);\n  }\n\n  /**\n   * This is used to initiate a forgot password request\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {inputVerificationCode?} callback.inputVerificationCode\n   *    Optional callback raised instead of onSuccess with response data.\n   * @param {onSuccess} callback.onSuccess Called on success.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.forgotPassword = function forgotPassword(callback, clientMetadata) {\n    var jsonReq = {\n      ClientId: this.pool.getClientId(),\n      Username: this.username,\n      ClientMetadata: clientMetadata\n    };\n    if (this.getUserContextData()) {\n      jsonReq.UserContextData = this.getUserContextData();\n    }\n    this.client.request('ForgotPassword', jsonReq, function (err, data) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      if (typeof callback.inputVerificationCode === 'function') {\n        return callback.inputVerificationCode(data);\n      }\n      return callback.onSuccess(data);\n    });\n  }\n\n  /**\n   * This is used to confirm a new password using a confirmationCode\n   * @param {string} confirmationCode Code entered by user.\n   * @param {string} newPassword Confirm new password.\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {onSuccess<void>} callback.onSuccess Called on success.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.confirmPassword = function confirmPassword(confirmationCode, newPassword, callback, clientMetadata) {\n    var jsonReq = {\n      ClientId: this.pool.getClientId(),\n      Username: this.username,\n      ConfirmationCode: confirmationCode,\n      Password: newPassword,\n      ClientMetadata: clientMetadata\n    };\n    if (this.getUserContextData()) {\n      jsonReq.UserContextData = this.getUserContextData();\n    }\n    this.client.request('ConfirmForgotPassword', jsonReq, function (err) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      return callback.onSuccess('SUCCESS');\n    });\n  }\n\n  /**\n   * This is used to initiate an attribute confirmation request\n   * @param {string} attributeName User attribute that needs confirmation.\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {inputVerificationCode} callback.inputVerificationCode Called on success.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.getAttributeVerificationCode = function getAttributeVerificationCode(attributeName, callback, clientMetadata) {\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback.onFailure(new Error('User is not authenticated'));\n    }\n    this.client.request('GetUserAttributeVerificationCode', {\n      AttributeName: attributeName,\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n      ClientMetadata: clientMetadata\n    }, function (err, data) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      if (typeof callback.inputVerificationCode === 'function') {\n        return callback.inputVerificationCode(data);\n      }\n      return callback.onSuccess('SUCCESS');\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used to confirm an attribute using a confirmation code\n   * @param {string} attributeName Attribute being confirmed.\n   * @param {string} confirmationCode Code entered by user.\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {onSuccess<string>} callback.onSuccess Called on success.\n   * @returns {void}\n   */;\n  _proto.verifyAttribute = function verifyAttribute(attributeName, confirmationCode, callback) {\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback.onFailure(new Error('User is not authenticated'));\n    }\n    this.client.request('VerifyUserAttribute', {\n      AttributeName: attributeName,\n      Code: confirmationCode,\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n    }, function (err) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      return callback.onSuccess('SUCCESS');\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used to get the device information using the current device key\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {onSuccess<*>} callback.onSuccess Called on success with device data.\n   * @returns {void}\n   */;\n  _proto.getDevice = function getDevice(callback) {\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback.onFailure(new Error('User is not authenticated'));\n    }\n    this.client.request('GetDevice', {\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n      DeviceKey: this.deviceKey\n    }, function (err, data) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      return callback.onSuccess(data);\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used to forget a specific device\n   * @param {string} deviceKey Device key.\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {onSuccess<string>} callback.onSuccess Called on success.\n   * @returns {void}\n   */;\n  _proto.forgetSpecificDevice = function forgetSpecificDevice(deviceKey, callback) {\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback.onFailure(new Error('User is not authenticated'));\n    }\n    this.client.request('ForgetDevice', {\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n      DeviceKey: deviceKey\n    }, function (err) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      return callback.onSuccess('SUCCESS');\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used to forget the current device\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {onSuccess<string>} callback.onSuccess Called on success.\n   * @returns {void}\n   */;\n  _proto.forgetDevice = function forgetDevice(callback) {\n    var _this16 = this;\n    this.forgetSpecificDevice(this.deviceKey, {\n      onFailure: callback.onFailure,\n      onSuccess: function onSuccess(result) {\n        _this16.deviceKey = null;\n        _this16.deviceGroupKey = null;\n        _this16.randomPassword = null;\n        _this16.clearCachedDeviceKeyAndPassword();\n        return callback.onSuccess(result);\n      }\n    });\n  }\n\n  /**\n   * This is used to set the device status as remembered\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {onSuccess<string>} callback.onSuccess Called on success.\n   * @returns {void}\n   */;\n  _proto.setDeviceStatusRemembered = function setDeviceStatusRemembered(callback) {\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback.onFailure(new Error('User is not authenticated'));\n    }\n    this.client.request('UpdateDeviceStatus', {\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n      DeviceKey: this.deviceKey,\n      DeviceRememberedStatus: 'remembered'\n    }, function (err) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      return callback.onSuccess('SUCCESS');\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used to set the device status as not remembered\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {onSuccess<string>} callback.onSuccess Called on success.\n   * @returns {void}\n   */;\n  _proto.setDeviceStatusNotRemembered = function setDeviceStatusNotRemembered(callback) {\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback.onFailure(new Error('User is not authenticated'));\n    }\n    this.client.request('UpdateDeviceStatus', {\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n      DeviceKey: this.deviceKey,\n      DeviceRememberedStatus: 'not_remembered'\n    }, function (err) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      return callback.onSuccess('SUCCESS');\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used to list all devices for a user\n   *\n   * @param {int} limit the number of devices returned in a call\n   * @param {string | null} paginationToken the pagination token in case any was returned before\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {onSuccess<*>} callback.onSuccess Called on success with device list.\n   * @returns {void}\n   */;\n  _proto.listDevices = function listDevices(limit, paginationToken, callback) {\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback.onFailure(new Error('User is not authenticated'));\n    }\n    var requestParams = {\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n      Limit: limit\n    };\n    if (paginationToken) {\n      requestParams.PaginationToken = paginationToken;\n    }\n    this.client.request('ListDevices', requestParams, function (err, data) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      return callback.onSuccess(data);\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used to globally revoke all tokens issued to a user\n   * @param {object} callback Result callback map.\n   * @param {onFailure} callback.onFailure Called on any error.\n   * @param {onSuccess<string>} callback.onSuccess Called on success.\n   * @returns {void}\n   */;\n  _proto.globalSignOut = function globalSignOut(callback) {\n    var _this17 = this;\n    if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n      return callback.onFailure(new Error('User is not authenticated'));\n    }\n    this.client.request('GlobalSignOut', {\n      AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n    }, function (err) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      _this17.clearCachedUser();\n      return callback.onSuccess('SUCCESS');\n    });\n    return undefined;\n  }\n\n  /**\n   * This is used for the user to signOut of the application and clear the cached tokens.\n   * @returns {void}\n   */;\n  _proto.signOut = function signOut(revokeTokenCallback) {\n    var _this18 = this;\n    // If tokens won't be revoked, we just clean the client data.\n    if (!revokeTokenCallback || typeof revokeTokenCallback !== 'function') {\n      this.cleanClientData();\n      return;\n    }\n    this.getSession(function (error, _session) {\n      if (error) {\n        return revokeTokenCallback(error);\n      }\n      _this18.revokeTokens(function (err) {\n        _this18.cleanClientData();\n        revokeTokenCallback(err);\n      });\n    });\n  };\n  _proto.revokeTokens = function revokeTokens(revokeTokenCallback) {\n    if (revokeTokenCallback === void 0) {\n      revokeTokenCallback = function revokeTokenCallback() {};\n    }\n    if (typeof revokeTokenCallback !== 'function') {\n      throw new Error('Invalid revokeTokenCallback. It should be a function.');\n    }\n    var tokensToBeRevoked = [];\n    if (!this.signInUserSession) {\n      var error = new Error('User is not authenticated');\n      return revokeTokenCallback(error);\n    }\n    if (!this.signInUserSession.getAccessToken()) {\n      var _error = new Error('No Access token available');\n      return revokeTokenCallback(_error);\n    }\n    var refreshToken = this.signInUserSession.getRefreshToken().getToken();\n    var accessToken = this.signInUserSession.getAccessToken();\n    if (this.isSessionRevocable(accessToken)) {\n      if (refreshToken) {\n        return this.revokeToken({\n          token: refreshToken,\n          callback: revokeTokenCallback\n        });\n      }\n    }\n    revokeTokenCallback();\n  };\n  _proto.isSessionRevocable = function isSessionRevocable(token) {\n    if (token && typeof token.decodePayload === 'function') {\n      try {\n        var _token$decodePayload = token.decodePayload(),\n          origin_jti = _token$decodePayload.origin_jti;\n        return !!origin_jti;\n      } catch (err) {\n        // Nothing to do, token doesnt have origin_jti claim\n      }\n    }\n    return false;\n  };\n  _proto.cleanClientData = function cleanClientData() {\n    this.signInUserSession = null;\n    this.clearCachedUser();\n  };\n  _proto.revokeToken = function revokeToken(_ref2) {\n    var token = _ref2.token,\n      callback = _ref2.callback;\n    this.client.requestWithRetry('RevokeToken', {\n      Token: token,\n      ClientId: this.pool.getClientId()\n    }, function (err) {\n      if (err) {\n        return callback(err);\n      }\n      callback();\n    });\n  }\n\n  /**\n   * This is used by a user trying to select a given MFA\n   * @param {string} answerChallenge the mfa the user wants\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @returns {void}\n   */;\n  _proto.sendMFASelectionAnswer = function sendMFASelectionAnswer(answerChallenge, callback) {\n    var _this19 = this;\n    var challengeResponses = {};\n    challengeResponses.USERNAME = this.username;\n    challengeResponses.ANSWER = answerChallenge;\n    var jsonReq = {\n      ChallengeName: 'SELECT_MFA_TYPE',\n      ChallengeResponses: challengeResponses,\n      ClientId: this.pool.getClientId(),\n      Session: this.Session\n    };\n    if (this.getUserContextData()) {\n      jsonReq.UserContextData = this.getUserContextData();\n    }\n    this.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n      if (err) {\n        return callback.onFailure(err);\n      }\n      _this19.Session = data.Session;\n      if (answerChallenge === 'SMS_MFA') {\n        return callback.mfaRequired(data.ChallengeName, data.ChallengeParameters);\n      }\n      if (answerChallenge === 'SOFTWARE_TOKEN_MFA') {\n        return callback.totpRequired(data.ChallengeName, data.ChallengeParameters);\n      }\n      return undefined;\n    });\n  }\n\n  /**\n   * This returns the user context data for advanced security feature.\n   * @returns {string} the user context data from CognitoUserPool\n   */;\n  _proto.getUserContextData = function getUserContextData() {\n    var pool = this.pool;\n    return pool.getUserContextData(this.username);\n  }\n\n  /**\n   * This is used by an authenticated or a user trying to authenticate to associate a TOTP MFA\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @returns {void}\n   */;\n  _proto.associateSoftwareToken = function associateSoftwareToken(callback) {\n    var _this20 = this;\n    if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n      this.client.request('AssociateSoftwareToken', {\n        Session: this.Session\n      }, function (err, data) {\n        if (err) {\n          return callback.onFailure(err);\n        }\n        _this20.Session = data.Session;\n        return callback.associateSecretCode(data.SecretCode);\n      });\n    } else {\n      this.client.request('AssociateSoftwareToken', {\n        AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n      }, function (err, data) {\n        if (err) {\n          return callback.onFailure(err);\n        }\n        return callback.associateSecretCode(data.SecretCode);\n      });\n    }\n  }\n\n  /**\n   * This is used by an authenticated or a user trying to authenticate to verify a TOTP MFA\n   * @param {string} totpCode The MFA code entered by the user.\n   * @param {string} friendlyDeviceName The device name we are assigning to the device.\n   * @param {nodeCallback<string>} callback Called on success or error.\n   * @returns {void}\n   */;\n  _proto.verifySoftwareToken = function verifySoftwareToken(totpCode, friendlyDeviceName, callback) {\n    var _this21 = this;\n    if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n      this.client.request('VerifySoftwareToken', {\n        Session: this.Session,\n        UserCode: totpCode,\n        FriendlyDeviceName: friendlyDeviceName\n      }, function (err, data) {\n        if (err) {\n          return callback.onFailure(err);\n        }\n        _this21.Session = data.Session;\n        var challengeResponses = {};\n        challengeResponses.USERNAME = _this21.username;\n        var jsonReq = {\n          ChallengeName: 'MFA_SETUP',\n          ClientId: _this21.pool.getClientId(),\n          ChallengeResponses: challengeResponses,\n          Session: _this21.Session\n        };\n        if (_this21.getUserContextData()) {\n          jsonReq.UserContextData = _this21.getUserContextData();\n        }\n        _this21.client.request('RespondToAuthChallenge', jsonReq, function (errRespond, dataRespond) {\n          if (errRespond) {\n            return callback.onFailure(errRespond);\n          }\n          _this21.signInUserSession = _this21.getCognitoUserSession(dataRespond.AuthenticationResult);\n          _this21.cacheTokens();\n          return callback.onSuccess(_this21.signInUserSession);\n        });\n        return undefined;\n      });\n    } else {\n      this.client.request('VerifySoftwareToken', {\n        AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n        UserCode: totpCode,\n        FriendlyDeviceName: friendlyDeviceName\n      }, function (err, data) {\n        if (err) {\n          return callback.onFailure(err);\n        }\n        return callback.onSuccess(data);\n      });\n    }\n  };\n  return CognitoUser;\n}();\nexport { CognitoUser as default };","import { getUserAgent } from './Platform';\nimport { AUTH_CATEGORY } from './Platform/constants';\n\n// constructor\nfunction UserAgent() {}\n// public\nUserAgent.prototype.userAgent = getUserAgent();\nexport var appendToCognitoUserAgent = function appendToCognitoUserAgent(content) {\n  if (!content) {\n    return;\n  }\n  if (UserAgent.prototype.userAgent && !UserAgent.prototype.userAgent.includes(content)) {\n    UserAgent.prototype.userAgent = UserAgent.prototype.userAgent.concat(' ', content);\n  }\n  if (!UserAgent.prototype.userAgent || UserAgent.prototype.userAgent === '') {\n    UserAgent.prototype.userAgent = content;\n  }\n};\nexport var addAuthCategoryToCognitoUserAgent = function addAuthCategoryToCognitoUserAgent() {\n  UserAgent.category = AUTH_CATEGORY;\n};\nexport var addFrameworkToCognitoUserAgent = function addFrameworkToCognitoUserAgent(framework) {\n  UserAgent.framework = framework;\n};\nexport var getAmplifyUserAgent = function getAmplifyUserAgent(action) {\n  var uaCategoryAction = UserAgent.category ? \" \" + UserAgent.category : '';\n  var uaFramework = UserAgent.framework ? \" framework/\" + UserAgent.framework : '';\n  var userAgent = \"\" + UserAgent.prototype.userAgent + uaCategoryAction + uaFramework;\n  return userAgent;\n};\n\n// class for defining the amzn user-agent\nexport default UserAgent;","function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }\nfunction _wrapNativeSuper(t) { var r = \"function\" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }\nfunction _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf(\"[native code]\"); } catch (n) { return \"function\" == typeof t; } }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nimport 'isomorphic-unfetch';\nimport { getAmplifyUserAgent } from './UserAgent';\nvar CognitoError = /*#__PURE__*/function (_Error) {\n  function CognitoError(message, code, name, statusCode) {\n    var _this;\n    _this = _Error.call(this, message) || this;\n    _this.code = code;\n    _this.name = name;\n    _this.statusCode = statusCode;\n    return _this;\n  }\n  _inheritsLoose(CognitoError, _Error);\n  return CognitoError;\n}(/*#__PURE__*/_wrapNativeSuper(Error));\n/** @class */\nvar Client = /*#__PURE__*/function () {\n  /**\n   * Constructs a new AWS Cognito Identity Provider client object\n   * @param {string} region AWS region\n   * @param {string} endpoint endpoint\n   * @param {object} fetchOptions options for fetch API (only credentials is supported)\n   */\n  function Client(region, endpoint, fetchOptions) {\n    this.endpoint = endpoint || \"https://cognito-idp.\" + region + \".amazonaws.com/\";\n    var _ref = fetchOptions || {},\n      credentials = _ref.credentials;\n    this.fetchOptions = credentials ? {\n      credentials: credentials\n    } : {};\n  }\n\n  /**\n   * Makes an unauthenticated request on AWS Cognito Identity Provider API\n   * using fetch\n   * @param {string} operation API operation\n   * @param {object} params Input parameters\n   * @returns Promise<object>\n   */\n  var _proto = Client.prototype;\n  _proto.promisifyRequest = function promisifyRequest(operation, params) {\n    var _this2 = this;\n    return new Promise(function (resolve, reject) {\n      _this2.request(operation, params, function (err, data) {\n        if (err) {\n          reject(new CognitoError(err.message, err.code, err.name, err.statusCode));\n        } else {\n          resolve(data);\n        }\n      });\n    });\n  };\n  _proto.requestWithRetry = function requestWithRetry(operation, params, callback) {\n    var _this3 = this;\n    var MAX_DELAY_IN_MILLIS = 5 * 1000;\n    jitteredExponentialRetry(function (p) {\n      return new Promise(function (res, rej) {\n        _this3.request(operation, p, function (error, result) {\n          if (error) {\n            rej(error);\n          } else {\n            res(result);\n          }\n        });\n      });\n    }, [params], MAX_DELAY_IN_MILLIS).then(function (result) {\n      return callback(null, result);\n    })[\"catch\"](function (error) {\n      return callback(error);\n    });\n  }\n\n  /**\n   * Makes an unauthenticated request on AWS Cognito Identity Provider API\n   * using fetch\n   * @param {string} operation API operation\n   * @param {object} params Input parameters\n   * @param {function} callback Callback called when a response is returned\n   * @returns {void}\n   */;\n  _proto.request = function request(operation, params, callback) {\n    var headers = {\n      'Content-Type': 'application/x-amz-json-1.1',\n      'X-Amz-Target': \"AWSCognitoIdentityProviderService.\" + operation,\n      'X-Amz-User-Agent': getAmplifyUserAgent(),\n      'Cache-Control': 'no-store'\n    };\n    var options = Object.assign({}, this.fetchOptions, {\n      headers: headers,\n      method: 'POST',\n      mode: 'cors',\n      body: JSON.stringify(params)\n    });\n    var response;\n    var responseJsonData;\n    fetch(this.endpoint, options).then(function (resp) {\n      response = resp;\n      return resp;\n    }, function (err) {\n      // If error happens here, the request failed\n      // if it is TypeError throw network error\n      if (err instanceof TypeError) {\n        throw new Error('Network error');\n      }\n      throw err;\n    }).then(function (resp) {\n      return resp.json()[\"catch\"](function () {\n        return {};\n      });\n    }).then(function (data) {\n      // return parsed body stream\n      if (response.ok) return callback(null, data);\n      responseJsonData = data;\n\n      // Taken from aws-sdk-js/lib/protocol/json.js\n      // eslint-disable-next-line no-underscore-dangle\n      var code = (data.__type || data.code).split('#').pop();\n      var error = new Error(data.message || data.Message || null);\n      error.name = code;\n      error.code = code;\n      return callback(error);\n    })[\"catch\"](function (err) {\n      // first check if we have a service error\n      if (response && response.headers && response.headers.get('x-amzn-errortype')) {\n        try {\n          var code = response.headers.get('x-amzn-errortype').split(':')[0];\n          var error = new Error(response.status ? response.status.toString() : null);\n          error.code = code;\n          error.name = code;\n          error.statusCode = response.status;\n          return callback(error);\n        } catch (ex) {\n          return callback(err);\n        }\n        // otherwise check if error is Network error\n      } else if (err instanceof Error && err.message === 'Network error') {\n        err.code = 'NetworkError';\n      }\n      return callback(err);\n    });\n  };\n  return Client;\n}();\nexport { Client as default };\nvar logger = {\n  debug: function debug() {\n    // Intentionally blank. This package doesn't have logging\n  }\n};\n\n/**\n * For now, all errors are retryable.\n */\nvar NonRetryableError = /*#__PURE__*/function (_Error2) {\n  function NonRetryableError(message) {\n    var _this4;\n    _this4 = _Error2.call(this, message) || this;\n    _this4.nonRetryable = true;\n    return _this4;\n  }\n  _inheritsLoose(NonRetryableError, _Error2);\n  return NonRetryableError;\n}(/*#__PURE__*/_wrapNativeSuper(Error));\nvar isNonRetryableError = function isNonRetryableError(obj) {\n  var key = 'nonRetryable';\n  return obj && obj[key];\n};\nfunction retry(functionToRetry, args, delayFn, attempt) {\n  if (attempt === void 0) {\n    attempt = 1;\n  }\n  if (typeof functionToRetry !== 'function') {\n    throw Error('functionToRetry must be a function');\n  }\n  logger.debug(functionToRetry.name + \" attempt #\" + attempt + \" with args: \" + JSON.stringify(args));\n  return functionToRetry.apply(void 0, args)[\"catch\"](function (err) {\n    logger.debug(\"error on \" + functionToRetry.name, err);\n    if (isNonRetryableError(err)) {\n      logger.debug(functionToRetry.name + \" non retryable error\", err);\n      throw err;\n    }\n    var retryIn = delayFn(attempt, args, err);\n    logger.debug(functionToRetry.name + \" retrying in \" + retryIn + \" ms\");\n    if (retryIn !== false) {\n      return new Promise(function (res) {\n        return setTimeout(res, retryIn);\n      }).then(function () {\n        return retry(functionToRetry, args, delayFn, attempt + 1);\n      });\n    } else {\n      throw err;\n    }\n  });\n}\nfunction jitteredBackoff(maxDelayMs) {\n  var BASE_TIME_MS = 100;\n  var JITTER_FACTOR = 100;\n  return function (attempt) {\n    var delay = Math.pow(2, attempt) * BASE_TIME_MS + JITTER_FACTOR * Math.random();\n    return delay > maxDelayMs ? false : delay;\n  };\n}\nvar MAX_DELAY_MS = 5 * 60 * 1000;\nfunction jitteredExponentialRetry(functionToRetry, args, maxDelayMs) {\n  if (maxDelayMs === void 0) {\n    maxDelayMs = MAX_DELAY_MS;\n  }\n  return retry(functionToRetry, args, jitteredBackoff(maxDelayMs));\n}","/*!\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport Client from './Client';\nimport CognitoUser from './CognitoUser';\nimport StorageHelper from './StorageHelper';\nvar USER_POOL_ID_MAX_LENGTH = 55;\n\n/** @class */\nvar CognitoUserPool = /*#__PURE__*/function () {\n  /**\n   * Constructs a new CognitoUserPool object\n   * @param {object} data Creation options.\n   * @param {string} data.UserPoolId Cognito user pool id.\n   * @param {string} data.ClientId User pool application client id.\n   * @param {string} data.endpoint Optional custom service endpoint.\n   * @param {object} data.fetchOptions Optional options for fetch API.\n   *        (only credentials option is supported)\n   * @param {object} data.Storage Optional storage object.\n   * @param {boolean} data.AdvancedSecurityDataCollectionFlag Optional:\n   *        boolean flag indicating if the data collection is enabled\n   *        to support cognito advanced security features. By default, this\n   *        flag is set to true.\n   */\n  function CognitoUserPool(data, wrapRefreshSessionCallback) {\n    var _ref = data || {},\n      UserPoolId = _ref.UserPoolId,\n      ClientId = _ref.ClientId,\n      endpoint = _ref.endpoint,\n      fetchOptions = _ref.fetchOptions,\n      AdvancedSecurityDataCollectionFlag = _ref.AdvancedSecurityDataCollectionFlag;\n    if (!UserPoolId || !ClientId) {\n      throw new Error('Both UserPoolId and ClientId are required.');\n    }\n    if (UserPoolId.length > USER_POOL_ID_MAX_LENGTH || !/^[\\w-]+_[0-9a-zA-Z]+$/.test(UserPoolId)) {\n      throw new Error('Invalid UserPoolId format.');\n    }\n    var region = UserPoolId.split('_')[0];\n    this.userPoolId = UserPoolId;\n    this.clientId = ClientId;\n    this.client = new Client(region, endpoint, fetchOptions);\n\n    /**\n     * By default, AdvancedSecurityDataCollectionFlag is set to true,\n     * if no input value is provided.\n     */\n    this.advancedSecurityDataCollectionFlag = AdvancedSecurityDataCollectionFlag !== false;\n    this.storage = data.Storage || new StorageHelper().getStorage();\n    if (wrapRefreshSessionCallback) {\n      this.wrapRefreshSessionCallback = wrapRefreshSessionCallback;\n    }\n  }\n\n  /**\n   * @returns {string} the user pool id\n   */\n  var _proto = CognitoUserPool.prototype;\n  _proto.getUserPoolId = function getUserPoolId() {\n    return this.userPoolId;\n  }\n\n  /**\n   * @returns {string} the user pool name\n   */;\n  _proto.getUserPoolName = function getUserPoolName() {\n    return this.getUserPoolId().split('_')[1];\n  }\n\n  /**\n   * @returns {string} the client id\n   */;\n  _proto.getClientId = function getClientId() {\n    return this.clientId;\n  }\n\n  /**\n   * @typedef {object} SignUpResult\n   * @property {CognitoUser} user New user.\n   * @property {bool} userConfirmed If the user is already confirmed.\n   */\n  /**\n   * method for signing up a user\n   * @param {string} username User's username.\n   * @param {string} password Plain-text initial password entered by user.\n   * @param {(AttributeArg[])=} userAttributes New user attributes.\n   * @param {(AttributeArg[])=} validationData Application metadata.\n   * @param {(AttributeArg[])=} clientMetadata Client metadata.\n   * @param {nodeCallback<SignUpResult>} callback Called on error or with the new user.\n   * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n   * @returns {void}\n   */;\n  _proto.signUp = function signUp(username, password, userAttributes, validationData, callback, clientMetadata) {\n    var _this = this;\n    var jsonReq = {\n      ClientId: this.clientId,\n      Username: username,\n      Password: password,\n      UserAttributes: userAttributes,\n      ValidationData: validationData,\n      ClientMetadata: clientMetadata\n    };\n    if (this.getUserContextData(username)) {\n      jsonReq.UserContextData = this.getUserContextData(username);\n    }\n    this.client.request('SignUp', jsonReq, function (err, data) {\n      if (err) {\n        return callback(err, null);\n      }\n      var cognitoUser = {\n        Username: username,\n        Pool: _this,\n        Storage: _this.storage\n      };\n      var returnData = {\n        user: new CognitoUser(cognitoUser),\n        userConfirmed: data.UserConfirmed,\n        userSub: data.UserSub,\n        codeDeliveryDetails: data.CodeDeliveryDetails\n      };\n      return callback(null, returnData);\n    });\n  }\n\n  /**\n   * method for getting the current user of the application from the local storage\n   *\n   * @returns {CognitoUser} the user retrieved from storage\n   */;\n  _proto.getCurrentUser = function getCurrentUser() {\n    var lastUserKey = \"CognitoIdentityServiceProvider.\" + this.clientId + \".LastAuthUser\";\n    var lastAuthUser = this.storage.getItem(lastUserKey);\n    if (lastAuthUser) {\n      var cognitoUser = {\n        Username: lastAuthUser,\n        Pool: this,\n        Storage: this.storage\n      };\n      return new CognitoUser(cognitoUser);\n    }\n    return null;\n  }\n\n  /**\n   * This method returns the encoded data string used for cognito advanced security feature.\n   * This would be generated only when developer has included the JS used for collecting the\n   * data on their client. Please refer to documentation to know more about using AdvancedSecurity\n   * features\n   * @param {string} username the username for the context data\n   * @returns {string} the user context data\n   **/;\n  _proto.getUserContextData = function getUserContextData(username) {\n    if (typeof AmazonCognitoAdvancedSecurityData === 'undefined') {\n      return undefined;\n    }\n    /* eslint-disable */\n    var amazonCognitoAdvancedSecurityDataConst = AmazonCognitoAdvancedSecurityData;\n    /* eslint-enable */\n\n    if (this.advancedSecurityDataCollectionFlag) {\n      var advancedSecurityData = amazonCognitoAdvancedSecurityDataConst.getData(username, this.userPoolId, this.clientId);\n      if (advancedSecurityData) {\n        var userContextData = {\n          EncodedData: advancedSecurityData\n        };\n        return userContextData;\n      }\n    }\n    return {};\n  };\n  return CognitoUserPool;\n}();\nexport { CognitoUserPool as default };","import * as Cookies from 'js-cookie';\n\n/** @class */\nvar CookieStorage = /*#__PURE__*/function () {\n  /**\n   * Constructs a new CookieStorage object\n   * @param {object} data Creation options.\n   * @param {string} data.domain Cookies domain (default: domain of the page\n   * \t\t\t\twhere the cookie was created, excluding subdomains)\n   * @param {string} data.path Cookies path (default: '/')\n   * @param {integer} data.expires Cookie expiration (in days, default: 365)\n   * @param {boolean} data.secure Cookie secure flag (default: true)\n   * @param {string} data.sameSite Cookie request behavior (default: null)\n   */\n  function CookieStorage(data) {\n    if (data === void 0) {\n      data = {};\n    }\n    if (data.domain) {\n      this.domain = data.domain;\n    }\n    if (data.path) {\n      this.path = data.path;\n    } else {\n      this.path = '/';\n    }\n    if (Object.prototype.hasOwnProperty.call(data, 'expires')) {\n      this.expires = data.expires;\n    } else {\n      this.expires = 365;\n    }\n    if (Object.prototype.hasOwnProperty.call(data, 'secure')) {\n      this.secure = data.secure;\n    } else {\n      this.secure = true;\n    }\n    if (Object.prototype.hasOwnProperty.call(data, 'sameSite')) {\n      if (!['strict', 'lax', 'none'].includes(data.sameSite)) {\n        throw new Error('The sameSite value of cookieStorage must be \"lax\", \"strict\" or \"none\".');\n      }\n      if (data.sameSite === 'none' && !this.secure) {\n        throw new Error('sameSite = None requires the Secure attribute in latest browser versions.');\n      }\n      this.sameSite = data.sameSite;\n    } else {\n      this.sameSite = null;\n    }\n  }\n\n  /**\n   * This is used to set a specific item in storage\n   * @param {string} key - the key for the item\n   * @param {object} value - the value\n   * @returns {string} value that was set\n   */\n  var _proto = CookieStorage.prototype;\n  _proto.setItem = function setItem(key, value) {\n    var options = {\n      path: this.path,\n      expires: this.expires,\n      domain: this.domain,\n      secure: this.secure\n    };\n    if (this.sameSite) {\n      options.sameSite = this.sameSite;\n    }\n    Cookies.set(key, value, options);\n    return Cookies.get(key);\n  }\n\n  /**\n   * This is used to get a specific key from storage\n   * @param {string} key - the key for the item\n   * This is used to clear the storage\n   * @returns {string} the data item\n   */;\n  _proto.getItem = function getItem(key) {\n    return Cookies.get(key);\n  }\n\n  /**\n   * This is used to remove an item from storage\n   * @param {string} key - the key being set\n   * @returns {string} value - value that was deleted\n   */;\n  _proto.removeItem = function removeItem(key) {\n    var options = {\n      path: this.path,\n      expires: this.expires,\n      domain: this.domain,\n      secure: this.secure\n    };\n    if (this.sameSite) {\n      options.sameSite = this.sameSite;\n    }\n    return Cookies.remove(key, options);\n  }\n\n  /**\n   * This is used to clear the storage of optional\n   * items that were previously set\n   * @returns {} an empty object\n   */;\n  _proto.clear = function clear() {\n    var cookies = Cookies.get();\n    var numKeys = Object.keys(cookies).length;\n    for (var index = 0; index < numKeys; ++index) {\n      this.removeItem(Object.keys(cookies)[index]);\n    }\n    return {};\n  };\n  return CookieStorage;\n}();\nexport { CookieStorage as default };","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nconst SELF = '_self';\n\nexport const launchUri = (url: string) => {\n\tconst windowProxy = window.open(url, SELF);\n\tif (windowProxy) {\n\t\treturn Promise.resolve(windowProxy);\n\t} else {\n\t\treturn Promise.reject();\n\t}\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * This Symbol is used to reference an internal-only PubSub provider that\n * is used for AppSync/GraphQL subscriptions in the API category.\n */\nvar hasSymbol = typeof Symbol !== 'undefined' && typeof Symbol.for === 'function';\nexport var INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER = hasSymbol\n    ? Symbol.for('INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER')\n    : '@@INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER';\nexport var USER_AGENT_HEADER = 'x-amz-user-agent';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { parse } from 'url'; // Used for OAuth parsing of Cognito Hosted UI\nimport { launchUri } from './urlOpener';\nimport * as oAuthStorage from './oauthStorage';\nimport { Buffer } from 'buffer';\n\nimport {\n\tOAuthOpts,\n\tisCognitoHostedOpts,\n\tCognitoHostedUIIdentityProvider,\n} from '../types/Auth';\n\nimport {\n\tAuthAction,\n\tCategory,\n\tConsoleLogger as Logger,\n\tCustomUserAgentDetails,\n\tgetAmplifyUserAgent,\n\tHub,\n\turlSafeEncode,\n\tUSER_AGENT_HEADER,\n} from '@aws-amplify/core';\n\nimport { Sha256 } from '@aws-crypto/sha256-js';\n\nconst AMPLIFY_SYMBOL = (\n\ttypeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n\t\t? Symbol.for('amplify_default')\n\t\t: '@@amplify_default'\n) as Symbol;\n\nconst dispatchAuthEvent = (event: string, data: any, message: string) => {\n\tHub.dispatch('auth', { event, data, message }, 'Auth', AMPLIFY_SYMBOL);\n};\n\nconst logger = new Logger('OAuth');\n\nexport default class OAuth {\n\tprivate _urlOpener;\n\tprivate _config;\n\tprivate _cognitoClientId;\n\tprivate _scopes;\n\n\tconstructor({\n\t\tconfig,\n\t\tcognitoClientId,\n\t\tscopes = [],\n\t}: {\n\t\tscopes: string[];\n\t\tconfig: OAuthOpts;\n\t\tcognitoClientId: string;\n\t}) {\n\t\tthis._urlOpener = config.urlOpener || launchUri;\n\t\tthis._config = config;\n\t\tthis._cognitoClientId = cognitoClientId;\n\n\t\tif (!this.isValidScopes(scopes))\n\t\t\tthrow Error('scopes must be a String Array');\n\t\tthis._scopes = scopes;\n\t}\n\n\tprivate isValidScopes(scopes: string[]) {\n\t\treturn (\n\t\t\tArray.isArray(scopes) && scopes.every(scope => typeof scope === 'string')\n\t\t);\n\t}\n\n\tpublic oauthSignIn(\n\t\tresponseType = 'code',\n\t\tdomain: string,\n\t\tredirectSignIn: string,\n\t\tclientId: string,\n\t\tprovider:\n\t\t\t| CognitoHostedUIIdentityProvider\n\t\t\t| string = CognitoHostedUIIdentityProvider.Cognito,\n\t\tcustomState?: string\n\t) {\n\t\tconst generatedState = this._generateState(32);\n\n\t\t/* encodeURIComponent is not URL safe, use urlSafeEncode instead. Cognito \n\t\tsingle-encodes/decodes url on first sign in and double-encodes/decodes url\n\t\twhen user already signed in. Using encodeURIComponent, Base32, Base64 add \n\t\tcharacters % or = which on further encoding becomes unsafe. '=' create issue \n\t\tfor parsing query params. \n\t\tRefer: https://github.com/aws-amplify/amplify-js/issues/5218 */\n\t\tconst state = customState\n\t\t\t? `${generatedState}-${urlSafeEncode(customState)}`\n\t\t\t: generatedState;\n\n\t\toAuthStorage.setState(state);\n\n\t\tconst pkce_key = this._generateRandom(128);\n\t\toAuthStorage.setPKCE(pkce_key);\n\n\t\tconst code_challenge = this._generateChallenge(pkce_key);\n\t\tconst code_challenge_method = 'S256';\n\n\t\tconst scopesString = this._scopes.join(' ');\n\n\t\tconst queryString = Object.entries({\n\t\t\tredirect_uri: redirectSignIn,\n\t\t\tresponse_type: responseType,\n\t\t\tclient_id: clientId,\n\t\t\tidentity_provider: provider,\n\t\t\tscope: scopesString,\n\t\t\tstate,\n\t\t\t...(responseType === 'code' ? { code_challenge } : {}),\n\t\t\t...(responseType === 'code' ? { code_challenge_method } : {}),\n\t\t})\n\t\t\t.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)\n\t\t\t.join('&');\n\n\t\tconst URL = `https://${domain}/oauth2/authorize?${queryString}`;\n\t\tlogger.debug(`Redirecting to ${URL}`);\n\t\tthis._urlOpener(URL, redirectSignIn);\n\t}\n\n\tprivate async _handleCodeFlow(currentUrl: string) {\n\t\t/* Convert URL into an object with parameters as keys\n    { redirect_uri: 'http://localhost:3000/', response_type: 'code', ...} */\n\t\tconst { code } = (parse(currentUrl).query || '')\n\t\t\t.split('&')\n\t\t\t.map(pairings => pairings.split('='))\n\t\t\t.reduce((accum, [k, v]) => ({ ...accum, [k]: v }), { code: undefined });\n\n\t\tconst currentUrlPathname = parse(currentUrl).pathname || '/';\n\t\tconst redirectSignInPathname =\n\t\t\tparse(this._config.redirectSignIn).pathname || '/';\n\n\t\tif (!code || currentUrlPathname !== redirectSignInPathname) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst oAuthTokenEndpoint =\n\t\t\t'https://' + this._config.domain + '/oauth2/token';\n\n\t\tdispatchAuthEvent(\n\t\t\t'codeFlow',\n\t\t\t{},\n\t\t\t`Retrieving tokens from ${oAuthTokenEndpoint}`\n\t\t);\n\n\t\tconst client_id = isCognitoHostedOpts(this._config)\n\t\t\t? this._cognitoClientId\n\t\t\t: this._config.clientID;\n\n\t\tconst redirect_uri = isCognitoHostedOpts(this._config)\n\t\t\t? this._config.redirectSignIn\n\t\t\t: this._config.redirectUri;\n\n\t\tconst code_verifier = oAuthStorage.getPKCE();\n\n\t\tconst oAuthTokenBody = {\n\t\t\tgrant_type: 'authorization_code',\n\t\t\tcode,\n\t\t\tclient_id,\n\t\t\tredirect_uri,\n\t\t\t...(code_verifier ? { code_verifier } : {}),\n\t\t};\n\n\t\tlogger.debug(\n\t\t\t`Calling token endpoint: ${oAuthTokenEndpoint} with`,\n\t\t\toAuthTokenBody\n\t\t);\n\n\t\tconst body = Object.entries(oAuthTokenBody)\n\t\t\t.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)\n\t\t\t.join('&');\n\n\t\tconst customUserAgentDetails: CustomUserAgentDetails = {\n\t\t\tcategory: Category.Auth,\n\t\t\taction: AuthAction.FederatedSignIn,\n\t\t};\n\n\t\tconst { access_token, refresh_token, id_token, error } = await (\n\t\t\t(await fetch(oAuthTokenEndpoint, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t\t\t[USER_AGENT_HEADER]: getAmplifyUserAgent(customUserAgentDetails),\n\t\t\t\t},\n\t\t\t\tbody,\n\t\t\t})) as any\n\t\t).json();\n\n\t\tif (error) {\n\t\t\tthrow new Error(error);\n\t\t}\n\n\t\treturn {\n\t\t\taccessToken: access_token,\n\t\t\trefreshToken: refresh_token,\n\t\t\tidToken: id_token,\n\t\t};\n\t}\n\n\tprivate async _handleImplicitFlow(currentUrl: string) {\n\t\t// hash is `null` if `#` doesn't exist on URL\n\t\tconst { id_token, access_token } = (parse(currentUrl).hash || '#')\n\t\t\t.substr(1) // Remove # from returned code\n\t\t\t.split('&')\n\t\t\t.map(pairings => pairings.split('='))\n\t\t\t.reduce((accum, [k, v]) => ({ ...accum, [k]: v }), {\n\t\t\t\tid_token: undefined,\n\t\t\t\taccess_token: undefined,\n\t\t\t});\n\n\t\tdispatchAuthEvent('implicitFlow', {}, `Got tokens from ${currentUrl}`);\n\t\tlogger.debug(`Retrieving implicit tokens from ${currentUrl} with`);\n\n\t\treturn {\n\t\t\taccessToken: access_token,\n\t\t\tidToken: id_token,\n\t\t\trefreshToken: null,\n\t\t};\n\t}\n\n\tpublic async handleAuthResponse(currentUrl?: string) {\n\t\ttry {\n\t\t\tconst urlParams = currentUrl\n\t\t\t\t? ({\n\t\t\t\t\t\t...(parse(currentUrl).hash || '#')\n\t\t\t\t\t\t\t.substr(1)\n\t\t\t\t\t\t\t.split('&')\n\t\t\t\t\t\t\t.map(entry => entry.split('='))\n\t\t\t\t\t\t\t.reduce((acc, [k, v]) => ((acc[k] = v), acc), {}),\n\t\t\t\t\t\t...(parse(currentUrl).query || '')\n\t\t\t\t\t\t\t.split('&')\n\t\t\t\t\t\t\t.map(entry => entry.split('='))\n\t\t\t\t\t\t\t.reduce((acc, [k, v]) => ((acc[k] = v), acc), {}),\n\t\t\t\t  } as any)\n\t\t\t\t: {};\n\t\t\tconst { error, error_description } = urlParams;\n\n\t\t\tif (error) {\n\t\t\t\tthrow new Error(error_description);\n\t\t\t}\n\n\t\t\tconst state: string = this._validateState(urlParams);\n\n\t\t\tlogger.debug(\n\t\t\t\t`Starting ${this._config.responseType} flow with ${currentUrl}`\n\t\t\t);\n\t\t\tif (this._config.responseType === 'code') {\n\t\t\t\treturn { ...(await this._handleCodeFlow(currentUrl)), state };\n\t\t\t} else {\n\t\t\t\treturn { ...(await this._handleImplicitFlow(currentUrl)), state };\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tlogger.debug(`Error handling auth response.`, e);\n\t\t\tthrow e;\n\t\t}\n\t}\n\n\tprivate _validateState(urlParams: any): string {\n\t\tif (!urlParams) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst savedState = oAuthStorage.getState();\n\t\tconst { state: returnedState } = urlParams;\n\n\t\t// This is because savedState only exists if the flow was initiated by Amplify\n\t\tif (savedState && savedState !== returnedState) {\n\t\t\tthrow new Error('Invalid state in OAuth flow');\n\t\t}\n\t\treturn returnedState;\n\t}\n\n\tpublic async signOut() {\n\t\tlet oAuthLogoutEndpoint = 'https://' + this._config.domain + '/logout?';\n\n\t\tconst client_id = isCognitoHostedOpts(this._config)\n\t\t\t? this._cognitoClientId\n\t\t\t: this._config.oauth.clientID;\n\n\t\tconst signout_uri = isCognitoHostedOpts(this._config)\n\t\t\t? this._config.redirectSignOut\n\t\t\t: this._config.returnTo;\n\n\t\toAuthLogoutEndpoint += Object.entries({\n\t\t\tclient_id,\n\t\t\tlogout_uri: encodeURIComponent(signout_uri),\n\t\t})\n\t\t\t.map(([k, v]) => `${k}=${v}`)\n\t\t\t.join('&');\n\n\t\tdispatchAuthEvent(\n\t\t\t'oAuthSignOut',\n\t\t\t{ oAuth: 'signOut' },\n\t\t\t`Signing out from ${oAuthLogoutEndpoint}`\n\t\t);\n\t\tlogger.debug(`Signing out from ${oAuthLogoutEndpoint}`);\n\n\t\treturn this._urlOpener(oAuthLogoutEndpoint, signout_uri);\n\t}\n\n\tprivate _generateState(length: number) {\n\t\tlet result = '';\n\t\tlet i = length;\n\t\tconst chars =\n\t\t\t'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\t\tfor (; i > 0; --i)\n\t\t\tresult += chars[Math.round(Math.random() * (chars.length - 1))];\n\t\treturn result;\n\t}\n\n\tprivate _generateChallenge(code: string) {\n\t\tconst awsCryptoHash = new Sha256();\n\t\tawsCryptoHash.update(code);\n\n\t\tconst resultFromAWSCrypto = awsCryptoHash.digestSync();\n\t\tconst b64 = Buffer.from(resultFromAWSCrypto).toString('base64');\n\t\tconst base64URLFromAWSCrypto = this._base64URL(b64);\n\n\t\treturn base64URLFromAWSCrypto;\n\t}\n\n\tprivate _base64URL(string) {\n\t\treturn string.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n\t}\n\n\tprivate _generateRandom(size: number) {\n\t\tconst CHARSET =\n\t\t\t'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';\n\t\tconst buffer = new Uint8Array(size);\n\t\tif (typeof window !== 'undefined' && !!window.crypto) {\n\t\t\twindow.crypto.getRandomValues(buffer);\n\t\t} else {\n\t\t\tfor (let i = 0; i < size; i += 1) {\n\t\t\t\tbuffer[i] = (Math.random() * CHARSET.length) | 0;\n\t\t\t}\n\t\t}\n\t\treturn this._bufferToString(buffer);\n\t}\n\n\tprivate _bufferToString(buffer: Uint8Array) {\n\t\tconst CHARSET =\n\t\t\t'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\t\tconst state = [];\n\t\tfor (let i = 0; i < buffer.byteLength; i += 1) {\n\t\t\tconst index = buffer[i] % CHARSET.length;\n\t\t\tstate.push(CHARSET[index]);\n\t\t}\n\t\treturn state.join('');\n\t}\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function urlSafeEncode(str) {\n    return str\n        .split('')\n        .map(function (char) {\n        return char\n            .charCodeAt(0)\n            .toString(16)\n            .padStart(2, '0');\n    })\n        .join('');\n}\nexport function urlSafeDecode(hex) {\n    return hex\n        .match(/.{2}/g)\n        .map(function (char) { return String.fromCharCode(parseInt(char, 16)); })\n        .join('');\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport const setState = (state: string) => {\n\twindow.sessionStorage.setItem('oauth_state', state);\n};\n\nexport const getState = () => {\n\tconst oauth_state = window.sessionStorage.getItem('oauth_state');\n\twindow.sessionStorage.removeItem('oauth_state');\n\treturn oauth_state;\n};\n\nexport const setPKCE = (private_key: string) => {\n\twindow.sessionStorage.setItem('ouath_pkce_key', private_key);\n};\n\nexport const getPKCE = () => {\n\tconst ouath_pkce_key = window.sessionStorage.getItem('ouath_pkce_key');\n\twindow.sessionStorage.removeItem('ouath_pkce_key');\n\treturn ouath_pkce_key;\n};\n\nexport const clearAll = () => {\n\twindow.sessionStorage.removeItem('ouath_pkce_key');\n\twindow.sessionStorage.removeItem('oauth_state');\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport enum AuthErrorStrings {\n\tDEFAULT_MSG = 'Authentication Error',\n\tEMPTY_EMAIL = 'Email cannot be empty',\n\tEMPTY_PHONE = 'Phone number cannot be empty',\n\tEMPTY_USERNAME = 'Username cannot be empty',\n\tINVALID_USERNAME = 'The username should either be a string or one of the sign in types',\n\tEMPTY_PASSWORD = 'Password cannot be empty',\n\tEMPTY_CODE = 'Confirmation code cannot be empty',\n\tSIGN_UP_ERROR = 'Error creating account',\n\tNO_MFA = 'No valid MFA method provided',\n\tINVALID_MFA = 'Invalid MFA type',\n\tEMPTY_CHALLENGE = 'Challenge response cannot be empty',\n\tNO_USER_SESSION = 'Failed to get the session because the user is empty',\n\tNETWORK_ERROR = 'Network Error',\n\tDEVICE_CONFIG = 'Device tracking has not been configured in this User Pool',\n\tAUTOSIGNIN_ERROR = 'Please use your credentials to sign in',\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AuthErrorMessages, AuthErrorTypes } from './types';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { AuthErrorStrings } from './common/AuthErrorStrings';\n\nconst logger = new Logger('AuthError');\n\nexport class AuthError extends Error {\n\tpublic log: string;\n\tconstructor(type: AuthErrorTypes) {\n\t\tconst { message, log } = authErrorMessages[type];\n\t\tsuper(message);\n\n\t\t// Hack for making the custom error class work when transpiled to es5\n\t\t// TODO: Delete the following 2 lines after we change the build target to >= es2015\n\t\tthis.constructor = AuthError;\n\t\tObject.setPrototypeOf(this, AuthError.prototype);\n\n\t\tthis.name = 'AuthError';\n\t\tthis.log = log || message;\n\n\t\tlogger.error(this.log);\n\t}\n}\n\nexport class NoUserPoolError extends AuthError {\n\tconstructor(type: AuthErrorTypes) {\n\t\tsuper(type);\n\n\t\t// Hack for making the custom error class work when transpiled to es5\n\t\t// TODO: Delete the following 2 lines after we change the build target to >= es2015\n\t\tthis.constructor = NoUserPoolError;\n\t\tObject.setPrototypeOf(this, NoUserPoolError.prototype);\n\n\t\tthis.name = 'NoUserPoolError';\n\t}\n}\n\nexport const authErrorMessages: AuthErrorMessages = {\n\tnoConfig: {\n\t\tmessage: AuthErrorStrings.DEFAULT_MSG,\n\t\tlog: `\n            Error: Amplify has not been configured correctly.\n            This error is typically caused by one of the following scenarios:\n\n            1. Make sure you're passing the awsconfig object to Amplify.configure() in your app's entry point\n                See https://aws-amplify.github.io/docs/js/authentication#configure-your-app for more information\n            \n            2. There might be multiple conflicting versions of amplify packages in your node_modules.\n\t\t\t\tRefer to our docs site for help upgrading Amplify packages (https://docs.amplify.aws/lib/troubleshooting/upgrading/q/platform/js)\n        `,\n\t},\n\tmissingAuthConfig: {\n\t\tmessage: AuthErrorStrings.DEFAULT_MSG,\n\t\tlog: `\n            Error: Amplify has not been configured correctly. \n            The configuration object is missing required auth properties.\n            This error is typically caused by one of the following scenarios:\n\n            1. Did you run \\`amplify push\\` after adding auth via \\`amplify add auth\\`?\n                See https://aws-amplify.github.io/docs/js/authentication#amplify-project-setup for more information\n\n            2. This could also be caused by multiple conflicting versions of amplify packages, see (https://docs.amplify.aws/lib/troubleshooting/upgrading/q/platform/js) for help upgrading Amplify packages.\n        `,\n\t},\n\temptyUsername: {\n\t\tmessage: AuthErrorStrings.EMPTY_USERNAME,\n\t},\n\t// TODO: should include a list of valid sign-in types\n\tinvalidUsername: {\n\t\tmessage: AuthErrorStrings.INVALID_USERNAME,\n\t},\n\temptyPassword: {\n\t\tmessage: AuthErrorStrings.EMPTY_PASSWORD,\n\t},\n\temptyCode: {\n\t\tmessage: AuthErrorStrings.EMPTY_CODE,\n\t},\n\tsignUpError: {\n\t\tmessage: AuthErrorStrings.SIGN_UP_ERROR,\n\t\tlog: 'The first parameter should either be non-null string or object',\n\t},\n\tnoMFA: {\n\t\tmessage: AuthErrorStrings.NO_MFA,\n\t},\n\tinvalidMFA: {\n\t\tmessage: AuthErrorStrings.INVALID_MFA,\n\t},\n\temptyChallengeResponse: {\n\t\tmessage: AuthErrorStrings.EMPTY_CHALLENGE,\n\t},\n\tnoUserSession: {\n\t\tmessage: AuthErrorStrings.NO_USER_SESSION,\n\t},\n\tdeviceConfig: {\n\t\tmessage: AuthErrorStrings.DEVICE_CONFIG,\n\t},\n\tnetworkError: {\n\t\tmessage: AuthErrorStrings.NETWORK_ERROR,\n\t},\n\tautoSignInError: {\n\t\tmessage: AuthErrorStrings.AUTOSIGNIN_ERROR,\n\t},\n\tdefault: {\n\t\tmessage: AuthErrorStrings.DEFAULT_MSG,\n\t},\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tAuthOptions,\n\tFederatedResponse,\n\tSignUpParams,\n\tFederatedUser,\n\tConfirmSignUpOptions,\n\tSignOutOpts,\n\tCurrentUserOpts,\n\tGetPreferredMFAOpts,\n\tSignInOpts,\n\tisUsernamePasswordOpts,\n\tisCognitoHostedOpts,\n\tisFederatedSignInOptions,\n\tisFederatedSignInOptionsCustom,\n\thasCustomState,\n\tFederatedSignInOptionsCustom,\n\tLegacyProvider,\n\tFederatedSignInOptions,\n\tAwsCognitoOAuthOpts,\n\tClientMetaData,\n} from './types';\n\nimport {\n\tAmplify,\n\tConsoleLogger as Logger,\n\tCredentials,\n\tHub,\n\tStorageHelper,\n\tICredentials,\n\tPlatform,\n\tbrowserOrNode,\n\tparseAWSExports,\n\tUniversalStorage,\n\turlSafeDecode,\n\tHubCallback,\n} from '@aws-amplify/core';\nimport {\n\tCookieStorage,\n\tCognitoUserPool,\n\tAuthenticationDetails,\n\tICognitoUserPoolData,\n\tICognitoUserData,\n\tISignUpResult,\n\tCognitoUser,\n\tMFAOption,\n\tCognitoUserSession,\n\tIAuthenticationCallback,\n\tICognitoUserAttributeData,\n\tCognitoUserAttribute,\n\tCognitoIdToken,\n\tCognitoRefreshToken,\n\tCognitoAccessToken,\n\tNodeCallback,\n\tCodeDeliveryDetails,\n} from 'amazon-cognito-identity-js';\nimport {\n\taddAuthCategoryToCognitoUserAgent,\n\taddFrameworkToCognitoUserAgent,\n} from 'amazon-cognito-identity-js/internals';\n\nimport { parse } from 'url';\nimport OAuth from './OAuth/OAuth';\nimport { default as urlListener } from './urlListener';\nimport { AuthError, NoUserPoolError } from './Errors';\nimport {\n\tAuthErrorTypes,\n\tAutoSignInOptions,\n\tCognitoHostedUIIdentityProvider,\n\tIAuthDevice,\n} from './types/Auth';\n\nconst logger = new Logger('AuthClass');\nconst USER_ADMIN_SCOPE = 'aws.cognito.signin.user.admin';\n\n// 10 sec, following this guide https://www.nngroup.com/articles/response-times-3-important-limits/\nconst OAUTH_FLOW_MS_TIMEOUT = 10 * 1000;\n\nconst AMPLIFY_SYMBOL = (\n\ttypeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n\t\t? Symbol.for('amplify_default')\n\t\t: '@@amplify_default'\n) as Symbol;\n\nconst dispatchAuthEvent = (event: string, data: any, message: string) => {\n\tHub.dispatch('auth', { event, data, message }, 'Auth', AMPLIFY_SYMBOL);\n};\n\n// Cognito Documentation for max device\n// tslint:disable-next-line:max-line-length\n// https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListDevices.html#API_ListDevices_RequestSyntax\nconst MAX_DEVICES = 60;\n\nconst MAX_AUTOSIGNIN_POLLING_MS = 3 * 60 * 1000;\n\n/**\n * Provide authentication steps\n */\nexport class AuthClass {\n\tprivate _config: AuthOptions;\n\tprivate userPool: CognitoUserPool = null;\n\tprivate user: any = null;\n\tprivate _oAuthHandler: OAuth;\n\tprivate _storage;\n\tprivate _storageSync;\n\tprivate oAuthFlowInProgress: boolean = false;\n\tprivate pendingSignIn: ReturnType<AuthClass['signInWithPassword']> | null;\n\tprivate autoSignInInitiated: boolean = false;\n\tprivate inflightSessionPromise: Promise<CognitoUserSession> | null = null;\n\tprivate inflightSessionPromiseCounter: number = 0;\n\tCredentials = Credentials;\n\n\t/**\n\t * Initialize Auth with AWS configurations\n\t * @param {Object} config - Configuration of the Auth\n\t */\n\tconstructor(config: AuthOptions) {\n\t\tthis.configure(config);\n\t\tthis.currentCredentials = this.currentCredentials.bind(this);\n\t\tthis.currentUserCredentials = this.currentUserCredentials.bind(this);\n\n\t\tHub.listen('auth', ({ payload }) => {\n\t\t\tconst { event } = payload;\n\t\t\tswitch (event) {\n\t\t\t\tcase 'verify':\n\t\t\t\tcase 'signIn':\n\t\t\t\t\tthis._storage.setItem('amplify-signin-with-hostedUI', 'false');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'signOut':\n\t\t\t\t\tthis._storage.removeItem('amplify-signin-with-hostedUI');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'cognitoHostedUI':\n\t\t\t\t\tthis._storage.setItem('amplify-signin-with-hostedUI', 'true');\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\taddAuthCategoryToCognitoUserAgent();\n\t\taddFrameworkToCognitoUserAgent(Platform.framework);\n\t\tPlatform.observeFrameworkChanges(() => {\n\t\t\taddFrameworkToCognitoUserAgent(Platform.framework);\n\t\t});\n\t}\n\n\tpublic getModuleName() {\n\t\treturn 'Auth';\n\t}\n\n\tconfigure(config?) {\n\t\tif (!config) return this._config || {};\n\t\tlogger.debug('configure Auth');\n\t\tconst conf = Object.assign(\n\t\t\t{},\n\t\t\tthis._config,\n\t\t\tparseAWSExports(config).Auth,\n\t\t\tconfig\n\t\t);\n\t\tthis._config = conf;\n\t\tconst {\n\t\t\tuserPoolId,\n\t\t\tuserPoolWebClientId,\n\t\t\tcookieStorage,\n\t\t\toauth,\n\t\t\tregion,\n\t\t\tidentityPoolId,\n\t\t\tmandatorySignIn,\n\t\t\trefreshHandlers,\n\t\t\tidentityPoolRegion,\n\t\t\tclientMetadata,\n\t\t\tendpoint,\n\t\t\tstorage,\n\t\t} = this._config;\n\n\t\tif (!storage) {\n\t\t\t// backward compatability\n\t\t\tif (cookieStorage) this._storage = new CookieStorage(cookieStorage);\n\t\t\telse {\n\t\t\t\tthis._storage = config.ssr\n\t\t\t\t\t? new UniversalStorage()\n\t\t\t\t\t: new StorageHelper().getStorage();\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this._isValidAuthStorage(storage)) {\n\t\t\t\tlogger.error('The storage in the Auth config is not valid!');\n\t\t\t\tthrow new Error('Empty storage object');\n\t\t\t}\n\t\t\tthis._storage = storage;\n\t\t}\n\n\t\tthis._storageSync = Promise.resolve();\n\t\tif (typeof this._storage['sync'] === 'function') {\n\t\t\tthis._storageSync = this._storage['sync']();\n\t\t}\n\n\t\tif (userPoolId) {\n\t\t\tconst userPoolData: ICognitoUserPoolData = {\n\t\t\t\tUserPoolId: userPoolId,\n\t\t\t\tClientId: userPoolWebClientId,\n\t\t\t\tendpoint,\n\t\t\t};\n\t\t\tuserPoolData.Storage = this._storage;\n\n\t\t\tthis.userPool = new CognitoUserPool(\n\t\t\t\tuserPoolData,\n\t\t\t\tthis.wrapRefreshSessionCallback\n\t\t\t);\n\t\t}\n\n\t\tthis.Credentials.configure({\n\t\t\tmandatorySignIn,\n\t\t\tregion,\n\t\t\tuserPoolId,\n\t\t\tidentityPoolId,\n\t\t\trefreshHandlers,\n\t\t\tstorage: this._storage,\n\t\t\tidentityPoolRegion,\n\t\t});\n\n\t\t// initialize cognitoauth client if hosted ui options provided\n\t\t// to keep backward compatibility:\n\t\tconst cognitoHostedUIConfig = oauth\n\t\t\t? isCognitoHostedOpts(this._config.oauth)\n\t\t\t\t? oauth\n\t\t\t\t: (<any>oauth).awsCognito\n\t\t\t: undefined;\n\n\t\tif (cognitoHostedUIConfig) {\n\t\t\tconst cognitoAuthParams = Object.assign(\n\t\t\t\t{\n\t\t\t\t\tcognitoClientId: userPoolWebClientId,\n\t\t\t\t\tUserPoolId: userPoolId,\n\t\t\t\t\tdomain: cognitoHostedUIConfig['domain'],\n\t\t\t\t\tscopes: cognitoHostedUIConfig['scope'],\n\t\t\t\t\tredirectSignIn: cognitoHostedUIConfig['redirectSignIn'],\n\t\t\t\t\tredirectSignOut: cognitoHostedUIConfig['redirectSignOut'],\n\t\t\t\t\tresponseType: cognitoHostedUIConfig['responseType'],\n\t\t\t\t\tStorage: this._storage,\n\t\t\t\t\turlOpener: cognitoHostedUIConfig['urlOpener'],\n\t\t\t\t\tclientMetadata,\n\t\t\t\t},\n\t\t\t\tcognitoHostedUIConfig['options']\n\t\t\t);\n\n\t\t\tthis._oAuthHandler = new OAuth({\n\t\t\t\tscopes: cognitoAuthParams.scopes,\n\t\t\t\tconfig: cognitoAuthParams,\n\t\t\t\tcognitoClientId: cognitoAuthParams.cognitoClientId,\n\t\t\t});\n\n\t\t\t// **NOTE** - Remove this in a future major release as it is a breaking change\n\t\t\t// Prevents _handleAuthResponse from being called multiple times in Expo\n\t\t\t// See https://github.com/aws-amplify/amplify-js/issues/4388\n\t\t\tconst usedResponseUrls = {};\n\t\t\turlListener(({ url }) => {\n\t\t\t\tif (usedResponseUrls[url]) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tusedResponseUrls[url] = true;\n\t\t\t\tthis._handleAuthResponse(url);\n\t\t\t});\n\t\t}\n\n\t\tdispatchAuthEvent(\n\t\t\t'configured',\n\t\t\tnull,\n\t\t\t`The Auth category has been configured successfully`\n\t\t);\n\n\t\tif (\n\t\t\t!this.autoSignInInitiated &&\n\t\t\ttypeof this._storage['getItem'] === 'function'\n\t\t) {\n\t\t\tconst pollingInitiated = this.isTrueStorageValue(\n\t\t\t\t'amplify-polling-started'\n\t\t\t);\n\t\t\tif (pollingInitiated) {\n\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t'autoSignIn_failure',\n\t\t\t\t\tnull,\n\t\t\t\t\tAuthErrorTypes.AutoSignInError\n\t\t\t\t);\n\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t}\n\t\t\tthis._storage.removeItem('amplify-polling-started');\n\t\t}\n\t\treturn this._config;\n\t}\n\n\twrapRefreshSessionCallback = (callback: NodeCallback.Any) => {\n\t\tconst wrapped: NodeCallback.Any = (error, data) => {\n\t\t\tif (data) {\n\t\t\t\tdispatchAuthEvent('tokenRefresh', undefined, `New token retrieved`);\n\t\t\t} else {\n\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t'tokenRefresh_failure',\n\t\t\t\t\terror,\n\t\t\t\t\t`Failed to retrieve new token`\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn callback(error, data);\n\t\t};\n\t\treturn wrapped;\n\t} // prettier-ignore\n\n\t/**\n\t * Sign up with username, password and other attributes like phone, email\n\t * @param {String | object} params - The user attributes used for signin\n\t * @param {String[]} restOfAttrs - for the backward compatability\n\t * @return - A promise resolves callback data if success\n\t */\n\tpublic signUp(\n\t\tparams: string | SignUpParams,\n\t\t...restOfAttrs: string[]\n\t): Promise<ISignUpResult> {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\n\t\tlet username: string = null;\n\t\tlet password: string = null;\n\t\tconst attributes: CognitoUserAttribute[] = [];\n\t\tlet validationData: CognitoUserAttribute[] = null;\n\t\tlet clientMetadata;\n\t\tlet autoSignIn: AutoSignInOptions = { enabled: false };\n\t\tlet autoSignInValidationData = {};\n\t\tlet autoSignInClientMetaData: ClientMetaData = {};\n\n\t\tif (params && typeof params === 'string') {\n\t\t\tusername = params;\n\t\t\tpassword = restOfAttrs ? restOfAttrs[0] : null;\n\t\t\tconst email: string = restOfAttrs ? restOfAttrs[1] : null;\n\t\t\tconst phone_number: string = restOfAttrs ? restOfAttrs[2] : null;\n\n\t\t\tif (email)\n\t\t\t\tattributes.push(\n\t\t\t\t\tnew CognitoUserAttribute({ Name: 'email', Value: email })\n\t\t\t\t);\n\n\t\t\tif (phone_number)\n\t\t\t\tattributes.push(\n\t\t\t\t\tnew CognitoUserAttribute({\n\t\t\t\t\t\tName: 'phone_number',\n\t\t\t\t\t\tValue: phone_number,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t} else if (params && typeof params === 'object') {\n\t\t\tusername = params['username'];\n\t\t\tpassword = params['password'];\n\n\t\t\tif (params && params.clientMetadata) {\n\t\t\t\tclientMetadata = params.clientMetadata;\n\t\t\t} else if (this._config.clientMetadata) {\n\t\t\t\tclientMetadata = this._config.clientMetadata;\n\t\t\t}\n\n\t\t\tconst attrs = params['attributes'];\n\t\t\tif (attrs) {\n\t\t\t\tObject.keys(attrs).map(key => {\n\t\t\t\t\tattributes.push(\n\t\t\t\t\t\tnew CognitoUserAttribute({ Name: key, Value: attrs[key] })\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst validationDataObject = params['validationData'];\n\t\t\tif (validationDataObject) {\n\t\t\t\tvalidationData = [];\n\t\t\t\tObject.keys(validationDataObject).map(key => {\n\t\t\t\t\tvalidationData.push(\n\t\t\t\t\t\tnew CognitoUserAttribute({\n\t\t\t\t\t\t\tName: key,\n\t\t\t\t\t\t\tValue: validationDataObject[key],\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tautoSignIn = params.autoSignIn ?? { enabled: false };\n\t\t\tif (autoSignIn.enabled) {\n\t\t\t\tthis._storage.setItem('amplify-auto-sign-in', 'true');\n\t\t\t\tautoSignInValidationData = autoSignIn.validationData ?? {};\n\t\t\t\tautoSignInClientMetaData = autoSignIn.clientMetaData ?? {};\n\t\t\t}\n\t\t} else {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.SignUpError);\n\t\t}\n\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\t\tif (!password) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n\t\t}\n\n\t\tlogger.debug('signUp attrs:', attributes);\n\t\tlogger.debug('signUp validation data:', validationData);\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.userPool.signUp(\n\t\t\t\tusername,\n\t\t\t\tpassword,\n\t\t\t\tattributes,\n\t\t\t\tvalidationData,\n\t\t\t\t(err, data) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'signUp_failure',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t`${username} failed to signup`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'signUp',\n\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t`${username} has signed up successfully`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (autoSignIn.enabled) {\n\t\t\t\t\t\t\tthis.handleAutoSignIn(\n\t\t\t\t\t\t\t\tusername,\n\t\t\t\t\t\t\t\tpassword,\n\t\t\t\t\t\t\t\tautoSignInValidationData,\n\t\t\t\t\t\t\t\tautoSignInClientMetaData,\n\t\t\t\t\t\t\t\tdata\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate handleAutoSignIn(\n\t\tusername: string,\n\t\tpassword: string,\n\t\tvalidationData: {},\n\t\tclientMetadata: any,\n\t\tdata: any\n\t) {\n\t\tthis.autoSignInInitiated = true;\n\t\tconst authDetails = new AuthenticationDetails({\n\t\t\tUsername: username,\n\t\t\tPassword: password,\n\t\t\tValidationData: validationData,\n\t\t\tClientMetadata: clientMetadata,\n\t\t});\n\t\tif (data.userConfirmed) {\n\t\t\tthis.signInAfterUserConfirmed(authDetails);\n\t\t} else if (this._config.signUpVerificationMethod === 'link') {\n\t\t\tthis.handleLinkAutoSignIn(authDetails);\n\t\t} else {\n\t\t\tthis.handleCodeAutoSignIn(authDetails);\n\t\t}\n\t}\n\n\tprivate handleCodeAutoSignIn(authDetails: AuthenticationDetails) {\n\t\tconst listenEvent = ({ payload }) => {\n\t\t\tif (payload.event === 'confirmSignUp') {\n\t\t\t\tthis.signInAfterUserConfirmed(authDetails, listenEvent);\n\t\t\t}\n\t\t};\n\t\tHub.listen('auth', listenEvent);\n\t}\n\n\tprivate handleLinkAutoSignIn(authDetails: AuthenticationDetails) {\n\t\tthis._storage.setItem('amplify-polling-started', 'true');\n\t\tconst start = Date.now();\n\t\tconst autoSignInPollingIntervalId = setInterval(() => {\n\t\t\tif (Date.now() - start > MAX_AUTOSIGNIN_POLLING_MS) {\n\t\t\t\tclearInterval(autoSignInPollingIntervalId);\n\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t'autoSignIn_failure',\n\t\t\t\t\tnull,\n\t\t\t\t\t'Please confirm your account and use your credentials to sign in.'\n\t\t\t\t);\n\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t} else {\n\t\t\t\tthis.signInAfterUserConfirmed(\n\t\t\t\t\tauthDetails,\n\t\t\t\t\tnull,\n\t\t\t\t\tautoSignInPollingIntervalId\n\t\t\t\t);\n\t\t\t}\n\t\t}, 5000);\n\t}\n\n\tprivate async signInAfterUserConfirmed(\n\t\tauthDetails: AuthenticationDetails,\n\t\tlistenEvent?: HubCallback,\n\t\tautoSignInPollingIntervalId?: ReturnType<typeof setInterval>\n\t) {\n\t\tconst user = this.createCognitoUser(authDetails.getUsername());\n\t\ttry {\n\t\t\tawait user.authenticateUser(\n\t\t\t\tauthDetails,\n\t\t\t\tthis.authCallbacks(\n\t\t\t\t\tuser,\n\t\t\t\t\tvalue => {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'autoSignIn',\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t`${authDetails.getUsername()} has signed in successfully`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (listenEvent) {\n\t\t\t\t\t\t\tHub.remove('auth', listenEvent);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (autoSignInPollingIntervalId) {\n\t\t\t\t\t\t\tclearInterval(autoSignInPollingIntervalId);\n\t\t\t\t\t\t\tthis._storage.removeItem('amplify-polling-started');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\tlogger.error(error);\n\t\t\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tlogger.error(error);\n\t\t}\n\t}\n\n\t/**\n\t * Send the verification code to confirm sign up\n\t * @param {String} username - The username to be confirmed\n\t * @param {String} code - The verification code\n\t * @param {ConfirmSignUpOptions} options - other options for confirm signup\n\t * @return - A promise resolves callback data if success\n\t */\n\tpublic confirmSignUp(\n\t\tusername: string,\n\t\tcode: string,\n\t\toptions?: ConfirmSignUpOptions\n\t): Promise<any> {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\t\tif (!code) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyCode);\n\t\t}\n\n\t\tconst user = this.createCognitoUser(username);\n\t\tconst forceAliasCreation =\n\t\t\toptions && typeof options.forceAliasCreation === 'boolean'\n\t\t\t\t? options.forceAliasCreation\n\t\t\t\t: true;\n\n\t\tlet clientMetadata;\n\t\tif (options && options.clientMetadata) {\n\t\t\tclientMetadata = options.clientMetadata;\n\t\t} else if (this._config.clientMetadata) {\n\t\t\tclientMetadata = this._config.clientMetadata;\n\t\t}\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.confirmRegistration(\n\t\t\t\tcode,\n\t\t\t\tforceAliasCreation,\n\t\t\t\t(err, data) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'confirmSignUp',\n\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t`${username} has been confirmed successfully`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst autoSignIn = this.isTrueStorageValue('amplify-auto-sign-in');\n\t\t\t\t\t\tif (autoSignIn && !this.autoSignInInitiated) {\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'autoSignIn_failure',\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tAuthErrorTypes.AutoSignInError\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tthis._storage.removeItem('amplify-auto-sign-in');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate isTrueStorageValue(value: string) {\n\t\tconst item = this._storage.getItem(value);\n\t\treturn item ? item === 'true' : false;\n\t}\n\n\t/**\n\t * Resend the verification code\n\t * @param {String} username - The username to be confirmed\n\t * @param {ClientMetadata} clientMetadata - Metadata to be passed to Cognito Lambda triggers\n\t * @return - A promise resolves code delivery details if successful\n\t */\n\tpublic resendSignUp(\n\t\tusername: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise<any> {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\n\t\tconst user = this.createCognitoUser(username);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.resendConfirmationCode((err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(data);\n\t\t\t\t}\n\t\t\t}, clientMetadata);\n\t\t});\n\t}\n\n\t/**\n\t * Sign in\n\t * @param {String | SignInOpts} usernameOrSignInOpts - The username to be signed in or the sign in options\n\t * @param {String} pw - The password of the username\n\t * @param {ClientMetaData} clientMetadata - Client metadata for custom workflows\n\t * @return - A promise resolves the CognitoUser\n\t */\n\tpublic signIn(\n\t\tusernameOrSignInOpts: string | SignInOpts,\n\t\tpw?: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise<CognitoUser | any> {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\n\t\tlet username = null;\n\t\tlet password = null;\n\t\tlet validationData = {};\n\n\t\t// for backward compatibility\n\t\tif (typeof usernameOrSignInOpts === 'string') {\n\t\t\tusername = usernameOrSignInOpts;\n\t\t\tpassword = pw;\n\t\t} else if (isUsernamePasswordOpts(usernameOrSignInOpts)) {\n\t\t\tif (typeof pw !== 'undefined') {\n\t\t\t\tlogger.warn(\n\t\t\t\t\t'The password should be defined under the first parameter object!'\n\t\t\t\t);\n\t\t\t}\n\t\t\tusername = usernameOrSignInOpts.username;\n\t\t\tpassword = usernameOrSignInOpts.password;\n\t\t\tvalidationData = usernameOrSignInOpts.validationData;\n\t\t} else {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.InvalidUsername);\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\t\tconst authDetails = new AuthenticationDetails({\n\t\t\tUsername: username,\n\t\t\tPassword: password,\n\t\t\tValidationData: validationData,\n\t\t\tClientMetadata: clientMetadata,\n\t\t});\n\t\tif (password) {\n\t\t\treturn this.signInWithPassword(authDetails);\n\t\t} else {\n\t\t\treturn this.signInWithoutPassword(authDetails);\n\t\t}\n\t}\n\n\t/**\n\t * Return an object with the authentication callbacks\n\t * @param {CognitoUser} user - the cognito user object\n\t * @param {} resolve - function called when resolving the current step\n\t * @param {} reject - function called when rejecting the current step\n\t * @return - an object with the callback methods for user authentication\n\t */\n\tprivate authCallbacks(\n\t\tuser: CognitoUser,\n\t\tresolve: (value?: CognitoUser | any) => void,\n\t\treject: (value?: any) => void\n\t): IAuthenticationCallback {\n\t\tconst that = this;\n\t\treturn {\n\t\t\tonSuccess: async session => {\n\t\t\t\tlogger.debug(session);\n\t\t\t\tdelete user['challengeName'];\n\t\t\t\tdelete user['challengeParam'];\n\t\t\t\ttry {\n\t\t\t\t\tawait this.Credentials.clear();\n\t\t\t\t\tconst cred = await this.Credentials.set(session, 'session');\n\t\t\t\t\tlogger.debug('succeed to get cognito credentials', cred);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tlogger.debug('cannot get cognito credentials', e);\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// In order to get user attributes and MFA methods\n\t\t\t\t\t\t// We need to trigger currentUserPoolUser again\n\t\t\t\t\t\tconst currentUser = await this.currentUserPoolUser();\n\t\t\t\t\t\tthat.user = currentUser;\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\t\tcurrentUser,\n\t\t\t\t\t\t\t`A user ${user.getUsername()} has been signed in`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(currentUser);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tlogger.error('Failed to get the signed in user', e);\n\t\t\t\t\t\treject(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonFailure: err => {\n\t\t\t\tlogger.debug('signIn failure', err);\n\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t'signIn_failure',\n\t\t\t\t\terr,\n\t\t\t\t\t`${user.getUsername()} failed to signin`\n\t\t\t\t);\n\t\t\t\treject(err);\n\t\t\t},\n\t\t\tcustomChallenge: challengeParam => {\n\t\t\t\tlogger.debug('signIn custom challenge answer required');\n\t\t\t\tuser['challengeName'] = 'CUSTOM_CHALLENGE';\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\tmfaRequired: (challengeName, challengeParam) => {\n\t\t\t\tlogger.debug('signIn MFA required');\n\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\tmfaSetup: (challengeName, challengeParam) => {\n\t\t\t\tlogger.debug('signIn mfa setup', challengeName);\n\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\tnewPasswordRequired: (userAttributes, requiredAttributes) => {\n\t\t\t\tlogger.debug('signIn new password');\n\t\t\t\tuser['challengeName'] = 'NEW_PASSWORD_REQUIRED';\n\t\t\t\tuser['challengeParam'] = {\n\t\t\t\t\tuserAttributes,\n\t\t\t\t\trequiredAttributes,\n\t\t\t\t};\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\ttotpRequired: (challengeName, challengeParam) => {\n\t\t\t\tlogger.debug('signIn totpRequired');\n\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t\tselectMFAType: (challengeName, challengeParam) => {\n\t\t\t\tlogger.debug('signIn selectMFAType', challengeName);\n\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\tresolve(user);\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Sign in with a password\n\t * @private\n\t * @param {AuthenticationDetails} authDetails - the user sign in data\n\t * @return - A promise resolves the CognitoUser object if success or mfa required\n\t */\n\tprivate signInWithPassword(\n\t\tauthDetails: AuthenticationDetails\n\t): Promise<CognitoUser | any> {\n\t\tif (this.pendingSignIn) {\n\t\t\tthrow new Error('Pending sign-in attempt already in progress');\n\t\t}\n\n\t\tconst user = this.createCognitoUser(authDetails.getUsername());\n\n\t\tthis.pendingSignIn = new Promise((resolve, reject) => {\n\t\t\tuser.authenticateUser(\n\t\t\t\tauthDetails,\n\t\t\t\tthis.authCallbacks(\n\t\t\t\t\tuser,\n\t\t\t\t\tvalue => {\n\t\t\t\t\t\tthis.pendingSignIn = null;\n\t\t\t\t\t\tresolve(value);\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\tthis.pendingSignIn = null;\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t);\n\t\t});\n\n\t\treturn this.pendingSignIn;\n\t}\n\n\t/**\n\t * Sign in without a password\n\t * @private\n\t * @param {AuthenticationDetails} authDetails - the user sign in data\n\t * @return - A promise resolves the CognitoUser object if success or mfa required\n\t */\n\tprivate signInWithoutPassword(\n\t\tauthDetails: AuthenticationDetails\n\t): Promise<CognitoUser | any> {\n\t\tconst user = this.createCognitoUser(authDetails.getUsername());\n\t\tuser.setAuthenticationFlowType('CUSTOM_AUTH');\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.initiateAuth(authDetails, this.authCallbacks(user, resolve, reject));\n\t\t});\n\t}\n\n\t/**\n\t * This was previously used by an authenticated user to get MFAOptions,\n\t * but no longer returns a meaningful response. Refer to the documentation for\n\t * how to setup and use MFA: https://docs.amplify.aws/lib/auth/mfa/q/platform/js\n\t * @deprecated\n\t * @param {CognitoUser} user - the current user\n\t * @return - A promise resolves the current preferred mfa option if success\n\t */\n\tpublic getMFAOptions(user: CognitoUser | any): Promise<MFAOption[]> {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.getMFAOptions((err, mfaOptions) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.debug('get MFA Options failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlogger.debug('get MFA options success', mfaOptions);\n\t\t\t\tres(mfaOptions);\n\t\t\t\treturn;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * get preferred mfa method\n\t * @param {CognitoUser} user - the current cognito user\n\t * @param {GetPreferredMFAOpts} params - options for getting the current user preferred MFA\n\t */\n\tpublic getPreferredMFA(\n\t\tuser: CognitoUser | any,\n\t\tparams?: GetPreferredMFAOpts\n\t): Promise<string> {\n\t\tconst that = this;\n\t\treturn new Promise((res, rej) => {\n\t\t\tconst clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n\n\t\t\tconst bypassCache = params ? params.bypassCache : false;\n\t\t\tuser.getUserData(\n\t\t\t\tasync (err, data) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tlogger.debug('getting preferred mfa failed', err);\n\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst mfaType = that._getMfaTypeFromUserData(data);\n\t\t\t\t\tif (!mfaType) {\n\t\t\t\t\t\trej('invalid MFA Type');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tres(mfaType);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ bypassCache, clientMetadata }\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate _getMfaTypeFromUserData(data) {\n\t\tlet ret = null;\n\t\tconst preferredMFA = data.PreferredMfaSetting;\n\t\t// if the user has used Auth.setPreferredMFA() to setup the mfa type\n\t\t// then the \"PreferredMfaSetting\" would exist in the response\n\t\tif (preferredMFA) {\n\t\t\tret = preferredMFA;\n\t\t} else {\n\t\t\t// if mfaList exists but empty, then its noMFA\n\t\t\tconst mfaList = data.UserMFASettingList;\n\t\t\tif (!mfaList) {\n\t\t\t\t// if SMS was enabled by using Auth.enableSMS(),\n\t\t\t\t// the response would contain MFAOptions\n\t\t\t\t// as for now Cognito only supports for SMS, so we will say it is 'SMS_MFA'\n\t\t\t\t// if it does not exist, then it should be NOMFA\n\t\t\t\tconst MFAOptions = data.MFAOptions;\n\t\t\t\tif (MFAOptions) {\n\t\t\t\t\tret = 'SMS_MFA';\n\t\t\t\t} else {\n\t\t\t\t\tret = 'NOMFA';\n\t\t\t\t}\n\t\t\t} else if (mfaList.length === 0) {\n\t\t\t\tret = 'NOMFA';\n\t\t\t} else {\n\t\t\t\tlogger.debug('invalid case for getPreferredMFA', data);\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t}\n\n\tprivate _getUserData(user, params) {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.getUserData(async (err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.debug('getting user data failed', err);\n\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tres(data);\n\t\t\t\t}\n\t\t\t}, params);\n\t\t});\n\t}\n\n\t/**\n\t * set preferred MFA method\n\t * @param {CognitoUser} user - the current Cognito user\n\t * @param {string} mfaMethod - preferred mfa method\n\t * @return - A promise resolve if success\n\t */\n\tpublic async setPreferredMFA(\n\t\tuser: CognitoUser | any,\n\t\tmfaMethod: 'TOTP' | 'SMS' | 'NOMFA' | 'SMS_MFA' | 'SOFTWARE_TOKEN_MFA'\n\t): Promise<string> {\n\t\tconst clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n\n\t\tconst userData = await this._getUserData(user, {\n\t\t\tbypassCache: true,\n\t\t\tclientMetadata,\n\t\t});\n\t\tlet smsMfaSettings = null;\n\t\tlet totpMfaSettings = null;\n\n\t\tswitch (mfaMethod) {\n\t\t\tcase 'TOTP':\n\t\t\tcase 'SOFTWARE_TOKEN_MFA':\n\t\t\t\ttotpMfaSettings = {\n\t\t\t\t\tPreferredMfa: true,\n\t\t\t\t\tEnabled: true,\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'SMS':\n\t\t\tcase 'SMS_MFA':\n\t\t\t\tsmsMfaSettings = {\n\t\t\t\t\tPreferredMfa: true,\n\t\t\t\t\tEnabled: true,\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase 'NOMFA':\n\t\t\t\tconst mfaList = userData['UserMFASettingList'];\n\t\t\t\tconst currentMFAType = await this._getMfaTypeFromUserData(userData);\n\t\t\t\tif (currentMFAType === 'NOMFA') {\n\t\t\t\t\treturn Promise.resolve('No change for mfa type');\n\t\t\t\t} else if (currentMFAType === 'SMS_MFA') {\n\t\t\t\t\tsmsMfaSettings = {\n\t\t\t\t\t\tPreferredMfa: false,\n\t\t\t\t\t\tEnabled: false,\n\t\t\t\t\t};\n\t\t\t\t} else if (currentMFAType === 'SOFTWARE_TOKEN_MFA') {\n\t\t\t\t\ttotpMfaSettings = {\n\t\t\t\t\t\tPreferredMfa: false,\n\t\t\t\t\t\tEnabled: false,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\treturn this.rejectAuthError(AuthErrorTypes.InvalidMFA);\n\t\t\t\t}\n\t\t\t\t// if there is a UserMFASettingList in the response\n\t\t\t\t// we need to disable every mfa type in that list\n\t\t\t\tif (mfaList && mfaList.length !== 0) {\n\t\t\t\t\t// to disable SMS or TOTP if exists in that list\n\t\t\t\t\tmfaList.forEach(mfaType => {\n\t\t\t\t\t\tif (mfaType === 'SMS_MFA') {\n\t\t\t\t\t\t\tsmsMfaSettings = {\n\t\t\t\t\t\t\t\tPreferredMfa: false,\n\t\t\t\t\t\t\t\tEnabled: false,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (mfaType === 'SOFTWARE_TOKEN_MFA') {\n\t\t\t\t\t\t\ttotpMfaSettings = {\n\t\t\t\t\t\t\t\tPreferredMfa: false,\n\t\t\t\t\t\t\t\tEnabled: false,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlogger.debug('no validmfa method provided');\n\t\t\t\treturn this.rejectAuthError(AuthErrorTypes.NoMFA);\n\t\t}\n\n\t\tconst that = this;\n\t\treturn new Promise<string>((res, rej) => {\n\t\t\tuser.setUserMfaPreference(\n\t\t\t\tsmsMfaSettings,\n\t\t\t\ttotpMfaSettings,\n\t\t\t\t(err, result) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tlogger.debug('Set user mfa preference error', err);\n\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t}\n\t\t\t\t\tlogger.debug('Set user mfa success', result);\n\t\t\t\t\tlogger.debug('Caching the latest user data into local');\n\t\t\t\t\t// cache the latest result into user data\n\t\t\t\t\tuser.getUserData(\n\t\t\t\t\t\tasync (err, data) => {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tlogger.debug('getting user data failed', err);\n\t\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn res(result);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tbypassCache: true,\n\t\t\t\t\t\t\tclientMetadata,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * disable SMS\n\t * @deprecated\n\t * @param {CognitoUser} user - the current user\n\t * @return - A promise resolves is success\n\t */\n\tpublic disableSMS(user: CognitoUser): Promise<string> {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.disableMFA((err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.debug('disable mfa failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlogger.debug('disable mfa succeed', data);\n\t\t\t\tres(data);\n\t\t\t\treturn;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * enable SMS\n\t * @deprecated\n\t * @param {CognitoUser} user - the current user\n\t * @return - A promise resolves is success\n\t */\n\tpublic enableSMS(user: CognitoUser): Promise<string> {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.enableMFA((err, data) => {\n\t\t\t\tif (err) {\n\t\t\t\t\tlogger.debug('enable mfa failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlogger.debug('enable mfa succeed', data);\n\t\t\t\tres(data);\n\t\t\t\treturn;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Setup TOTP\n\t * @param {CognitoUser} user - the current user\n\t * @return - A promise resolves with the secret code if success\n\t */\n\tpublic setupTOTP(user: CognitoUser | any): Promise<string> {\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.associateSoftwareToken({\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tlogger.debug('associateSoftwareToken failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t\tassociateSecretCode: secretCode => {\n\t\t\t\t\tlogger.debug('associateSoftwareToken success', secretCode);\n\t\t\t\t\tres(secretCode);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * verify TOTP setup\n\t * @param {CognitoUser} user - the current user\n\t * @param {string} challengeAnswer - challenge answer\n\t * @return - A promise resolves is success\n\t */\n\tpublic verifyTotpToken(\n\t\tuser: CognitoUser | any,\n\t\tchallengeAnswer: string\n\t): Promise<CognitoUserSession> {\n\t\tlogger.debug('verification totp token', user, challengeAnswer);\n\n\t\tlet signInUserSession;\n\t\tif (user && typeof user.getSignInUserSession === 'function') {\n\t\t\tsignInUserSession = (user as CognitoUser).getSignInUserSession();\n\t\t}\n\t\tconst isLoggedIn = signInUserSession?.isValid();\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tuser.verifySoftwareToken(challengeAnswer, 'My TOTP device', {\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tlogger.debug('verifyTotpToken failed', err);\n\t\t\t\t\trej(err);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t\tonSuccess: data => {\n\t\t\t\t\tif (!isLoggedIn) {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t`A user ${user.getUsername()} has been signed in`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'verify',\n\t\t\t\t\t\tuser,\n\t\t\t\t\t\t`A user ${user.getUsername()} has been verified`\n\t\t\t\t\t);\n\t\t\t\t\tlogger.debug('verifyTotpToken success', data);\n\t\t\t\t\tres(data);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Send MFA code to confirm sign in\n\t * @param {Object} user - The CognitoUser object\n\t * @param {String} code - The confirmation code\n\t */\n\tpublic confirmSignIn(\n\t\tuser: CognitoUser | any,\n\t\tcode: string,\n\t\tmfaType?: 'SMS_MFA' | 'SOFTWARE_TOKEN_MFA' | null,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise<CognitoUser | any> {\n\t\tif (!code) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyCode);\n\t\t}\n\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.sendMFACode(\n\t\t\t\tcode,\n\t\t\t\t{\n\t\t\t\t\tonSuccess: async session => {\n\t\t\t\t\t\tlogger.debug(session);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.Credentials.clear();\n\t\t\t\t\t\t\tconst cred = await this.Credentials.set(session, 'session');\n\t\t\t\t\t\t\tlogger.debug('succeed to get cognito credentials', cred);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tlogger.debug('cannot get cognito credentials', e);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tthat.user = user;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst currentUser = await this.currentUserPoolUser();\n\t\t\t\t\t\t\t\tuser.attributes = currentUser.attributes;\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\tlogger.debug('cannot get updated Cognito User', e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t\t`A user ${user.getUsername()} has been signed in`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\tlogger.debug('confirm signIn failure', err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tmfaType,\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic completeNewPassword(\n\t\tuser: CognitoUser | any,\n\t\tpassword: string,\n\t\trequiredAttributes: any = {},\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise<CognitoUser | any> {\n\t\tif (!password) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n\t\t}\n\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.completeNewPasswordChallenge(\n\t\t\t\tpassword,\n\t\t\t\trequiredAttributes,\n\t\t\t\t{\n\t\t\t\t\tonSuccess: async session => {\n\t\t\t\t\t\tlogger.debug(session);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.Credentials.clear();\n\t\t\t\t\t\t\tconst cred = await this.Credentials.set(session, 'session');\n\t\t\t\t\t\t\tlogger.debug('succeed to get cognito credentials', cred);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tlogger.debug('cannot get cognito credentials', e);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tthat.user = user;\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t\t`A user ${user.getUsername()} has been signed in`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\tlogger.debug('completeNewPassword failure', err);\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'completeNewPassword_failure',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t`${this.user} failed to complete the new password flow`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t},\n\t\t\t\t\tmfaRequired: (challengeName, challengeParam) => {\n\t\t\t\t\t\tlogger.debug('signIn MFA required');\n\t\t\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t},\n\t\t\t\t\tmfaSetup: (challengeName, challengeParam) => {\n\t\t\t\t\t\tlogger.debug('signIn mfa setup', challengeName);\n\t\t\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t},\n\t\t\t\t\ttotpRequired: (challengeName, challengeParam) => {\n\t\t\t\t\t\tlogger.debug('signIn mfa setup', challengeName);\n\t\t\t\t\t\tuser['challengeName'] = challengeName;\n\t\t\t\t\t\tuser['challengeParam'] = challengeParam;\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Send the answer to a custom challenge\n\t * @param {CognitoUser} user - The CognitoUser object\n\t * @param {String} challengeResponses - The confirmation code\n\t */\n\tpublic sendCustomChallengeAnswer(\n\t\tuser: CognitoUser | any,\n\t\tchallengeResponses: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise<CognitoUser | any> {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!challengeResponses) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyChallengeResponse);\n\t\t}\n\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.sendCustomChallengeAnswer(\n\t\t\t\tchallengeResponses,\n\t\t\t\tthis.authCallbacks(user, resolve, reject),\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Delete an authenticated users' attributes\n\t * @param {CognitoUser} - The currently logged in user object\n\t * @return {Promise}\n\t **/\n\tpublic deleteUserAttributes(\n\t\tuser: CognitoUser | any,\n\t\tattributeNames: string[]\n\t) {\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthat.userSession(user).then(session => {\n\t\t\t\tuser.deleteAttributes(attributeNames, (err, result) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn resolve(result);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Delete the current authenticated user\n\t * @return {Promise}\n\t **/\n\t// TODO: Check return type void\n\tpublic async deleteUser(): Promise<string | void> {\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\tthrow new Error(e);\n\t\t}\n\n\t\tconst isSignedInHostedUI =\n\t\t\tthis._oAuthHandler &&\n\t\t\tthis._storage.getItem('amplify-signin-with-hostedUI') === 'true';\n\n\t\treturn new Promise(async (res, rej) => {\n\t\t\tif (this.userPool) {\n\t\t\t\tconst user = this.userPool.getCurrentUser();\n\n\t\t\t\tif (!user) {\n\t\t\t\t\tlogger.debug('Failed to get user from user pool');\n\t\t\t\t\treturn rej(new Error('No current user.'));\n\t\t\t\t} else {\n\t\t\t\t\tuser.getSession(async (err, session) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tlogger.debug('Failed to get the user session', err);\n\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tuser.deleteUser((err, result: string) => {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\trej(err);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t\t\t'userDeleted',\n\t\t\t\t\t\t\t\t\t\tresult,\n\t\t\t\t\t\t\t\t\t\t'The authenticated user has been deleted.'\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tuser.signOut();\n\t\t\t\t\t\t\t\t\tthis.user = null;\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tthis.cleanCachedItems(); // clean aws credentials\n\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t// TODO: change to rejects in refactor\n\t\t\t\t\t\t\t\t\t\tlogger.debug('failed to clear cached items');\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (isSignedInHostedUI) {\n\t\t\t\t\t\t\t\t\t\tthis.oAuthSignOutRedirect(res, rej);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t\t\t\t'signOut',\n\t\t\t\t\t\t\t\t\t\t\tthis.user,\n\t\t\t\t\t\t\t\t\t\t\t`A user has been signed out`\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tres(result);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlogger.debug('no Congito User pool');\n\t\t\t\trej(new Error('Cognito User pool does not exist'));\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Update an authenticated users' attributes\n\t * @param {CognitoUser} - The currently logged in user object\n\t * @return {Promise}\n\t **/\n\tpublic updateUserAttributes(\n\t\tuser: CognitoUser | any,\n\t\tattributes: object,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise<string> {\n\t\tconst attributeList: ICognitoUserAttributeData[] = [];\n\t\tconst that = this;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthat.userSession(user).then(session => {\n\t\t\t\tfor (const key in attributes) {\n\t\t\t\t\tif (key !== 'sub' && key.indexOf('_verified') < 0) {\n\t\t\t\t\t\tconst attr: ICognitoUserAttributeData = {\n\t\t\t\t\t\t\tName: key,\n\t\t\t\t\t\t\tValue: attributes[key],\n\t\t\t\t\t\t};\n\t\t\t\t\t\tattributeList.push(attr);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tuser.updateAttributes(\n\t\t\t\t\tattributeList,\n\t\t\t\t\t(err, result, details) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'updateUserAttributes_failure',\n\t\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t\t'Failed to update attributes'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst attrs = this.createUpdateAttributesResultList(\n\t\t\t\t\t\t\t\tattributes as Record<string, string>,\n\t\t\t\t\t\t\t\tdetails?.CodeDeliveryDetailsList\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t\t'updateUserAttributes',\n\t\t\t\t\t\t\t\tattrs,\n\t\t\t\t\t\t\t\t'Attributes successfully updated'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn resolve(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tclientMetadata\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate createUpdateAttributesResultList(\n\t\tattributes: Record<string, string>,\n\t\tcodeDeliveryDetailsList?: CodeDeliveryDetails[]\n\t): Record<string, string> {\n\t\tconst attrs = {};\n\t\tObject.keys(attributes).forEach(key => {\n\t\t\tattrs[key] = {\n\t\t\t\tisUpdated: true,\n\t\t\t};\n\t\t\tconst codeDeliveryDetails = codeDeliveryDetailsList?.find(\n\t\t\t\tvalue => value.AttributeName === key\n\t\t\t);\n\t\t\tif (codeDeliveryDetails) {\n\t\t\t\tattrs[key].isUpdated = false;\n\t\t\t\tattrs[key].codeDeliveryDetails = codeDeliveryDetails;\n\t\t\t}\n\t\t});\n\t\treturn attrs;\n\t}\n\n\t/**\n\t * Return user attributes\n\t * @param {Object} user - The CognitoUser object\n\t * @return - A promise resolves to user attributes if success\n\t */\n\tpublic userAttributes(\n\t\tuser: CognitoUser | any\n\t): Promise<CognitoUserAttribute[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.userSession(user).then(session => {\n\t\t\t\tuser.getUserAttributes((err, attributes) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(attributes);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic verifiedContact(user: CognitoUser | any) {\n\t\tconst that = this;\n\t\treturn this.userAttributes(user).then(attributes => {\n\t\t\tconst attrs = that.attributesToObject(attributes);\n\t\t\tconst unverified = {};\n\t\t\tconst verified = {};\n\t\t\tif (attrs['email']) {\n\t\t\t\tif (attrs['email_verified']) {\n\t\t\t\t\tverified['email'] = attrs['email'];\n\t\t\t\t} else {\n\t\t\t\t\tunverified['email'] = attrs['email'];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (attrs['phone_number']) {\n\t\t\t\tif (attrs['phone_number_verified']) {\n\t\t\t\t\tverified['phone_number'] = attrs['phone_number'];\n\t\t\t\t} else {\n\t\t\t\t\tunverified['phone_number'] = attrs['phone_number'];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tverified,\n\t\t\t\tunverified,\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate isErrorWithMessage(err: any): err is { message: string } {\n\t\treturn (\n\t\t\ttypeof err === 'object' &&\n\t\t\tObject.prototype.hasOwnProperty.call(err, 'message')\n\t\t);\n\t}\n\n\t// Session revoked by another app\n\tprivate isTokenRevokedError(\n\t\terr: any\n\t): err is { message: 'Access Token has been revoked' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) &&\n\t\t\terr.message === 'Access Token has been revoked'\n\t\t);\n\t}\n\n\tprivate isRefreshTokenRevokedError(\n\t\terr: any\n\t): err is { message: 'Refresh Token has been revoked' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) &&\n\t\t\terr.message === 'Refresh Token has been revoked'\n\t\t);\n\t}\n\n\tprivate isUserDisabledError(\n\t\terr: any\n\t): err is { message: 'User is disabled.' } {\n\t\treturn this.isErrorWithMessage(err) && err.message === 'User is disabled.';\n\t}\n\n\tprivate isUserDoesNotExistError(\n\t\terr: any\n\t): err is { message: 'User does not exist.' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) && err.message === 'User does not exist.'\n\t\t);\n\t}\n\n\tprivate isRefreshTokenExpiredError(\n\t\terr: any\n\t): err is { message: 'Refresh Token has expired' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) &&\n\t\t\terr.message === 'Refresh Token has expired'\n\t\t);\n\t}\n\n\tprivate isPasswordResetRequiredError(\n\t\terr: any\n\t): err is { message: 'Password reset required for the user' } {\n\t\treturn (\n\t\t\tthis.isErrorWithMessage(err) &&\n\t\t\terr.message === 'Password reset required for the user'\n\t\t);\n\t}\n\n\tprivate isSignedInHostedUI() {\n\t\treturn (\n\t\t\tthis._oAuthHandler &&\n\t\t\tthis._storage.getItem('amplify-signin-with-hostedUI') === 'true'\n\t\t);\n\t}\n\n\tprivate isSessionInvalid(err: any) {\n\t\treturn (\n\t\t\tthis.isUserDisabledError(err) ||\n\t\t\tthis.isUserDoesNotExistError(err) ||\n\t\t\tthis.isTokenRevokedError(err) ||\n\t\t\tthis.isRefreshTokenRevokedError(err) ||\n\t\t\tthis.isRefreshTokenExpiredError(err) ||\n\t\t\tthis.isPasswordResetRequiredError(err)\n\t\t);\n\t}\n\n\tprivate async cleanUpInvalidSession(user: CognitoUser) {\n\t\tuser.signOut();\n\t\tthis.user = null;\n\t\ttry {\n\t\t\tawait this.cleanCachedItems(); // clean aws credentials\n\t\t} catch (e) {\n\t\t\tlogger.debug('failed to clear cached items');\n\t\t}\n\t\tif (this.isSignedInHostedUI()) {\n\t\t\treturn new Promise((res, rej) => {\n\t\t\t\tthis.oAuthSignOutRedirect(res, rej);\n\t\t\t});\n\t\t} else {\n\t\t\tdispatchAuthEvent('signOut', this.user, `A user has been signed out`);\n\t\t}\n\t}\n\n\t/**\n\t * Get current authenticated user\n\t * @return - A promise resolves to current authenticated CognitoUser if success\n\t */\n\tpublic currentUserPoolUser(\n\t\tparams?: CurrentUserOpts\n\t): Promise<CognitoUser | any> {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tthis._storageSync\n\t\t\t\t.then(async () => {\n\t\t\t\t\tif (this.isOAuthInProgress()) {\n\t\t\t\t\t\tlogger.debug('OAuth signIn in progress, waiting for resolution...');\n\n\t\t\t\t\t\tawait new Promise(res => {\n\t\t\t\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\t\t\t\tlogger.debug('OAuth signIn in progress timeout');\n\n\t\t\t\t\t\t\t\tHub.remove('auth', hostedUISignCallback);\n\n\t\t\t\t\t\t\t\tres();\n\t\t\t\t\t\t\t}, OAUTH_FLOW_MS_TIMEOUT);\n\n\t\t\t\t\t\t\tHub.listen('auth', hostedUISignCallback);\n\n\t\t\t\t\t\t\tfunction hostedUISignCallback({ payload }) {\n\t\t\t\t\t\t\t\tconst { event } = payload;\n\n\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\tevent === 'cognitoHostedUI' ||\n\t\t\t\t\t\t\t\t\tevent === 'cognitoHostedUI_failure'\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\tlogger.debug(`OAuth signIn resolved: ${event}`);\n\t\t\t\t\t\t\t\t\tclearTimeout(timeoutId);\n\n\t\t\t\t\t\t\t\t\tHub.remove('auth', hostedUISignCallback);\n\n\t\t\t\t\t\t\t\t\tres();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst user = this.userPool.getCurrentUser();\n\n\t\t\t\t\tif (!user) {\n\t\t\t\t\t\tlogger.debug('Failed to get user from user pool');\n\t\t\t\t\t\trej('No current user');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// refresh the session if the session expired.\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst session = await this._userSession(user);\n\n\t\t\t\t\t\t// get user data from Cognito\n\t\t\t\t\t\tconst bypassCache = params ? params.bypassCache : false;\n\n\t\t\t\t\t\tif (bypassCache) {\n\t\t\t\t\t\t\tawait this.Credentials.clear();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst clientMetadata = this._config.clientMetadata;\n\n\t\t\t\t\t\t// validate the token's scope first before calling this function\n\t\t\t\t\t\tconst { scope = '' } = session.getAccessToken().decodePayload();\n\t\t\t\t\t\tif (scope.split(' ').includes(USER_ADMIN_SCOPE)) {\n\t\t\t\t\t\t\tuser.getUserData(\n\t\t\t\t\t\t\t\tasync (err, data) => {\n\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tlogger.debug('getting user data failed', err);\n\t\t\t\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\trej(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tres(user);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst preferredMFA = data.PreferredMfaSetting || 'NOMFA';\n\t\t\t\t\t\t\t\t\tconst attributeList = [];\n\n\t\t\t\t\t\t\t\t\tfor (let i = 0; i < data.UserAttributes.length; i++) {\n\t\t\t\t\t\t\t\t\t\tconst attribute = {\n\t\t\t\t\t\t\t\t\t\t\tName: data.UserAttributes[i].Name,\n\t\t\t\t\t\t\t\t\t\t\tValue: data.UserAttributes[i].Value,\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tconst userAttribute = new CognitoUserAttribute(attribute);\n\t\t\t\t\t\t\t\t\t\tattributeList.push(userAttribute);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst attributes = this.attributesToObject(attributeList);\n\t\t\t\t\t\t\t\t\tObject.assign(user, { attributes, preferredMFA });\n\t\t\t\t\t\t\t\t\treturn res(user);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ bypassCache, clientMetadata }\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t\t\t`Unable to get the user data because the ${USER_ADMIN_SCOPE} ` +\n\t\t\t\t\t\t\t\t\t`is not in the scopes of the access token`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn res(user);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\t\t\treturn rej(e);\n\t\t\t\t});\n\t\t});\n\t}\n\n\tprivate isOAuthInProgress(): boolean {\n\t\treturn this.oAuthFlowInProgress;\n\t}\n\n\t/**\n\t * Get current authenticated user\n\t * @param {CurrentUserOpts} - options for getting the current user\n\t * @return - A promise resolves to current authenticated CognitoUser if success\n\t */\n\tpublic async currentAuthenticatedUser(\n\t\tparams?: CurrentUserOpts\n\t): Promise<CognitoUser | any> {\n\t\tlogger.debug('getting current authenticated user');\n\t\tlet federatedUser = null;\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\tthrow e;\n\t\t}\n\n\t\ttry {\n\t\t\tconst federatedInfo = JSON.parse(\n\t\t\t\tthis._storage.getItem('aws-amplify-federatedInfo')\n\t\t\t);\n\t\t\tif (federatedInfo) {\n\t\t\t\tfederatedUser = {\n\t\t\t\t\t...federatedInfo.user,\n\t\t\t\t\ttoken: federatedInfo.token,\n\t\t\t\t};\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tlogger.debug('cannot load federated user from auth storage');\n\t\t}\n\n\t\tif (federatedUser) {\n\t\t\tthis.user = federatedUser;\n\t\t\tlogger.debug('get current authenticated federated user', this.user);\n\t\t\treturn this.user;\n\t\t} else {\n\t\t\tlogger.debug('get current authenticated userpool user');\n\t\t\tlet user = null;\n\t\t\ttry {\n\t\t\t\tuser = await this.currentUserPoolUser(params);\n\t\t\t} catch (e) {\n\t\t\t\tif (e === 'No userPool') {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t'Cannot get the current user because the user pool is missing. ' +\n\t\t\t\t\t\t\t'Please make sure the Auth module is configured with a valid Cognito User Pool ID'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tlogger.debug('The user is not authenticated by the error', e);\n\t\t\t\treturn Promise.reject('The user is not authenticated');\n\t\t\t}\n\t\t\tthis.user = user;\n\t\t\treturn this.user;\n\t\t}\n\t}\n\n\t/**\n\t * Get current user's session\n\t * @return - A promise resolves to session object if success\n\t */\n\tpublic currentSession(): Promise<CognitoUserSession> {\n\t\tconst that = this;\n\t\tlogger.debug('Getting current session');\n\t\t// Purposely not calling the reject method here because we don't need a console error\n\t\tif (!this.userPool) {\n\t\t\treturn Promise.reject(new Error('No User Pool in the configuration.'));\n\t\t}\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tthat\n\t\t\t\t.currentUserPoolUser()\n\t\t\t\t.then(user => {\n\t\t\t\t\tthat\n\t\t\t\t\t\t.userSession(user)\n\t\t\t\t\t\t.then(session => {\n\t\t\t\t\t\t\tres(session);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(e => {\n\t\t\t\t\t\t\tlogger.debug('Failed to get the current session', e);\n\t\t\t\t\t\t\trej(e);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tlogger.debug('Failed to get the current user', e);\n\t\t\t\t\trej(e);\n\t\t\t\t\treturn;\n\t\t\t\t});\n\t\t});\n\t}\n\n\tprivate async _userSession(user?: CognitoUser): Promise<CognitoUserSession> {\n\t\tif (!user) {\n\t\t\tlogger.debug('the user is null');\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.NoUserSession);\n\t\t}\n\t\tconst clientMetadata = this._config.clientMetadata;\n\t\t// Debouncing the concurrent userSession calls by caching the promise.\n\t\t// This solution assumes users will always call this function with the same CognitoUser instance.\n\t\tif (this.inflightSessionPromiseCounter === 0) {\n\t\t\tthis.inflightSessionPromise = new Promise<CognitoUserSession>(\n\t\t\t\t(res, rej) => {\n\t\t\t\t\tuser.getSession(\n\t\t\t\t\t\tasync (err, session) => {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tlogger.debug('Failed to get the session from user', user);\n\t\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trej(err);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlogger.debug('Succeed to get the user session', session);\n\t\t\t\t\t\t\t\tres(session);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ clientMetadata }\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tthis.inflightSessionPromiseCounter++;\n\n\t\ttry {\n\t\t\tconst userSession = await this.inflightSessionPromise;\n\t\t\t// Set private member. Avoid user.setSignInUserSession() to prevent excessive localstorage refresh.\n\t\t\t// @ts-ignore\n\t\t\tuser.signInUserSession = userSession;\n\t\t\treturn userSession!;\n\t\t} finally {\n\t\t\tthis.inflightSessionPromiseCounter--;\n\t\t}\n\t}\n\n\t/**\n\t * Get the corresponding user session\n\t * @param {Object} user - The CognitoUser object\n\t * @return - A promise resolves to the session\n\t */\n\tpublic userSession(user): Promise<CognitoUserSession> {\n\t\treturn this._userSession(user);\n\t}\n\n\t/**\n\t * Get authenticated credentials of current user.\n\t * @return - A promise resolves to be current user's credentials\n\t */\n\tpublic async currentUserCredentials(): Promise<ICredentials> {\n\t\tlogger.debug('Getting current user credentials');\n\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\tthrow e;\n\t\t}\n\n\t\t// first to check whether there is federation info in the auth storage\n\t\tlet federatedInfo = null;\n\t\ttry {\n\t\t\tfederatedInfo = JSON.parse(\n\t\t\t\tthis._storage.getItem('aws-amplify-federatedInfo')\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tlogger.debug('failed to get or parse item aws-amplify-federatedInfo', e);\n\t\t}\n\n\t\tif (federatedInfo) {\n\t\t\t// refresh the jwt token here if necessary\n\t\t\treturn this.Credentials.refreshFederatedToken(federatedInfo);\n\t\t} else {\n\t\t\treturn this.currentSession()\n\t\t\t\t.then(session => {\n\t\t\t\t\tlogger.debug('getting session success', session);\n\t\t\t\t\treturn this.Credentials.set(session, 'session');\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tlogger.debug('getting guest credentials');\n\t\t\t\t\treturn this.Credentials.set(null, 'guest');\n\t\t\t\t});\n\t\t}\n\t}\n\n\tpublic currentCredentials(): Promise<ICredentials> {\n\t\tlogger.debug('getting current credentials');\n\t\treturn this.Credentials.get();\n\t}\n\n\t/**\n\t * Initiate an attribute confirmation request\n\t * @param {Object} user - The CognitoUser\n\t * @param {Object} attr - The attributes to be verified\n\t * @return - A promise resolves to callback data if success\n\t */\n\tpublic verifyUserAttribute(\n\t\tuser: CognitoUser | any,\n\t\tattr: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise<void> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.getAttributeVerificationCode(\n\t\t\t\tattr,\n\t\t\t\t{\n\t\t\t\t\tonSuccess(success) {\n\t\t\t\t\t\treturn resolve(success);\n\t\t\t\t\t},\n\t\t\t\t\tonFailure(err) {\n\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Confirm an attribute using a confirmation code\n\t * @param {Object} user - The CognitoUser\n\t * @param {Object} attr - The attribute to be verified\n\t * @param {String} code - The confirmation code\n\t * @return - A promise resolves to callback data if success\n\t */\n\tpublic verifyUserAttributeSubmit(\n\t\tuser: CognitoUser | any,\n\t\tattr: string,\n\t\tcode: string\n\t): Promise<string> {\n\t\tif (!code) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyCode);\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.verifyAttribute(attr, code, {\n\t\t\t\tonSuccess(data) {\n\t\t\t\t\tresolve(data);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t\tonFailure(err) {\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic verifyCurrentUserAttribute(attr: string): Promise<void> {\n\t\tconst that = this;\n\t\treturn that\n\t\t\t.currentUserPoolUser()\n\t\t\t.then(user => that.verifyUserAttribute(user, attr));\n\t}\n\n\t/**\n\t * Confirm current user's attribute using a confirmation code\n\t * @param {Object} attr - The attribute to be verified\n\t * @param {String} code - The confirmation code\n\t * @return - A promise resolves to callback data if success\n\t */\n\tverifyCurrentUserAttributeSubmit(\n\t\tattr: string,\n\t\tcode: string\n\t): Promise<string> {\n\t\tconst that = this;\n\t\treturn that\n\t\t\t.currentUserPoolUser()\n\t\t\t.then(user => that.verifyUserAttributeSubmit(user, attr, code));\n\t}\n\n\tprivate async cognitoIdentitySignOut(\n\t\topts: SignOutOpts,\n\t\tuser: CognitoUser | any\n\t) {\n\t\ttry {\n\t\t\tawait this._storageSync;\n\t\t} catch (e) {\n\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\tthrow e;\n\t\t}\n\n\t\tconst isSignedInHostedUI =\n\t\t\tthis._oAuthHandler &&\n\t\t\tthis._storage.getItem('amplify-signin-with-hostedUI') === 'true';\n\n\t\treturn new Promise((res, rej) => {\n\t\t\tif (opts && opts.global) {\n\t\t\t\tlogger.debug('user global sign out', user);\n\t\t\t\t// in order to use global signout\n\t\t\t\t// we must validate the user as an authenticated user by using getSession\n\t\t\t\tconst clientMetadata = this._config.clientMetadata; // TODO: verify behavior if this is override during signIn\n\n\t\t\t\tuser.getSession(\n\t\t\t\t\tasync (err, result) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tlogger.debug('failed to get the user session', err);\n\t\t\t\t\t\t\tif (this.isSessionInvalid(err)) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait this.cleanUpInvalidSession(user);\n\t\t\t\t\t\t\t\t} catch (cleanUpError) {\n\t\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t\t`Session is invalid due to: ${err.message} and failed to clean up invalid session: ${cleanUpError.message}`\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tuser.globalSignOut({\n\t\t\t\t\t\t\tonSuccess: data => {\n\t\t\t\t\t\t\t\tlogger.debug('global sign out success');\n\t\t\t\t\t\t\t\tif (isSignedInHostedUI) {\n\t\t\t\t\t\t\t\t\tthis.oAuthSignOutRedirect(res, rej);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn res();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\t\t\tlogger.debug('global sign out failed', err);\n\t\t\t\t\t\t\t\treturn rej(err);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t{ clientMetadata }\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tlogger.debug('user sign out', user);\n\t\t\t\tuser.signOut(() => {\n\t\t\t\t\tif (isSignedInHostedUI) {\n\t\t\t\t\t\tthis.oAuthSignOutRedirect(res, rej);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn res();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate oAuthSignOutRedirect(\n\t\tresolve: () => void,\n\t\treject: (reason?: any) => void\n\t) {\n\t\tconst { isBrowser } = browserOrNode();\n\n\t\tif (isBrowser) {\n\t\t\tthis.oAuthSignOutRedirectOrReject(reject);\n\t\t} else {\n\t\t\tthis.oAuthSignOutAndResolve(resolve);\n\t\t}\n\t}\n\n\tprivate oAuthSignOutAndResolve(resolve: () => void) {\n\t\tthis._oAuthHandler.signOut();\n\t\tresolve();\n\t}\n\n\tprivate oAuthSignOutRedirectOrReject(reject: (reason?: any) => void) {\n\t\tthis._oAuthHandler.signOut(); // this method redirects url\n\n\t\t// App should be redirected to another url otherwise it will reject\n\t\tsetTimeout(() => reject(Error('Signout timeout fail')), 3000);\n\t}\n\n\t/**\n\t * Sign out method\n\t * @\n\t * @return - A promise resolved if success\n\t */\n\tpublic async signOut(opts: SignOutOpts = {}): Promise<any> {\n\t\ttry {\n\t\t\tawait this.cleanCachedItems();\n\t\t} catch (e) {\n\t\t\tlogger.debug('failed to clear cached items');\n\t\t}\n\n\t\tif (this.userPool) {\n\t\t\ttry {\n\t\t\t\tawait this._storageSync;\n\t\t\t} catch (e) {\n\t\t\t\tlogger.debug('Failed to sync cache info into memory', e);\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t\tconst user = this.userPool.getCurrentUser();\n\t\t\tif (user) {\n\t\t\t\tawait this.cognitoIdentitySignOut(opts, user);\n\t\t\t} else {\n\t\t\t\tlogger.debug('no current Cognito user');\n\t\t\t}\n\t\t} else {\n\t\t\tlogger.debug('no Cognito User pool');\n\t\t}\n\n\t\t/**\n\t\t * Note for future refactor - no reliable way to get username with\n\t\t * Cognito User Pools vs Identity when federating with Social Providers\n\t\t * This is why we need a well structured session object that can be inspected\n\t\t * and information passed back in the message below for Hub dispatch\n\t\t */\n\t\tdispatchAuthEvent('signOut', this.user, `A user has been signed out`);\n\t\tthis.user = null;\n\t}\n\n\tprivate async cleanCachedItems() {\n\t\t// clear cognito cached item\n\t\tawait this.Credentials.clear();\n\t}\n\n\t/**\n\t * Change a password for an authenticated user\n\t * @param {Object} user - The CognitoUser object\n\t * @param {String} oldPassword - the current password\n\t * @param {String} newPassword - the requested new password\n\t * @return - A promise resolves if success\n\t */\n\tpublic changePassword(\n\t\tuser: CognitoUser | any,\n\t\toldPassword: string,\n\t\tnewPassword: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise<'SUCCESS'> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.userSession(user).then(session => {\n\t\t\t\tuser.changePassword(\n\t\t\t\t\toldPassword,\n\t\t\t\t\tnewPassword,\n\t\t\t\t\t(err, data) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\tlogger.debug('change password failure', err);\n\t\t\t\t\t\t\treturn reject(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn resolve(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tclientMetadata\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Initiate a forgot password request\n\t * @param {String} username - the username to change password\n\t * @return - A promise resolves if success\n\t */\n\tpublic forgotPassword(\n\t\tusername: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise<any> {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\n\t\tconst user = this.createCognitoUser(username);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.forgotPassword(\n\t\t\t\t{\n\t\t\t\t\tonSuccess: () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\tlogger.debug('forgot password failure', err);\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'forgotPassword_failure',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t`${username} forgotPassword failed`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t\tinputVerificationCode: data => {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'forgotPassword',\n\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t`${username} has initiated forgot password flow`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Confirm a new password using a confirmation Code\n\t * @param {String} username - The username\n\t * @param {String} code - The confirmation code\n\t * @param {String} password - The new password\n\t * @return - A promise that resolves if success\n\t */\n\tpublic forgotPasswordSubmit(\n\t\tusername: string,\n\t\tcode: string,\n\t\tpassword: string,\n\t\tclientMetadata: ClientMetaData = this._config.clientMetadata\n\t): Promise<string> {\n\t\tif (!this.userPool) {\n\t\t\treturn this.rejectNoUserPool();\n\t\t}\n\t\tif (!username) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n\t\t}\n\t\tif (!code) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyCode);\n\t\t}\n\t\tif (!password) {\n\t\t\treturn this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n\t\t}\n\n\t\tconst user = this.createCognitoUser(username);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tuser.confirmPassword(\n\t\t\t\tcode,\n\t\t\t\tpassword,\n\t\t\t\t{\n\t\t\t\t\tonSuccess: success => {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'forgotPasswordSubmit',\n\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t`${username} forgotPasswordSubmit successful`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(success);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t\tonFailure: err => {\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'forgotPasswordSubmit_failure',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t\t`${username} forgotPasswordSubmit failed`\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tclientMetadata\n\t\t\t);\n\t\t});\n\t}\n\n\t/**\n\t * Get user information\n\t * @async\n\t * @return {Object }- current User's information\n\t */\n\tpublic async currentUserInfo() {\n\t\tconst source = this.Credentials.getCredSource();\n\n\t\tif (!source || source === 'aws' || source === 'userPool') {\n\t\t\tconst user = await this.currentUserPoolUser().catch(err =>\n\t\t\t\tlogger.error(err)\n\t\t\t);\n\t\t\tif (!user) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst attributes = await this.userAttributes(user);\n\t\t\t\tconst userAttrs: object = this.attributesToObject(attributes);\n\t\t\t\tlet credentials = null;\n\t\t\t\ttry {\n\t\t\t\t\tcredentials = await this.currentCredentials();\n\t\t\t\t} catch (e) {\n\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t'Failed to retrieve credentials while getting current user info',\n\t\t\t\t\t\te\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst info = {\n\t\t\t\t\tid: credentials ? credentials.identityId : undefined,\n\t\t\t\t\tusername: user.getUsername(),\n\t\t\t\t\tattributes: userAttrs,\n\t\t\t\t};\n\t\t\t\treturn info;\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error('currentUserInfo error', err);\n\t\t\t\treturn {};\n\t\t\t}\n\t\t}\n\n\t\tif (source === 'federated') {\n\t\t\tconst user = this.user;\n\t\t\treturn user ? user : {};\n\t\t}\n\t}\n\n\tpublic async federatedSignIn(\n\t\toptions?: FederatedSignInOptions\n\t): Promise<ICredentials>;\n\tpublic async federatedSignIn(\n\t\tprovider: LegacyProvider,\n\t\tresponse: FederatedResponse,\n\t\tuser: FederatedUser\n\t): Promise<ICredentials>;\n\tpublic async federatedSignIn(\n\t\toptions?: FederatedSignInOptionsCustom\n\t): Promise<ICredentials>;\n\tpublic async federatedSignIn(\n\t\tproviderOrOptions:\n\t\t\t| LegacyProvider\n\t\t\t| FederatedSignInOptions\n\t\t\t| FederatedSignInOptionsCustom,\n\t\tresponse?: FederatedResponse,\n\t\tuser?: FederatedUser\n\t): Promise<ICredentials> {\n\t\tif (!this._config.identityPoolId && !this._config.userPoolId) {\n\t\t\tthrow new Error(\n\t\t\t\t`Federation requires either a User Pool or Identity Pool in config`\n\t\t\t);\n\t\t}\n\n\t\t// Ensure backwards compatability\n\t\tif (typeof providerOrOptions === 'undefined') {\n\t\t\tif (this._config.identityPoolId && !this._config.userPoolId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Federation with Identity Pools requires tokens passed as arguments`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tisFederatedSignInOptions(providerOrOptions) ||\n\t\t\tisFederatedSignInOptionsCustom(providerOrOptions) ||\n\t\t\thasCustomState(providerOrOptions) ||\n\t\t\ttypeof providerOrOptions === 'undefined'\n\t\t) {\n\t\t\tconst options = providerOrOptions || {\n\t\t\t\tprovider: CognitoHostedUIIdentityProvider.Cognito,\n\t\t\t};\n\t\t\tconst provider = isFederatedSignInOptions(options)\n\t\t\t\t? options.provider\n\t\t\t\t: (options as FederatedSignInOptionsCustom).customProvider;\n\n\t\t\tconst customState = isFederatedSignInOptions(options)\n\t\t\t\t? options.customState\n\t\t\t\t: (options as FederatedSignInOptionsCustom).customState;\n\n\t\t\tif (this._config.userPoolId) {\n\t\t\t\tconst client_id = isCognitoHostedOpts(this._config.oauth)\n\t\t\t\t\t? this._config.userPoolWebClientId\n\t\t\t\t\t: this._config.oauth.clientID;\n\t\t\t\t/*Note: Invenstigate automatically adding trailing slash */\n\t\t\t\tconst redirect_uri = isCognitoHostedOpts(this._config.oauth)\n\t\t\t\t\t? this._config.oauth.redirectSignIn\n\t\t\t\t\t: this._config.oauth.redirectUri;\n\n\t\t\t\tthis._oAuthHandler.oauthSignIn(\n\t\t\t\t\tthis._config.oauth.responseType,\n\t\t\t\t\tthis._config.oauth.domain,\n\t\t\t\t\tredirect_uri,\n\t\t\t\t\tclient_id,\n\t\t\t\t\tprovider,\n\t\t\t\t\tcustomState\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tconst provider = providerOrOptions;\n\t\t\t// To check if the user is already logged in\n\t\t\ttry {\n\t\t\t\tconst loggedInUser = JSON.stringify(\n\t\t\t\t\tJSON.parse(this._storage.getItem('aws-amplify-federatedInfo')).user\n\t\t\t\t);\n\t\t\t\tif (loggedInUser) {\n\t\t\t\t\tlogger.warn(`There is already a signed in user: ${loggedInUser} in your app.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tYou should not call Auth.federatedSignIn method again as it may cause unexpected behavior.`);\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tconst { token, identity_id, expires_at } = response;\n\t\t\t// Because this.Credentials.set would update the user info with identity id\n\t\t\t// So we need to retrieve the user again.\n\t\t\tconst credentials = await this.Credentials.set(\n\t\t\t\t{ provider, token, identity_id, user, expires_at },\n\t\t\t\t'federation'\n\t\t\t);\n\t\t\tconst currentUser = await this.currentAuthenticatedUser();\n\t\t\tdispatchAuthEvent(\n\t\t\t\t'signIn',\n\t\t\t\tcurrentUser,\n\t\t\t\t`A user ${currentUser.username} has been signed in`\n\t\t\t);\n\t\t\tlogger.debug('federated sign in credentials', credentials);\n\t\t\treturn credentials;\n\t\t}\n\t}\n\n\t/**\n\t * Used to complete the OAuth flow with or without the Cognito Hosted UI\n\t * @param {String} URL - optional parameter for customers to pass in the response URL\n\t */\n\tprivate async _handleAuthResponse(URL?: string) {\n\t\tif (this.oAuthFlowInProgress) {\n\t\t\tlogger.debug(`Skipping URL ${URL} current flow in progress`);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tthis.oAuthFlowInProgress = true;\n\t\t\tif (!this._config.userPoolId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`OAuth responses require a User Pool defined in config`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tdispatchAuthEvent(\n\t\t\t\t'parsingCallbackUrl',\n\t\t\t\t{ url: URL },\n\t\t\t\t`The callback url is being parsed`\n\t\t\t);\n\n\t\t\tconst currentUrl =\n\t\t\t\tURL || (browserOrNode().isBrowser ? window.location.href : '');\n\n\t\t\tconst hasCodeOrError = !!(parse(currentUrl).query || '')\n\t\t\t\t.split('&')\n\t\t\t\t.map(entry => entry.split('='))\n\t\t\t\t.find(([k]) => k === 'code' || k === 'error');\n\n\t\t\tconst hasTokenOrError = !!(parse(currentUrl).hash || '#')\n\t\t\t\t.substr(1)\n\t\t\t\t.split('&')\n\t\t\t\t.map(entry => entry.split('='))\n\t\t\t\t.find(([k]) => k === 'access_token' || k === 'error');\n\n\t\t\tif (hasCodeOrError || hasTokenOrError) {\n\t\t\t\tthis._storage.setItem('amplify-redirected-from-hosted-ui', 'true');\n\t\t\t\ttry {\n\t\t\t\t\tconst { accessToken, idToken, refreshToken, state } =\n\t\t\t\t\t\tawait this._oAuthHandler.handleAuthResponse(currentUrl);\n\t\t\t\t\tconst session = new CognitoUserSession({\n\t\t\t\t\t\tIdToken: new CognitoIdToken({ IdToken: idToken }),\n\t\t\t\t\t\tRefreshToken: new CognitoRefreshToken({\n\t\t\t\t\t\t\tRefreshToken: refreshToken,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tAccessToken: new CognitoAccessToken({\n\t\t\t\t\t\t\tAccessToken: accessToken,\n\t\t\t\t\t\t}),\n\t\t\t\t\t});\n\n\t\t\t\t\tlet credentials;\n\t\t\t\t\t// Get AWS Credentials & store if Identity Pool is defined\n\t\t\t\t\tif (this._config.identityPoolId) {\n\t\t\t\t\t\tcredentials = await this.Credentials.set(session, 'session');\n\t\t\t\t\t\tlogger.debug('AWS credentials', credentials);\n\t\t\t\t\t}\n\n\t\t\t\t\t/*\n\t\t\t\tPrior to the request we do sign the custom state along with the state we set. This check will verify\n\t\t\t\tif there is a dash indicated when setting custom state from the request. If a dash is contained\n\t\t\t\tthen there is custom state present on the state string.\n\t\t\t\t*/\n\t\t\t\t\tconst isCustomStateIncluded = /-/.test(state);\n\n\t\t\t\t\t/*\n\t\t\t\tThe following is to create a user for the Cognito Identity SDK to store the tokens\n\t\t\t\tWhen we remove this SDK later that logic will have to be centralized in our new version\n\t\t\t\t*/\n\t\t\t\t\t//#region\n\t\t\t\t\tconst currentUser = this.createCognitoUser(\n\t\t\t\t\t\tsession.getIdToken().decodePayload()['cognito:username']\n\t\t\t\t\t);\n\n\t\t\t\t\t// This calls cacheTokens() in Cognito SDK\n\t\t\t\t\tcurrentUser.setSignInUserSession(session);\n\n\t\t\t\t\tif (window && typeof window.history !== 'undefined') {\n\t\t\t\t\t\twindow.history.replaceState(\n\t\t\t\t\t\t\twindow.history.state,\n\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t(this._config.oauth as AwsCognitoOAuthOpts).redirectSignIn\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'signIn',\n\t\t\t\t\t\tcurrentUser,\n\t\t\t\t\t\t`A user ${currentUser.getUsername()} has been signed in`\n\t\t\t\t\t);\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'cognitoHostedUI',\n\t\t\t\t\t\tcurrentUser,\n\t\t\t\t\t\t`A user ${currentUser.getUsername()} has been signed in via Cognito Hosted UI`\n\t\t\t\t\t);\n\n\t\t\t\t\tif (isCustomStateIncluded) {\n\t\t\t\t\t\tconst customState = state.split('-').splice(1).join('-');\n\n\t\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t\t'customOAuthState',\n\t\t\t\t\t\t\turlSafeDecode(customState),\n\t\t\t\t\t\t\t`State for user ${currentUser.getUsername()}`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t//#endregion\n\n\t\t\t\t\treturn credentials;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tlogger.debug('Error in cognito hosted auth response', err);\n\n\t\t\t\t\t// Just like a successful handling of `?code`, replace the window history to \"dispose\" of the `code`.\n\t\t\t\t\t// Otherwise, reloading the page will throw errors as the `code` has already been spent.\n\t\t\t\t\tif (window && typeof window.history !== 'undefined') {\n\t\t\t\t\t\twindow.history.replaceState(\n\t\t\t\t\t\t\twindow.history.state,\n\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t(this._config.oauth as AwsCognitoOAuthOpts).redirectSignIn\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'signIn_failure',\n\t\t\t\t\t\terr,\n\t\t\t\t\t\t`The OAuth response flow failed`\n\t\t\t\t\t);\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'cognitoHostedUI_failure',\n\t\t\t\t\t\terr,\n\t\t\t\t\t\t`A failure occurred when returning to the Cognito Hosted UI`\n\t\t\t\t\t);\n\t\t\t\t\tdispatchAuthEvent(\n\t\t\t\t\t\t'customState_failure',\n\t\t\t\t\t\terr,\n\t\t\t\t\t\t`A failure occurred when returning state`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tthis.oAuthFlowInProgress = false;\n\t\t}\n\t}\n\n\t/**\n\t * Compact version of credentials\n\t * @param {Object} credentials\n\t * @return {Object} - Credentials\n\t */\n\tpublic essentialCredentials(credentials): ICredentials {\n\t\treturn {\n\t\t\taccessKeyId: credentials.accessKeyId,\n\t\t\tsessionToken: credentials.sessionToken,\n\t\t\tsecretAccessKey: credentials.secretAccessKey,\n\t\t\tidentityId: credentials.identityId,\n\t\t\tauthenticated: credentials.authenticated,\n\t\t};\n\t}\n\n\tprivate attributesToObject(attributes) {\n\t\tconst obj = {};\n\t\tif (attributes) {\n\t\t\tattributes.map(attribute => {\n\t\t\t\tif (\n\t\t\t\t\tattribute.Name === 'email_verified' ||\n\t\t\t\t\tattribute.Name === 'phone_number_verified'\n\t\t\t\t) {\n\t\t\t\t\tobj[attribute.Name] =\n\t\t\t\t\t\tthis.isTruthyString(attribute.Value) || attribute.Value === true;\n\t\t\t\t} else {\n\t\t\t\t\tobj[attribute.Name] = attribute.Value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn obj;\n\t}\n\n\tprivate isTruthyString(value: any): boolean {\n\t\treturn (\n\t\t\ttypeof value.toLowerCase === 'function' && value.toLowerCase() === 'true'\n\t\t);\n\t}\n\n\tprivate createCognitoUser(username: string): CognitoUser {\n\t\tconst userData: ICognitoUserData = {\n\t\t\tUsername: username,\n\t\t\tPool: this.userPool,\n\t\t};\n\t\tuserData.Storage = this._storage;\n\n\t\tconst { authenticationFlowType } = this._config;\n\n\t\tconst user = new CognitoUser(userData);\n\t\tif (authenticationFlowType) {\n\t\t\tuser.setAuthenticationFlowType(authenticationFlowType);\n\t\t}\n\t\treturn user;\n\t}\n\n\tprivate _isValidAuthStorage(obj) {\n\t\t// We need to check if the obj has the functions of Storage\n\t\treturn (\n\t\t\t!!obj &&\n\t\t\ttypeof obj.getItem === 'function' &&\n\t\t\ttypeof obj.setItem === 'function' &&\n\t\t\ttypeof obj.removeItem === 'function' &&\n\t\t\ttypeof obj.clear === 'function'\n\t\t);\n\t}\n\n\tprivate noUserPoolErrorHandler(config: AuthOptions): AuthErrorTypes {\n\t\tif (config) {\n\t\t\tif (!config.userPoolId || !config.identityPoolId) {\n\t\t\t\treturn AuthErrorTypes.MissingAuthConfig;\n\t\t\t}\n\t\t}\n\t\treturn AuthErrorTypes.NoConfig;\n\t}\n\n\tprivate rejectAuthError(type: AuthErrorTypes): Promise<never> {\n\t\treturn Promise.reject(new AuthError(type));\n\t}\n\n\tprivate rejectNoUserPool(): Promise<never> {\n\t\tconst type = this.noUserPoolErrorHandler(this._config);\n\t\treturn Promise.reject(new NoUserPoolError(type));\n\t}\n\n\tpublic async rememberDevice(): Promise<string | AuthError> {\n\t\tlet currUser;\n\n\t\ttry {\n\t\t\tcurrUser = await this.currentUserPoolUser();\n\t\t} catch (error) {\n\t\t\tlogger.debug('The user is not authenticated by the error', error);\n\t\t\treturn Promise.reject('The user is not authenticated');\n\t\t}\n\n\t\tcurrUser.getCachedDeviceKeyAndPassword();\n\t\treturn new Promise((res, rej) => {\n\t\t\tcurrUser.setDeviceStatusRemembered({\n\t\t\t\tonSuccess: data => {\n\t\t\t\t\tres(data);\n\t\t\t\t},\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tif (err.code === 'InvalidParameterException') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.DeviceConfig));\n\t\t\t\t\t} else if (err.code === 'NetworkError') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.NetworkError));\n\t\t\t\t\t} else {\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic async forgetDevice(): Promise<void> {\n\t\tlet currUser;\n\n\t\ttry {\n\t\t\tcurrUser = await this.currentUserPoolUser();\n\t\t} catch (error) {\n\t\t\tlogger.debug('The user is not authenticated by the error', error);\n\t\t\treturn Promise.reject('The user is not authenticated');\n\t\t}\n\n\t\tcurrUser.getCachedDeviceKeyAndPassword();\n\t\treturn new Promise((res, rej) => {\n\t\t\tcurrUser.forgetDevice({\n\t\t\t\tonSuccess: data => {\n\t\t\t\t\tres(data);\n\t\t\t\t},\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tif (err.code === 'InvalidParameterException') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.DeviceConfig));\n\t\t\t\t\t} else if (err.code === 'NetworkError') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.NetworkError));\n\t\t\t\t\t} else {\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic async fetchDevices(): Promise<IAuthDevice[]> {\n\t\tlet currUser;\n\n\t\ttry {\n\t\t\tcurrUser = await this.currentUserPoolUser();\n\t\t} catch (error) {\n\t\t\tlogger.debug('The user is not authenticated by the error', error);\n\t\t\tthrow new Error('The user is not authenticated');\n\t\t}\n\n\t\tcurrUser.getCachedDeviceKeyAndPassword();\n\t\treturn new Promise((res, rej) => {\n\t\t\tconst cb = {\n\t\t\t\tonSuccess(data) {\n\t\t\t\t\tconst deviceList: IAuthDevice[] = data.Devices.map(device => {\n\t\t\t\t\t\tconst deviceName =\n\t\t\t\t\t\t\tdevice.DeviceAttributes.find(\n\t\t\t\t\t\t\t\t({ Name }) => Name === 'device_name'\n\t\t\t\t\t\t\t) || {};\n\n\t\t\t\t\t\tconst deviceInfo: IAuthDevice = {\n\t\t\t\t\t\t\tid: device.DeviceKey,\n\t\t\t\t\t\t\tname: deviceName.Value,\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn deviceInfo;\n\t\t\t\t\t});\n\t\t\t\t\tres(deviceList);\n\t\t\t\t},\n\t\t\t\tonFailure: err => {\n\t\t\t\t\tif (err.code === 'InvalidParameterException') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.DeviceConfig));\n\t\t\t\t\t} else if (err.code === 'NetworkError') {\n\t\t\t\t\t\trej(new AuthError(AuthErrorTypes.NetworkError));\n\t\t\t\t\t} else {\n\t\t\t\t\t\trej(err);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t\tcurrUser.listDevices(MAX_DEVICES, null, cb);\n\t\t});\n\t}\n}\n\nexport const Auth = new AuthClass(null);\n\nAmplify.register(Auth);\n","export var FRAMEWORK = {\n  None: '0',\n  ReactNative: '1'\n};\nexport var AUTH_CATEGORY = 'auth';","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { browserOrNode } from '@aws-amplify/core';\n\nexport default callback => {\n\tif (browserOrNode().isBrowser && window.location) {\n\t\tconst url = window.location.href;\n\n\t\tcallback({ url });\n\t} else if (browserOrNode().isNode) {\n\t\t// continue building on ssr\n\t\t() => {}; // noop\n\t} else {\n\t\tthrow new Error('Not supported');\n\t}\n};\n","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 _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray 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 };","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 };","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 _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 };","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 _arrayWithHoles(r) {\n  if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles 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 };","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 };","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 };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nvar defaultGetPrefixCls = function defaultGetPrefixCls(suffixCls, customizePrefixCls) {\n  if (customizePrefixCls) return customizePrefixCls;\n  return suffixCls ? \"ant-\".concat(suffixCls) : 'ant';\n};\n// zombieJ: 🚨 Do not pass `defaultRenderEmpty` here since it will case circular dependency.\nexport var ConfigContext = /*#__PURE__*/React.createContext({\n  // We provide a default function for Context without provider\n  getPrefixCls: defaultGetPrefixCls\n});\nexport var ConfigConsumer = ConfigContext.Consumer;\n/** @deprecated Use hooks instead. This is a legacy function */\nexport function withConfigConsumer(config) {\n  return function withConfigConsumerFunc(Component) {\n    // Wrap with ConfigConsumer. Since we need compatible with react 15, be care when using ref methods\n    var SFC = function SFC(props) {\n      return /*#__PURE__*/React.createElement(ConfigConsumer, null, function (configProps) {\n        var basicPrefixCls = config.prefixCls;\n        var getPrefixCls = configProps.getPrefixCls;\n        var customizePrefixCls = props.prefixCls;\n        var prefixCls = getPrefixCls(basicPrefixCls, customizePrefixCls);\n        return /*#__PURE__*/React.createElement(Component, _extends({}, configProps, props, {\n          prefixCls: prefixCls\n        }));\n      });\n    };\n    var cons = Component.constructor;\n    var name = cons && cons.displayName || Component.name || 'Component';\n    if (process.env.NODE_ENV !== 'production') {\n      SFC.displayName = \"withConfigConsumer(\".concat(name, \")\");\n    }\n    return SFC;\n  };\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nexport var LayoutContext = /*#__PURE__*/React.createContext({\n  siderHook: {\n    addSider: function addSider() {\n      return null;\n    },\n    removeSider: function removeSider() {\n      return null;\n    }\n  }\n});\nfunction generator(_ref) {\n  var suffixCls = _ref.suffixCls,\n    tagName = _ref.tagName,\n    displayName = _ref.displayName;\n  return function (BasicComponent) {\n    var Adapter = /*#__PURE__*/React.forwardRef(function (props, ref) {\n      var _React$useContext = React.useContext(ConfigContext),\n        getPrefixCls = _React$useContext.getPrefixCls;\n      var customizePrefixCls = props.prefixCls;\n      var prefixCls = getPrefixCls(suffixCls, customizePrefixCls);\n      return /*#__PURE__*/React.createElement(BasicComponent, _extends({\n        ref: ref,\n        prefixCls: prefixCls,\n        tagName: tagName\n      }, props));\n    });\n    if (process.env.NODE_ENV !== 'production') {\n      Adapter.displayName = displayName;\n    }\n    return Adapter;\n  };\n}\nvar Basic = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n    className = props.className,\n    children = props.children,\n    tagName = props.tagName,\n    others = __rest(props, [\"prefixCls\", \"className\", \"children\", \"tagName\"]);\n  var classString = classNames(prefixCls, className);\n  return /*#__PURE__*/React.createElement(tagName, _extends(_extends({\n    className: classString\n  }, others), {\n    ref: ref\n  }), children);\n});\nvar BasicLayout = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _classNames;\n  var _React$useContext2 = React.useContext(ConfigContext),\n    direction = _React$useContext2.direction;\n  var _React$useState = React.useState([]),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    siders = _React$useState2[0],\n    setSiders = _React$useState2[1];\n  var prefixCls = props.prefixCls,\n    className = props.className,\n    children = props.children,\n    hasSider = props.hasSider,\n    Tag = props.tagName,\n    others = __rest(props, [\"prefixCls\", \"className\", \"children\", \"hasSider\", \"tagName\"]);\n  var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-sider\"), typeof hasSider === 'boolean' ? hasSider : siders.length > 0), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n  var contextValue = React.useMemo(function () {\n    return {\n      siderHook: {\n        addSider: function addSider(id) {\n          setSiders(function (prev) {\n            return [].concat(_toConsumableArray(prev), [id]);\n          });\n        },\n        removeSider: function removeSider(id) {\n          setSiders(function (prev) {\n            return prev.filter(function (currentId) {\n              return currentId !== id;\n            });\n          });\n        }\n      }\n    };\n  }, []);\n  return /*#__PURE__*/React.createElement(LayoutContext.Provider, {\n    value: contextValue\n  }, /*#__PURE__*/React.createElement(Tag, _extends({\n    ref: ref,\n    className: classString\n  }, others), children));\n});\nvar Layout = generator({\n  suffixCls: 'layout',\n  tagName: 'section',\n  displayName: 'Layout'\n})(BasicLayout);\nvar Header = generator({\n  suffixCls: 'layout-header',\n  tagName: 'header',\n  displayName: 'Header'\n})(Basic);\nvar Footer = generator({\n  suffixCls: 'layout-footer',\n  tagName: 'footer',\n  displayName: 'Footer'\n})(Basic);\nvar Content = generator({\n  suffixCls: 'layout-content',\n  tagName: 'main',\n  displayName: 'Content'\n})(Basic);\nexport { Header, Footer, Content };\nexport default Layout;","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n  var t = Object.keys(e);\n  if (Object.getOwnPropertySymbols) {\n    var o = Object.getOwnPropertySymbols(e);\n    r && (o = o.filter(function (r) {\n      return Object.getOwnPropertyDescriptor(e, r).enumerable;\n    })), t.push.apply(t, o);\n  }\n  return t;\n}\nfunction _objectSpread2(e) {\n  for (var r = 1; r < arguments.length; r++) {\n    var t = null != arguments[r] ? arguments[r] : {};\n    r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n      defineProperty(e, r, t[r]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n      Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n    });\n  }\n  return e;\n}\nexport { _objectSpread2 as default };","// This icon file is generated automatically.\nvar BarsOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z\" } }] }, \"name\": \"bars\", \"theme\": \"outlined\" };\nexport default BarsOutlined;\n","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 objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var s = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\nexport { _objectWithoutProperties as default };","import { createContext } from 'react';\nvar IconContext = /*#__PURE__*/createContext({});\nexport default IconContext;","/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nexport function bound01(n, max) {\n    if (isOnePointZero(n)) {\n        n = '100%';\n    }\n    var isPercent = isPercentage(n);\n    n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n    // Automatically convert percentage into number\n    if (isPercent) {\n        n = parseInt(String(n * max), 10) / 100;\n    }\n    // Handle floating point rounding errors\n    if (Math.abs(n - max) < 0.000001) {\n        return 1;\n    }\n    // Convert into [0, 1] range if it isn't already\n    if (max === 360) {\n        // If n is a hue given in degrees,\n        // wrap around out-of-range values into [0, 360] range\n        // then convert into [0, 1].\n        n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n    }\n    else {\n        // If n not a hue given in degrees\n        // Convert into [0, 1] range if it isn't already.\n        n = (n % max) / parseFloat(String(max));\n    }\n    return n;\n}\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nexport function clamp01(val) {\n    return Math.min(1, Math.max(0, val));\n}\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n * @hidden\n */\nexport function isOnePointZero(n) {\n    return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nexport function isPercentage(n) {\n    return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nexport function boundAlpha(a) {\n    a = parseFloat(a);\n    if (isNaN(a) || a < 0 || a > 1) {\n        a = 1;\n    }\n    return a;\n}\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nexport function convertToPercentage(n) {\n    if (n <= 1) {\n        return \"\".concat(Number(n) * 100, \"%\");\n    }\n    return n;\n}\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nexport function pad2(c) {\n    return c.length === 1 ? '0' + c : String(c);\n}\n","import { bound01, pad2 } from './util';\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * <http://www.w3.org/TR/css3-color/>\n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nexport function rgbToRgb(r, g, b) {\n    return {\n        r: bound01(r, 255) * 255,\n        g: bound01(g, 255) * 255,\n        b: bound01(b, 255) * 255,\n    };\n}\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nexport function rgbToHsl(r, g, b) {\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n    var max = Math.max(r, g, b);\n    var min = Math.min(r, g, b);\n    var h = 0;\n    var s = 0;\n    var l = (max + min) / 2;\n    if (max === min) {\n        s = 0;\n        h = 0; // achromatic\n    }\n    else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch (max) {\n            case r:\n                h = (g - b) / d + (g < b ? 6 : 0);\n                break;\n            case g:\n                h = (b - r) / d + 2;\n                break;\n            case b:\n                h = (r - g) / d + 4;\n                break;\n            default:\n                break;\n        }\n        h /= 6;\n    }\n    return { h: h, s: s, l: l };\n}\nfunction hue2rgb(p, q, t) {\n    if (t < 0) {\n        t += 1;\n    }\n    if (t > 1) {\n        t -= 1;\n    }\n    if (t < 1 / 6) {\n        return p + (q - p) * (6 * t);\n    }\n    if (t < 1 / 2) {\n        return q;\n    }\n    if (t < 2 / 3) {\n        return p + (q - p) * (2 / 3 - t) * 6;\n    }\n    return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hslToRgb(h, s, l) {\n    var r;\n    var g;\n    var b;\n    h = bound01(h, 360);\n    s = bound01(s, 100);\n    l = bound01(l, 100);\n    if (s === 0) {\n        // achromatic\n        g = l;\n        b = l;\n        r = l;\n    }\n    else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1 / 3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1 / 3);\n    }\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nexport function rgbToHsv(r, g, b) {\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n    var max = Math.max(r, g, b);\n    var min = Math.min(r, g, b);\n    var h = 0;\n    var v = max;\n    var d = max - min;\n    var s = max === 0 ? 0 : d / max;\n    if (max === min) {\n        h = 0; // achromatic\n    }\n    else {\n        switch (max) {\n            case r:\n                h = (g - b) / d + (g < b ? 6 : 0);\n                break;\n            case g:\n                h = (b - r) / d + 2;\n                break;\n            case b:\n                h = (r - g) / d + 4;\n                break;\n            default:\n                break;\n        }\n        h /= 6;\n    }\n    return { h: h, s: s, v: v };\n}\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hsvToRgb(h, s, v) {\n    h = bound01(h, 360) * 6;\n    s = bound01(s, 100);\n    v = bound01(v, 100);\n    var i = Math.floor(h);\n    var f = h - i;\n    var p = v * (1 - s);\n    var q = v * (1 - f * s);\n    var t = v * (1 - (1 - f) * s);\n    var mod = i % 6;\n    var r = [v, q, p, p, t, v][mod];\n    var g = [t, v, v, q, p, p][mod];\n    var b = [p, p, t, v, v, q][mod];\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color to hex\n *\n * Assumes r, g, and b are contained in the set [0, 255]\n * Returns a 3 or 6 character hex\n */\nexport function rgbToHex(r, g, b, allow3Char) {\n    var hex = [\n        pad2(Math.round(r).toString(16)),\n        pad2(Math.round(g).toString(16)),\n        pad2(Math.round(b).toString(16)),\n    ];\n    // Return a 3 character hex if possible\n    if (allow3Char &&\n        hex[0].startsWith(hex[0].charAt(1)) &&\n        hex[1].startsWith(hex[1].charAt(1)) &&\n        hex[2].startsWith(hex[2].charAt(1))) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n    }\n    return hex.join('');\n}\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * Assumes r, g, b are contained in the set [0, 255] and\n * a in [0, 1]. Returns a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nexport function rgbaToHex(r, g, b, a, allow4Char) {\n    var hex = [\n        pad2(Math.round(r).toString(16)),\n        pad2(Math.round(g).toString(16)),\n        pad2(Math.round(b).toString(16)),\n        pad2(convertDecimalToHex(a)),\n    ];\n    // Return a 4 character hex if possible\n    if (allow4Char &&\n        hex[0].startsWith(hex[0].charAt(1)) &&\n        hex[1].startsWith(hex[1].charAt(1)) &&\n        hex[2].startsWith(hex[2].charAt(1)) &&\n        hex[3].startsWith(hex[3].charAt(1))) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n    }\n    return hex.join('');\n}\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n */\nexport function rgbaToArgbHex(r, g, b, a) {\n    var hex = [\n        pad2(convertDecimalToHex(a)),\n        pad2(Math.round(r).toString(16)),\n        pad2(Math.round(g).toString(16)),\n        pad2(Math.round(b).toString(16)),\n    ];\n    return hex.join('');\n}\n/** Converts a decimal to a hex value */\nexport function convertDecimalToHex(d) {\n    return Math.round(parseFloat(d) * 255).toString(16);\n}\n/** Converts a hex value to a decimal */\nexport function convertHexToDecimal(h) {\n    return parseIntFromHex(h) / 255;\n}\n/** Parse a base-16 hex value into a base-10 integer */\nexport function parseIntFromHex(val) {\n    return parseInt(val, 16);\n}\nexport function numberInputToObject(color) {\n    return {\n        r: color >> 16,\n        g: (color & 0xff00) >> 8,\n        b: color & 0xff,\n    };\n}\n","// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexport var names = {\n    aliceblue: '#f0f8ff',\n    antiquewhite: '#faebd7',\n    aqua: '#00ffff',\n    aquamarine: '#7fffd4',\n    azure: '#f0ffff',\n    beige: '#f5f5dc',\n    bisque: '#ffe4c4',\n    black: '#000000',\n    blanchedalmond: '#ffebcd',\n    blue: '#0000ff',\n    blueviolet: '#8a2be2',\n    brown: '#a52a2a',\n    burlywood: '#deb887',\n    cadetblue: '#5f9ea0',\n    chartreuse: '#7fff00',\n    chocolate: '#d2691e',\n    coral: '#ff7f50',\n    cornflowerblue: '#6495ed',\n    cornsilk: '#fff8dc',\n    crimson: '#dc143c',\n    cyan: '#00ffff',\n    darkblue: '#00008b',\n    darkcyan: '#008b8b',\n    darkgoldenrod: '#b8860b',\n    darkgray: '#a9a9a9',\n    darkgreen: '#006400',\n    darkgrey: '#a9a9a9',\n    darkkhaki: '#bdb76b',\n    darkmagenta: '#8b008b',\n    darkolivegreen: '#556b2f',\n    darkorange: '#ff8c00',\n    darkorchid: '#9932cc',\n    darkred: '#8b0000',\n    darksalmon: '#e9967a',\n    darkseagreen: '#8fbc8f',\n    darkslateblue: '#483d8b',\n    darkslategray: '#2f4f4f',\n    darkslategrey: '#2f4f4f',\n    darkturquoise: '#00ced1',\n    darkviolet: '#9400d3',\n    deeppink: '#ff1493',\n    deepskyblue: '#00bfff',\n    dimgray: '#696969',\n    dimgrey: '#696969',\n    dodgerblue: '#1e90ff',\n    firebrick: '#b22222',\n    floralwhite: '#fffaf0',\n    forestgreen: '#228b22',\n    fuchsia: '#ff00ff',\n    gainsboro: '#dcdcdc',\n    ghostwhite: '#f8f8ff',\n    goldenrod: '#daa520',\n    gold: '#ffd700',\n    gray: '#808080',\n    green: '#008000',\n    greenyellow: '#adff2f',\n    grey: '#808080',\n    honeydew: '#f0fff0',\n    hotpink: '#ff69b4',\n    indianred: '#cd5c5c',\n    indigo: '#4b0082',\n    ivory: '#fffff0',\n    khaki: '#f0e68c',\n    lavenderblush: '#fff0f5',\n    lavender: '#e6e6fa',\n    lawngreen: '#7cfc00',\n    lemonchiffon: '#fffacd',\n    lightblue: '#add8e6',\n    lightcoral: '#f08080',\n    lightcyan: '#e0ffff',\n    lightgoldenrodyellow: '#fafad2',\n    lightgray: '#d3d3d3',\n    lightgreen: '#90ee90',\n    lightgrey: '#d3d3d3',\n    lightpink: '#ffb6c1',\n    lightsalmon: '#ffa07a',\n    lightseagreen: '#20b2aa',\n    lightskyblue: '#87cefa',\n    lightslategray: '#778899',\n    lightslategrey: '#778899',\n    lightsteelblue: '#b0c4de',\n    lightyellow: '#ffffe0',\n    lime: '#00ff00',\n    limegreen: '#32cd32',\n    linen: '#faf0e6',\n    magenta: '#ff00ff',\n    maroon: '#800000',\n    mediumaquamarine: '#66cdaa',\n    mediumblue: '#0000cd',\n    mediumorchid: '#ba55d3',\n    mediumpurple: '#9370db',\n    mediumseagreen: '#3cb371',\n    mediumslateblue: '#7b68ee',\n    mediumspringgreen: '#00fa9a',\n    mediumturquoise: '#48d1cc',\n    mediumvioletred: '#c71585',\n    midnightblue: '#191970',\n    mintcream: '#f5fffa',\n    mistyrose: '#ffe4e1',\n    moccasin: '#ffe4b5',\n    navajowhite: '#ffdead',\n    navy: '#000080',\n    oldlace: '#fdf5e6',\n    olive: '#808000',\n    olivedrab: '#6b8e23',\n    orange: '#ffa500',\n    orangered: '#ff4500',\n    orchid: '#da70d6',\n    palegoldenrod: '#eee8aa',\n    palegreen: '#98fb98',\n    paleturquoise: '#afeeee',\n    palevioletred: '#db7093',\n    papayawhip: '#ffefd5',\n    peachpuff: '#ffdab9',\n    peru: '#cd853f',\n    pink: '#ffc0cb',\n    plum: '#dda0dd',\n    powderblue: '#b0e0e6',\n    purple: '#800080',\n    rebeccapurple: '#663399',\n    red: '#ff0000',\n    rosybrown: '#bc8f8f',\n    royalblue: '#4169e1',\n    saddlebrown: '#8b4513',\n    salmon: '#fa8072',\n    sandybrown: '#f4a460',\n    seagreen: '#2e8b57',\n    seashell: '#fff5ee',\n    sienna: '#a0522d',\n    silver: '#c0c0c0',\n    skyblue: '#87ceeb',\n    slateblue: '#6a5acd',\n    slategray: '#708090',\n    slategrey: '#708090',\n    snow: '#fffafa',\n    springgreen: '#00ff7f',\n    steelblue: '#4682b4',\n    tan: '#d2b48c',\n    teal: '#008080',\n    thistle: '#d8bfd8',\n    tomato: '#ff6347',\n    turquoise: '#40e0d0',\n    violet: '#ee82ee',\n    wheat: '#f5deb3',\n    white: '#ffffff',\n    whitesmoke: '#f5f5f5',\n    yellow: '#ffff00',\n    yellowgreen: '#9acd32',\n};\n","/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nimport { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb } from './conversion';\nimport { names } from './css-color-names';\nimport { boundAlpha, convertToPercentage } from './util';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nexport function inputToRGB(color) {\n    var rgb = { r: 0, g: 0, b: 0 };\n    var a = 1;\n    var s = null;\n    var v = null;\n    var l = null;\n    var ok = false;\n    var format = false;\n    if (typeof color === 'string') {\n        color = stringInputToObject(color);\n    }\n    if (typeof color === 'object') {\n        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n            rgb = rgbToRgb(color.r, color.g, color.b);\n            ok = true;\n            format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n            s = convertToPercentage(color.s);\n            v = convertToPercentage(color.v);\n            rgb = hsvToRgb(color.h, s, v);\n            ok = true;\n            format = 'hsv';\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n            s = convertToPercentage(color.s);\n            l = convertToPercentage(color.l);\n            rgb = hslToRgb(color.h, s, l);\n            ok = true;\n            format = 'hsl';\n        }\n        if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n            a = color.a;\n        }\n    }\n    a = boundAlpha(a);\n    return {\n        ok: ok,\n        format: color.format || format,\n        r: Math.min(255, Math.max(rgb.r, 0)),\n        g: Math.min(255, Math.max(rgb.g, 0)),\n        b: Math.min(255, Math.max(rgb.b, 0)),\n        a: a,\n    };\n}\n// <http://www.w3.org/TR/css3-values/#integers>\nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// <http://www.w3.org/TR/css3-values/#number-value>\nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\".concat(CSS_NUMBER, \")|(?:\").concat(CSS_INTEGER, \")\");\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar matchers = {\n    CSS_UNIT: new RegExp(CSS_UNIT),\n    rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n    rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n    hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n    hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n    hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n    hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n    hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n    hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing.  Take in a number of formats, and output an object\n * based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nexport function stringInputToObject(color) {\n    color = color.trim().toLowerCase();\n    if (color.length === 0) {\n        return false;\n    }\n    var named = false;\n    if (names[color]) {\n        color = names[color];\n        named = true;\n    }\n    else if (color === 'transparent') {\n        return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n    }\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    var match = matchers.rgb.exec(color);\n    if (match) {\n        return { r: match[1], g: match[2], b: match[3] };\n    }\n    match = matchers.rgba.exec(color);\n    if (match) {\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\n    }\n    match = matchers.hsl.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], l: match[3] };\n    }\n    match = matchers.hsla.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], l: match[3], a: match[4] };\n    }\n    match = matchers.hsv.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], v: match[3] };\n    }\n    match = matchers.hsva.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], v: match[3], a: match[4] };\n    }\n    match = matchers.hex8.exec(color);\n    if (match) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            a: convertHexToDecimal(match[4]),\n            format: named ? 'name' : 'hex8',\n        };\n    }\n    match = matchers.hex6.exec(color);\n    if (match) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            format: named ? 'name' : 'hex',\n        };\n    }\n    match = matchers.hex4.exec(color);\n    if (match) {\n        return {\n            r: parseIntFromHex(match[1] + match[1]),\n            g: parseIntFromHex(match[2] + match[2]),\n            b: parseIntFromHex(match[3] + match[3]),\n            a: convertHexToDecimal(match[4] + match[4]),\n            format: named ? 'name' : 'hex8',\n        };\n    }\n    match = matchers.hex3.exec(color);\n    if (match) {\n        return {\n            r: parseIntFromHex(match[1] + match[1]),\n            g: parseIntFromHex(match[2] + match[2]),\n            b: parseIntFromHex(match[3] + match[3]),\n            format: named ? 'name' : 'hex',\n        };\n    }\n    return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n    return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\n","import { inputToRGB, rgbToHex, rgbToHsv } from '@ctrl/tinycolor';\n\nvar hueStep = 2; // 色相阶梯\n\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\n\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\n\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\n\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\n\nvar lightColorCount = 5; // 浅色数量,主色上\n\nvar darkColorCount = 4; // 深色数量,主色下\n// 暗色主题颜色映射关系表\n\nvar darkColorMap = [{\n  index: 7,\n  opacity: 0.15\n}, {\n  index: 6,\n  opacity: 0.25\n}, {\n  index: 5,\n  opacity: 0.3\n}, {\n  index: 5,\n  opacity: 0.45\n}, {\n  index: 5,\n  opacity: 0.65\n}, {\n  index: 5,\n  opacity: 0.85\n}, {\n  index: 4,\n  opacity: 0.9\n}, {\n  index: 3,\n  opacity: 0.95\n}, {\n  index: 2,\n  opacity: 0.97\n}, {\n  index: 1,\n  opacity: 0.98\n}]; // Wrapper function ported from TinyColor.prototype.toHsv\n// Keep it here because of `hsv.h * 360`\n\nfunction toHsv(_ref) {\n  var r = _ref.r,\n      g = _ref.g,\n      b = _ref.b;\n  var hsv = rgbToHsv(r, g, b);\n  return {\n    h: hsv.h * 360,\n    s: hsv.s,\n    v: hsv.v\n  };\n} // Wrapper function ported from TinyColor.prototype.toHexString\n// Keep it here because of the prefix `#`\n\n\nfunction toHex(_ref2) {\n  var r = _ref2.r,\n      g = _ref2.g,\n      b = _ref2.b;\n  return \"#\".concat(rgbToHex(r, g, b, false));\n} // Wrapper function ported from TinyColor.prototype.mix, not treeshakable.\n// Amount in range [0, 1]\n// Assume color1 & color2 has no alpha, since the following src code did so.\n\n\nfunction mix(rgb1, rgb2, amount) {\n  var p = amount / 100;\n  var rgb = {\n    r: (rgb2.r - rgb1.r) * p + rgb1.r,\n    g: (rgb2.g - rgb1.g) * p + rgb1.g,\n    b: (rgb2.b - rgb1.b) * p + rgb1.b\n  };\n  return rgb;\n}\n\nfunction getHue(hsv, i, light) {\n  var hue; // 根据色相不同,色相转向不同\n\n  if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n    hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n  } else {\n    hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n  }\n\n  if (hue < 0) {\n    hue += 360;\n  } else if (hue >= 360) {\n    hue -= 360;\n  }\n\n  return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n  // grey color don't change saturation\n  if (hsv.h === 0 && hsv.s === 0) {\n    return hsv.s;\n  }\n\n  var saturation;\n\n  if (light) {\n    saturation = hsv.s - saturationStep * i;\n  } else if (i === darkColorCount) {\n    saturation = hsv.s + saturationStep;\n  } else {\n    saturation = hsv.s + saturationStep2 * i;\n  } // 边界值修正\n\n\n  if (saturation > 1) {\n    saturation = 1;\n  } // 第一格的 s 限制在 0.06-0.1 之间\n\n\n  if (light && i === lightColorCount && saturation > 0.1) {\n    saturation = 0.1;\n  }\n\n  if (saturation < 0.06) {\n    saturation = 0.06;\n  }\n\n  return Number(saturation.toFixed(2));\n}\n\nfunction getValue(hsv, i, light) {\n  var value;\n\n  if (light) {\n    value = hsv.v + brightnessStep1 * i;\n  } else {\n    value = hsv.v - brightnessStep2 * i;\n  }\n\n  if (value > 1) {\n    value = 1;\n  }\n\n  return Number(value.toFixed(2));\n}\n\nfunction generate(color) {\n  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var patterns = [];\n  var pColor = inputToRGB(color);\n\n  for (var i = lightColorCount; i > 0; i -= 1) {\n    var hsv = toHsv(pColor);\n    var colorString = toHex(inputToRGB({\n      h: getHue(hsv, i, true),\n      s: getSaturation(hsv, i, true),\n      v: getValue(hsv, i, true)\n    }));\n    patterns.push(colorString);\n  }\n\n  patterns.push(toHex(pColor));\n\n  for (var _i = 1; _i <= darkColorCount; _i += 1) {\n    var _hsv = toHsv(pColor);\n\n    var _colorString = toHex(inputToRGB({\n      h: getHue(_hsv, _i),\n      s: getSaturation(_hsv, _i),\n      v: getValue(_hsv, _i)\n    }));\n\n    patterns.push(_colorString);\n  } // dark theme patterns\n\n\n  if (opts.theme === 'dark') {\n    return darkColorMap.map(function (_ref3) {\n      var index = _ref3.index,\n          opacity = _ref3.opacity;\n      var darkColorString = toHex(mix(inputToRGB(opts.backgroundColor || '#141414'), inputToRGB(patterns[index]), opacity * 100));\n      return darkColorString;\n    });\n  }\n\n  return patterns;\n}\n\nvar presetPrimaryColors = {\n  red: '#F5222D',\n  volcano: '#FA541C',\n  orange: '#FA8C16',\n  gold: '#FAAD14',\n  yellow: '#FADB14',\n  lime: '#A0D911',\n  green: '#52C41A',\n  cyan: '#13C2C2',\n  blue: '#1890FF',\n  geekblue: '#2F54EB',\n  purple: '#722ED1',\n  magenta: '#EB2F96',\n  grey: '#666666'\n};\nvar presetPalettes = {};\nvar presetDarkPalettes = {};\nObject.keys(presetPrimaryColors).forEach(function (key) {\n  presetPalettes[key] = generate(presetPrimaryColors[key]);\n  presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes\n\n  presetDarkPalettes[key] = generate(presetPrimaryColors[key], {\n    theme: 'dark',\n    backgroundColor: '#141414'\n  });\n  presetDarkPalettes[key].primary = presetDarkPalettes[key][5];\n});\nvar red = presetPalettes.red;\nvar volcano = presetPalettes.volcano;\nvar gold = presetPalettes.gold;\nvar orange = presetPalettes.orange;\nvar yellow = presetPalettes.yellow;\nvar lime = presetPalettes.lime;\nvar green = presetPalettes.green;\nvar cyan = presetPalettes.cyan;\nvar blue = presetPalettes.blue;\nvar geekblue = presetPalettes.geekblue;\nvar purple = presetPalettes.purple;\nvar magenta = presetPalettes.magenta;\nvar grey = presetPalettes.grey;\n\nexport { blue, cyan, geekblue, generate, gold, green, grey, lime, magenta, orange, presetDarkPalettes, presetPalettes, presetPrimaryColors, purple, red, volcano, yellow };\n","/* eslint-disable no-console */\nvar warned = {};\nvar preWarningFns = [];\n\n/**\n * Pre warning enable you to parse content before console.error.\n * Modify to null will prevent warning.\n */\nexport var preMessage = function preMessage(fn) {\n  preWarningFns.push(fn);\n};\nexport function warning(valid, message) {\n  // Support uglify\n  if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n    var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n      return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'warning');\n    }, message);\n    if (finalMessage) {\n      console.error(\"Warning: \".concat(finalMessage));\n    }\n  }\n}\nexport function note(valid, message) {\n  // Support uglify\n  if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n    var finalMessage = preWarningFns.reduce(function (msg, preMessageFn) {\n      return preMessageFn(msg !== null && msg !== void 0 ? msg : '', 'note');\n    }, message);\n    if (finalMessage) {\n      console.warn(\"Note: \".concat(finalMessage));\n    }\n  }\n}\nexport function resetWarned() {\n  warned = {};\n}\nexport function call(method, valid, message) {\n  if (!valid && !warned[message]) {\n    method(false, message);\n    warned[message] = true;\n  }\n}\nexport function warningOnce(valid, message) {\n  call(warning, valid, message);\n}\nexport function noteOnce(valid, message) {\n  call(note, valid, message);\n}\nwarningOnce.preMessage = preMessage;\nwarningOnce.resetWarned = resetWarned;\nwarningOnce.noteOnce = noteOnce;\nexport default warningOnce;\n/* eslint-enable */","export default function canUseDom() {\n  return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}","export default function contains(root, n) {\n  if (!root) {\n    return false;\n  }\n\n  // Use native if support\n  if (root.contains) {\n    return root.contains(n);\n  }\n\n  // `document.contains` not support with IE11\n  var node = n;\n  while (node) {\n    if (node === root) {\n      return true;\n    }\n    node = node.parentNode;\n  }\n  return false;\n}","import canUseDom from \"./canUseDom\";\nimport contains from \"./contains\";\nvar APPEND_ORDER = 'data-rc-order';\nvar MARK_KEY = \"rc-util-key\";\nvar containerCache = new Map();\nfunction getMark() {\n  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n    mark = _ref.mark;\n  if (mark) {\n    return mark.startsWith('data-') ? mark : \"data-\".concat(mark);\n  }\n  return MARK_KEY;\n}\nfunction getContainer(option) {\n  if (option.attachTo) {\n    return option.attachTo;\n  }\n  var head = document.querySelector('head');\n  return head || document.body;\n}\nfunction getOrder(prepend) {\n  if (prepend === 'queue') {\n    return 'prependQueue';\n  }\n  return prepend ? 'prepend' : 'append';\n}\n\n/**\n * Find style which inject by rc-util\n */\nfunction findStyles(container) {\n  return Array.from((containerCache.get(container) || container).children).filter(function (node) {\n    return node.tagName === 'STYLE';\n  });\n}\nexport function injectCSS(css) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  if (!canUseDom()) {\n    return null;\n  }\n  var csp = option.csp,\n    prepend = option.prepend;\n  var styleNode = document.createElement('style');\n  styleNode.setAttribute(APPEND_ORDER, getOrder(prepend));\n  if (csp !== null && csp !== void 0 && csp.nonce) {\n    styleNode.nonce = csp === null || csp === void 0 ? void 0 : csp.nonce;\n  }\n  styleNode.innerHTML = css;\n  var container = getContainer(option);\n  var firstChild = container.firstChild;\n  if (prepend) {\n    // If is queue `prepend`, it will prepend first style and then append rest style\n    if (prepend === 'queue') {\n      var existStyle = findStyles(container).filter(function (node) {\n        return ['prepend', 'prependQueue'].includes(node.getAttribute(APPEND_ORDER));\n      });\n      if (existStyle.length) {\n        container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling);\n        return styleNode;\n      }\n    }\n\n    // Use `insertBefore` as `prepend`\n    container.insertBefore(styleNode, firstChild);\n  } else {\n    container.appendChild(styleNode);\n  }\n  return styleNode;\n}\nfunction findExistNode(key) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var container = getContainer(option);\n  return findStyles(container).find(function (node) {\n    return node.getAttribute(getMark(option)) === key;\n  });\n}\nexport function removeCSS(key) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var existNode = findExistNode(key, option);\n  if (existNode) {\n    var container = getContainer(option);\n    container.removeChild(existNode);\n  }\n}\n\n/**\n * qiankun will inject `appendChild` to insert into other\n */\nfunction syncRealContainer(container, option) {\n  var cachedRealContainer = containerCache.get(container);\n\n  // Find real container when not cached or cached container removed\n  if (!cachedRealContainer || !contains(document, cachedRealContainer)) {\n    var placeholderStyle = injectCSS('', option);\n    var parentNode = placeholderStyle.parentNode;\n    containerCache.set(container, parentNode);\n    container.removeChild(placeholderStyle);\n  }\n}\n\n/**\n * manually clear container cache to avoid global cache in unit testes\n */\nexport function clearContainerCache() {\n  containerCache.clear();\n}\nexport function updateCSS(css, key) {\n  var option = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var container = getContainer(option);\n\n  // Sync real parent\n  syncRealContainer(container, option);\n  var existNode = findExistNode(key, option);\n  if (existNode) {\n    var _option$csp, _option$csp2;\n    if ((_option$csp = option.csp) !== null && _option$csp !== void 0 && _option$csp.nonce && existNode.nonce !== ((_option$csp2 = option.csp) === null || _option$csp2 === void 0 ? void 0 : _option$csp2.nonce)) {\n      var _option$csp3;\n      existNode.nonce = (_option$csp3 = option.csp) === null || _option$csp3 === void 0 ? void 0 : _option$csp3.nonce;\n    }\n    if (existNode.innerHTML !== css) {\n      existNode.innerHTML = css;\n    }\n    return existNode;\n  }\n  var newNode = injectCSS(css, option);\n  newNode.setAttribute(getMark(option), key);\n  return newNode;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { generate as generateColor } from '@ant-design/colors';\nimport React, { useContext, useEffect } from 'react';\nimport warn from \"rc-util/es/warning\";\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport IconContext from './components/Context';\nexport function warning(valid, message) {\n  warn(valid, \"[@ant-design/icons] \".concat(message));\n}\nexport function isIconDefinition(target) {\n  return _typeof(target) === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (_typeof(target.icon) === 'object' || typeof target.icon === 'function');\n}\nexport function normalizeAttrs() {\n  var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return Object.keys(attrs).reduce(function (acc, key) {\n    var val = attrs[key];\n    switch (key) {\n      case 'class':\n        acc.className = val;\n        delete acc.class;\n        break;\n      default:\n        acc[key] = val;\n    }\n    return acc;\n  }, {});\n}\nexport function generate(node, key, rootProps) {\n  if (!rootProps) {\n    return /*#__PURE__*/React.createElement(node.tag, _objectSpread({\n      key: key\n    }, normalizeAttrs(node.attrs)), (node.children || []).map(function (child, index) {\n      return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n    }));\n  }\n  return /*#__PURE__*/React.createElement(node.tag, _objectSpread(_objectSpread({\n    key: key\n  }, normalizeAttrs(node.attrs)), rootProps), (node.children || []).map(function (child, index) {\n    return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n  }));\n}\nexport function getSecondaryColor(primaryColor) {\n  // choose the second color\n  return generateColor(primaryColor)[0];\n}\nexport function normalizeTwoToneColors(twoToneColor) {\n  if (!twoToneColor) {\n    return [];\n  }\n  return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor];\n}\n// These props make sure that the SVG behaviours like general text.\n// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\nexport var svgBaseProps = {\n  width: '1em',\n  height: '1em',\n  fill: 'currentColor',\n  'aria-hidden': 'true',\n  focusable: 'false'\n};\nexport var iconStyles = \"\\n.anticon {\\n  display: inline-block;\\n  color: inherit;\\n  font-style: normal;\\n  line-height: 0;\\n  text-align: center;\\n  text-transform: none;\\n  vertical-align: -0.125em;\\n  text-rendering: optimizeLegibility;\\n  -webkit-font-smoothing: antialiased;\\n  -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.anticon > * {\\n  line-height: 1;\\n}\\n\\n.anticon svg {\\n  display: inline-block;\\n}\\n\\n.anticon::before {\\n  display: none;\\n}\\n\\n.anticon .anticon-icon {\\n  display: block;\\n}\\n\\n.anticon[tabindex] {\\n  cursor: pointer;\\n}\\n\\n.anticon-spin::before,\\n.anticon-spin {\\n  display: inline-block;\\n  -webkit-animation: loadingCircle 1s infinite linear;\\n  animation: loadingCircle 1s infinite linear;\\n}\\n\\n@-webkit-keyframes loadingCircle {\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n    transform: rotate(360deg);\\n  }\\n}\\n\\n@keyframes loadingCircle {\\n  100% {\\n    -webkit-transform: rotate(360deg);\\n    transform: rotate(360deg);\\n  }\\n}\\n\";\nexport var useInsertStyles = function useInsertStyles() {\n  var styleStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : iconStyles;\n  var _useContext = useContext(IconContext),\n    csp = _useContext.csp;\n  useEffect(function () {\n    updateCSS(styleStr, '@ant-design-icons', {\n      prepend: true,\n      csp: csp\n    });\n  }, []);\n};","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nvar _excluded = [\"icon\", \"className\", \"onClick\", \"style\", \"primaryColor\", \"secondaryColor\"];\nimport { generate, getSecondaryColor, isIconDefinition, warning, useInsertStyles } from '../utils';\nvar twoToneColorPalette = {\n  primaryColor: '#333',\n  secondaryColor: '#E6E6E6',\n  calculated: false\n};\nfunction setTwoToneColors(_ref) {\n  var primaryColor = _ref.primaryColor,\n    secondaryColor = _ref.secondaryColor;\n  twoToneColorPalette.primaryColor = primaryColor;\n  twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);\n  twoToneColorPalette.calculated = !!secondaryColor;\n}\nfunction getTwoToneColors() {\n  return _objectSpread({}, twoToneColorPalette);\n}\nvar IconBase = function IconBase(props) {\n  var icon = props.icon,\n    className = props.className,\n    onClick = props.onClick,\n    style = props.style,\n    primaryColor = props.primaryColor,\n    secondaryColor = props.secondaryColor,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var colors = twoToneColorPalette;\n  if (primaryColor) {\n    colors = {\n      primaryColor: primaryColor,\n      secondaryColor: secondaryColor || getSecondaryColor(primaryColor)\n    };\n  }\n  useInsertStyles();\n  warning(isIconDefinition(icon), \"icon should be icon definiton, but got \".concat(icon));\n  if (!isIconDefinition(icon)) {\n    return null;\n  }\n  var target = icon;\n  if (target && typeof target.icon === 'function') {\n    target = _objectSpread(_objectSpread({}, target), {}, {\n      icon: target.icon(colors.primaryColor, colors.secondaryColor)\n    });\n  }\n  return generate(target.icon, \"svg-\".concat(target.name), _objectSpread({\n    className: className,\n    onClick: onClick,\n    style: style,\n    'data-icon': target.name,\n    width: '1em',\n    height: '1em',\n    fill: 'currentColor',\n    'aria-hidden': 'true'\n  }, restProps));\n};\nIconBase.displayName = 'IconReact';\nIconBase.getTwoToneColors = getTwoToneColors;\nIconBase.setTwoToneColors = setTwoToneColors;\nexport default IconBase;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport ReactIcon from './IconBase';\nimport { normalizeTwoToneColors } from '../utils';\nexport function setTwoToneColor(twoToneColor) {\n  var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n    _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n    primaryColor = _normalizeTwoToneColo2[0],\n    secondaryColor = _normalizeTwoToneColo2[1];\n  return ReactIcon.setTwoToneColors({\n    primaryColor: primaryColor,\n    secondaryColor: secondaryColor\n  });\n}\nexport function getTwoToneColor() {\n  var colors = ReactIcon.getTwoToneColors();\n  if (!colors.calculated) {\n    return colors.primaryColor;\n  }\n  return [colors.primaryColor, colors.secondaryColor];\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"className\", \"icon\", \"spin\", \"rotate\", \"tabIndex\", \"onClick\", \"twoToneColor\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Context from './Context';\nimport ReactIcon from './IconBase';\nimport { getTwoToneColor, setTwoToneColor } from './twoTonePrimaryColor';\nimport { normalizeTwoToneColors } from '../utils';\n// Initial setting\n// should move it to antd main repo?\nsetTwoToneColor('#1890ff');\nvar Icon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var _classNames;\n  var className = props.className,\n    icon = props.icon,\n    spin = props.spin,\n    rotate = props.rotate,\n    tabIndex = props.tabIndex,\n    onClick = props.onClick,\n    twoToneColor = props.twoToneColor,\n    restProps = _objectWithoutProperties(props, _excluded);\n  var _React$useContext = React.useContext(Context),\n    _React$useContext$pre = _React$useContext.prefixCls,\n    prefixCls = _React$useContext$pre === void 0 ? 'anticon' : _React$useContext$pre,\n    rootClassName = _React$useContext.rootClassName;\n  var classString = classNames(rootClassName, prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(icon.name), !!icon.name), _defineProperty(_classNames, \"\".concat(prefixCls, \"-spin\"), !!spin || icon.name === 'loading'), _classNames), className);\n  var iconTabIndex = tabIndex;\n  if (iconTabIndex === undefined && onClick) {\n    iconTabIndex = -1;\n  }\n  var svgStyle = rotate ? {\n    msTransform: \"rotate(\".concat(rotate, \"deg)\"),\n    transform: \"rotate(\".concat(rotate, \"deg)\")\n  } : undefined;\n  var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n    _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n    primaryColor = _normalizeTwoToneColo2[0],\n    secondaryColor = _normalizeTwoToneColo2[1];\n  return /*#__PURE__*/React.createElement(\"span\", _objectSpread(_objectSpread({\n    role: \"img\",\n    \"aria-label\": icon.name\n  }, restProps), {}, {\n    ref: ref,\n    tabIndex: iconTabIndex,\n    onClick: onClick,\n    className: classString\n  }), /*#__PURE__*/React.createElement(ReactIcon, {\n    icon: icon,\n    primaryColor: primaryColor,\n    secondaryColor: secondaryColor,\n    style: svgStyle\n  }));\n});\nIcon.displayName = 'AntdIcon';\nIcon.getTwoToneColor = getTwoToneColor;\nIcon.setTwoToneColor = setTwoToneColor;\nexport default Icon;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport BarsOutlinedSvg from \"@ant-design/icons-svg/es/asn/BarsOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar BarsOutlined = function BarsOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n    ref: ref,\n    icon: BarsOutlinedSvg\n  }));\n};\nBarsOutlined.displayName = 'BarsOutlined';\nexport default /*#__PURE__*/React.forwardRef(BarsOutlined);","// This icon file is generated automatically.\nvar LeftOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 000 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z\" } }] }, \"name\": \"left\", \"theme\": \"outlined\" };\nexport default LeftOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport LeftOutlinedSvg from \"@ant-design/icons-svg/es/asn/LeftOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar LeftOutlined = function LeftOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n    ref: ref,\n    icon: LeftOutlinedSvg\n  }));\n};\nLeftOutlined.displayName = 'LeftOutlined';\nexport default /*#__PURE__*/React.forwardRef(LeftOutlined);","// This icon file is generated automatically.\nvar RightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M765.7 486.8L314.9 134.7A7.97 7.97 0 00302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 000-50.4z\" } }] }, \"name\": \"right\", \"theme\": \"outlined\" };\nexport default RightOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport RightOutlinedSvg from \"@ant-design/icons-svg/es/asn/RightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar RightOutlined = function RightOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n    ref: ref,\n    icon: RightOutlinedSvg\n  }));\n};\nRightOutlined.displayName = 'RightOutlined';\nexport default /*#__PURE__*/React.forwardRef(RightOutlined);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nexport default function omit(obj, fields) {\n  var clone = _objectSpread({}, obj);\n  if (Array.isArray(fields)) {\n    fields.forEach(function (key) {\n      delete clone[key];\n    });\n  }\n  return clone;\n}","var isNumeric = function isNumeric(value) {\n  return !isNaN(parseFloat(value)) && isFinite(value);\n};\nexport default isNumeric;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport BarsOutlined from \"@ant-design/icons/es/icons/BarsOutlined\";\nimport LeftOutlined from \"@ant-design/icons/es/icons/LeftOutlined\";\nimport RightOutlined from \"@ant-design/icons/es/icons/RightOutlined\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { useContext, useEffect, useRef, useState } from 'react';\nimport { ConfigContext } from '../config-provider';\nimport isNumeric from '../_util/isNumeric';\nimport { LayoutContext } from './layout';\nvar dimensionMaxMap = {\n  xs: '479.98px',\n  sm: '575.98px',\n  md: '767.98px',\n  lg: '991.98px',\n  xl: '1199.98px',\n  xxl: '1599.98px'\n};\nexport var SiderContext = /*#__PURE__*/React.createContext({});\nvar generateId = function () {\n  var i = 0;\n  return function () {\n    var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n    i += 1;\n    return \"\".concat(prefix).concat(i);\n  };\n}();\nvar Sider = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n  var customizePrefixCls = _a.prefixCls,\n    className = _a.className,\n    trigger = _a.trigger,\n    children = _a.children,\n    _a$defaultCollapsed = _a.defaultCollapsed,\n    defaultCollapsed = _a$defaultCollapsed === void 0 ? false : _a$defaultCollapsed,\n    _a$theme = _a.theme,\n    theme = _a$theme === void 0 ? 'dark' : _a$theme,\n    _a$style = _a.style,\n    style = _a$style === void 0 ? {} : _a$style,\n    _a$collapsible = _a.collapsible,\n    collapsible = _a$collapsible === void 0 ? false : _a$collapsible,\n    _a$reverseArrow = _a.reverseArrow,\n    reverseArrow = _a$reverseArrow === void 0 ? false : _a$reverseArrow,\n    _a$width = _a.width,\n    width = _a$width === void 0 ? 200 : _a$width,\n    _a$collapsedWidth = _a.collapsedWidth,\n    collapsedWidth = _a$collapsedWidth === void 0 ? 80 : _a$collapsedWidth,\n    zeroWidthTriggerStyle = _a.zeroWidthTriggerStyle,\n    breakpoint = _a.breakpoint,\n    onCollapse = _a.onCollapse,\n    onBreakpoint = _a.onBreakpoint,\n    props = __rest(_a, [\"prefixCls\", \"className\", \"trigger\", \"children\", \"defaultCollapsed\", \"theme\", \"style\", \"collapsible\", \"reverseArrow\", \"width\", \"collapsedWidth\", \"zeroWidthTriggerStyle\", \"breakpoint\", \"onCollapse\", \"onBreakpoint\"]);\n  var _useContext = useContext(LayoutContext),\n    siderHook = _useContext.siderHook;\n  var _useState = useState('collapsed' in props ? props.collapsed : defaultCollapsed),\n    _useState2 = _slicedToArray(_useState, 2),\n    collapsed = _useState2[0],\n    setCollapsed = _useState2[1];\n  var _useState3 = useState(false),\n    _useState4 = _slicedToArray(_useState3, 2),\n    below = _useState4[0],\n    setBelow = _useState4[1];\n  useEffect(function () {\n    if ('collapsed' in props) {\n      setCollapsed(props.collapsed);\n    }\n  }, [props.collapsed]);\n  var handleSetCollapsed = function handleSetCollapsed(value, type) {\n    if (!('collapsed' in props)) {\n      setCollapsed(value);\n    }\n    onCollapse === null || onCollapse === void 0 ? void 0 : onCollapse(value, type);\n  };\n  // ========================= Responsive =========================\n  var responsiveHandlerRef = useRef();\n  responsiveHandlerRef.current = function (mql) {\n    setBelow(mql.matches);\n    onBreakpoint === null || onBreakpoint === void 0 ? void 0 : onBreakpoint(mql.matches);\n    if (collapsed !== mql.matches) {\n      handleSetCollapsed(mql.matches, 'responsive');\n    }\n  };\n  useEffect(function () {\n    function responsiveHandler(mql) {\n      return responsiveHandlerRef.current(mql);\n    }\n    var mql;\n    if (typeof window !== 'undefined') {\n      var _window = window,\n        matchMedia = _window.matchMedia;\n      if (matchMedia && breakpoint && breakpoint in dimensionMaxMap) {\n        mql = matchMedia(\"(max-width: \".concat(dimensionMaxMap[breakpoint], \")\"));\n        try {\n          mql.addEventListener('change', responsiveHandler);\n        } catch (error) {\n          mql.addListener(responsiveHandler);\n        }\n        responsiveHandler(mql);\n      }\n    }\n    return function () {\n      try {\n        mql === null || mql === void 0 ? void 0 : mql.removeEventListener('change', responsiveHandler);\n      } catch (error) {\n        mql === null || mql === void 0 ? void 0 : mql.removeListener(responsiveHandler);\n      }\n    };\n  }, [breakpoint]); // in order to accept dynamic 'breakpoint' property, we need to add 'breakpoint' into dependency array.\n  useEffect(function () {\n    var uniqueId = generateId('ant-sider-');\n    siderHook.addSider(uniqueId);\n    return function () {\n      return siderHook.removeSider(uniqueId);\n    };\n  }, []);\n  var toggle = function toggle() {\n    handleSetCollapsed(!collapsed, 'clickTrigger');\n  };\n  var _useContext2 = useContext(ConfigContext),\n    getPrefixCls = _useContext2.getPrefixCls;\n  var renderSider = function renderSider() {\n    var _classNames;\n    var prefixCls = getPrefixCls('layout-sider', customizePrefixCls);\n    var divProps = omit(props, ['collapsed']);\n    var rawWidth = collapsed ? collapsedWidth : width;\n    // use \"px\" as fallback unit for width\n    var siderWidth = isNumeric(rawWidth) ? \"\".concat(rawWidth, \"px\") : String(rawWidth);\n    // special trigger when collapsedWidth == 0\n    var zeroWidthTrigger = parseFloat(String(collapsedWidth || 0)) === 0 ? /*#__PURE__*/React.createElement(\"span\", {\n      onClick: toggle,\n      className: classNames(\"\".concat(prefixCls, \"-zero-width-trigger\"), \"\".concat(prefixCls, \"-zero-width-trigger-\").concat(reverseArrow ? 'right' : 'left')),\n      style: zeroWidthTriggerStyle\n    }, trigger || /*#__PURE__*/React.createElement(BarsOutlined, null)) : null;\n    var iconObj = {\n      expanded: reverseArrow ? /*#__PURE__*/React.createElement(RightOutlined, null) : /*#__PURE__*/React.createElement(LeftOutlined, null),\n      collapsed: reverseArrow ? /*#__PURE__*/React.createElement(LeftOutlined, null) : /*#__PURE__*/React.createElement(RightOutlined, null)\n    };\n    var status = collapsed ? 'collapsed' : 'expanded';\n    var defaultTrigger = iconObj[status];\n    var triggerDom = trigger !== null ? zeroWidthTrigger || /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(prefixCls, \"-trigger\"),\n      onClick: toggle,\n      style: {\n        width: siderWidth\n      }\n    }, trigger || defaultTrigger) : null;\n    var divStyle = _extends(_extends({}, style), {\n      flex: \"0 0 \".concat(siderWidth),\n      maxWidth: siderWidth,\n      minWidth: siderWidth,\n      width: siderWidth\n    });\n    var siderCls = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(theme), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-collapsed\"), !!collapsed), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-trigger\"), collapsible && trigger !== null && !zeroWidthTrigger), _defineProperty(_classNames, \"\".concat(prefixCls, \"-below\"), !!below), _defineProperty(_classNames, \"\".concat(prefixCls, \"-zero-width\"), parseFloat(siderWidth) === 0), _classNames), className);\n    return /*#__PURE__*/React.createElement(\"aside\", _extends({\n      className: siderCls\n    }, divProps, {\n      style: divStyle,\n      ref: ref\n    }), /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(prefixCls, \"-children\")\n    }, children), collapsible || below && zeroWidthTrigger ? triggerDom : null);\n  };\n  var contextValue = React.useMemo(function () {\n    return {\n      siderCollapsed: collapsed\n    };\n  }, [collapsed]);\n  return /*#__PURE__*/React.createElement(SiderContext.Provider, {\n    value: contextValue\n  }, renderSider());\n});\nif (process.env.NODE_ENV !== 'production') {\n  Sider.displayName = 'Sider';\n}\nexport default Sider;","import InternalLayout, { Content, Footer, Header } from './layout';\nimport Sider from './Sider';\nvar Layout = InternalLayout;\nLayout.Header = Header;\nLayout.Footer = Footer;\nLayout.Content = Content;\nLayout.Sider = Sider;\nexport default Layout;","import * as React from 'react';\nvar isValidElement = React.isValidElement;\nexport { isValidElement };\nexport function isFragment(child) {\n  return child && isValidElement(child) && child.type === React.Fragment;\n}\nexport function replaceElement(element, replacement, props) {\n  if (!isValidElement(element)) {\n    return replacement;\n  }\n  return /*#__PURE__*/React.cloneElement(element, typeof props === 'function' ? props(element.props || {}) : props);\n}\nexport function cloneElement(element, props) {\n  return replaceElement(element, element, props);\n}","// https://stackoverflow.com/questions/46176165/ways-to-get-string-literal-type-of-array-values-without-enum-overhead\nexport var tuple = function tuple() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  return args;\n};\nexport var tupleNum = function tupleNum() {\n  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    args[_key2] = arguments[_key2];\n  }\n  return args;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport classNames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigConsumer, ConfigContext } from '../config-provider';\nimport { cloneElement, isValidElement } from '../_util/reactNode';\nimport { tuple } from '../_util/type';\nvar SpinSizes = tuple('small', 'default', 'large');\n// Render indicator\nvar defaultIndicator = null;\nfunction renderIndicator(prefixCls, props) {\n  var indicator = props.indicator;\n  var dotClassName = \"\".concat(prefixCls, \"-dot\");\n  // should not be render default indicator when indicator value is null\n  if (indicator === null) {\n    return null;\n  }\n  if (isValidElement(indicator)) {\n    return cloneElement(indicator, {\n      className: classNames(indicator.props.className, dotClassName)\n    });\n  }\n  if (isValidElement(defaultIndicator)) {\n    return cloneElement(defaultIndicator, {\n      className: classNames(defaultIndicator.props.className, dotClassName)\n    });\n  }\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(dotClassName, \"\".concat(prefixCls, \"-dot-spin\"))\n  }, /*#__PURE__*/React.createElement(\"i\", {\n    className: \"\".concat(prefixCls, \"-dot-item\")\n  }), /*#__PURE__*/React.createElement(\"i\", {\n    className: \"\".concat(prefixCls, \"-dot-item\")\n  }), /*#__PURE__*/React.createElement(\"i\", {\n    className: \"\".concat(prefixCls, \"-dot-item\")\n  }), /*#__PURE__*/React.createElement(\"i\", {\n    className: \"\".concat(prefixCls, \"-dot-item\")\n  }));\n}\nfunction shouldDelay(spinning, delay) {\n  return !!spinning && !!delay && !isNaN(Number(delay));\n}\nvar Spin = function Spin(props) {\n  var prefixCls = props.spinPrefixCls,\n    _props$spinning = props.spinning,\n    customSpinning = _props$spinning === void 0 ? true : _props$spinning,\n    delay = props.delay,\n    className = props.className,\n    _props$size = props.size,\n    size = _props$size === void 0 ? 'default' : _props$size,\n    tip = props.tip,\n    wrapperClassName = props.wrapperClassName,\n    style = props.style,\n    children = props.children,\n    restProps = __rest(props, [\"spinPrefixCls\", \"spinning\", \"delay\", \"className\", \"size\", \"tip\", \"wrapperClassName\", \"style\", \"children\"]);\n  var _React$useState = React.useState(function () {\n      return customSpinning && !shouldDelay(customSpinning, delay);\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    spinning = _React$useState2[0],\n    setSpinning = _React$useState2[1];\n  React.useEffect(function () {\n    var updateSpinning = debounce(function () {\n      setSpinning(customSpinning);\n    }, delay);\n    updateSpinning();\n    return function () {\n      var _a;\n      (_a = updateSpinning === null || updateSpinning === void 0 ? void 0 : updateSpinning.cancel) === null || _a === void 0 ? void 0 : _a.call(updateSpinning);\n    };\n  }, [delay, customSpinning]);\n  var isNestedPattern = function isNestedPattern() {\n    return typeof children !== 'undefined';\n  };\n  var renderSpin = function renderSpin(_ref) {\n    var _classNames;\n    var direction = _ref.direction;\n    var spinClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-spinning\"), spinning), _defineProperty(_classNames, \"\".concat(prefixCls, \"-show-text\"), !!tip), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n    // fix https://fb.me/react-unknown-prop\n    var divProps = omit(restProps, ['indicator', 'prefixCls']);\n    var spinElement = /*#__PURE__*/React.createElement(\"div\", _extends({}, divProps, {\n      style: style,\n      className: spinClassName,\n      \"aria-live\": \"polite\",\n      \"aria-busy\": spinning\n    }), renderIndicator(prefixCls, props), tip ? /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(prefixCls, \"-text\")\n    }, tip) : null);\n    if (isNestedPattern()) {\n      var containerClassName = classNames(\"\".concat(prefixCls, \"-container\"), _defineProperty({}, \"\".concat(prefixCls, \"-blur\"), spinning));\n      return /*#__PURE__*/React.createElement(\"div\", _extends({}, divProps, {\n        className: classNames(\"\".concat(prefixCls, \"-nested-loading\"), wrapperClassName)\n      }), spinning && /*#__PURE__*/React.createElement(\"div\", {\n        key: \"loading\"\n      }, spinElement), /*#__PURE__*/React.createElement(\"div\", {\n        className: containerClassName,\n        key: \"container\"\n      }, children));\n    }\n    return spinElement;\n  };\n  return /*#__PURE__*/React.createElement(ConfigConsumer, null, renderSpin);\n};\nvar SpinFC = function SpinFC(props) {\n  var customizePrefixCls = props.prefixCls;\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls;\n  var spinPrefixCls = getPrefixCls('spin', customizePrefixCls);\n  var spinClassProps = _extends(_extends({}, props), {\n    spinPrefixCls: spinPrefixCls\n  });\n  return /*#__PURE__*/React.createElement(Spin, _extends({}, spinClassProps));\n};\nSpinFC.setDefaultIndicator = function (indicator) {\n  defaultIndicator = indicator;\n};\nif (process.env.NODE_ENV !== 'production') {\n  SpinFC.displayName = 'Spin';\n}\nexport default SpinFC;","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n    \"aws_project_region\": \"ap-southeast-1\",\n    \"aws_appsync_graphqlEndpoint\": \"https://fus57vrbxrhnppmppofbb7gkea.appsync-api.ap-southeast-1.amazonaws.com/graphql\",\n    \"aws_appsync_region\": \"ap-southeast-1\",\n    \"aws_appsync_authenticationType\": \"AMAZON_COGNITO_USER_POOLS\",\n    \"aws_cognito_identity_pool_id\": \"ap-southeast-1:146c2fe8-99cc-4232-b114-6d0ca6777460\",\n    \"aws_cognito_region\": \"ap-southeast-1\",\n    \"aws_user_pools_id\": \"ap-southeast-1_64K3ABhC2\",\n    \"aws_user_pools_web_client_id\": \"60fcocmvjhcn8cd9qn8o20h4l0\",\n    \"oauth\": {\n        \"domain\": \"d1882yaqgmzhlg-main.auth.ap-southeast-1.amazoncognito.com\",\n        \"scope\": [\n            \"phone\",\n            \"email\",\n            \"openid\",\n            \"profile\",\n            \"aws.cognito.signin.user.admin\"\n        ],\n        \"redirectSignIn\": \"https://aws-team.com/\",\n        \"redirectSignOut\": \"https://aws-team.com/\",\n        \"responseType\": \"code\"\n    },\n    \"federationTarget\": \"COGNITO_USER_POOLS\",\n    \"aws_cognito_username_attributes\": [\n        \"EMAIL\"\n    ],\n    \"aws_cognito_social_providers\": [],\n    \"aws_cognito_signup_attributes\": [\n        \"EMAIL\"\n    ],\n    \"aws_cognito_mfa_configuration\": \"OFF\",\n    \"aws_cognito_mfa_types\": [\n        \"SMS\"\n    ],\n    \"aws_cognito_password_protection_settings\": {\n        \"passwordPolicyMinLength\": 8,\n        \"passwordPolicyCharacters\": []\n    },\n    \"aws_cognito_verification_mechanisms\": [\n        \"EMAIL\"\n    ]\n};\n\n\nexport default awsmobile;\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","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))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useEffect, useRef } from 'react';\nexport var COMPONENT_METADATA_KEY = '__awsuiMetadata__';\nexport function useComponentMetadata(componentName, packageVersion) {\n    var elementRef = useRef(null);\n    useEffect(function () {\n        if (elementRef.current && !Object.prototype.hasOwnProperty.call(elementRef.current, COMPONENT_METADATA_KEY)) {\n            var node = elementRef.current;\n            var metadata = { name: componentName, version: packageVersion };\n            Object.freeze(metadata);\n            Object.defineProperty(node, COMPONENT_METADATA_KEY, { value: metadata, writable: false });\n        }\n        // Some component refs change dynamically. E.g. The Modal component where\n        // the content gets rendered conditionally inside a Portal.\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [elementRef.current]);\n    return elementRef;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { __assign } from \"tslib\";\n/**\n * Console Platform's client logging JS API client.\n */\nvar CLogClient = /** @class */ (function () {\n    function CLogClient() {\n    }\n    /**\n     * Sends metric but only if Console Platform client logging JS API is present in the page.\n     */\n    CLogClient.prototype.sendMetric = function (metricName, value, detail) {\n        if (!metricName || !/^[a-zA-Z0-9_-]{1,32}$/.test(metricName)) {\n            console.error(\"Invalid metric name: \".concat(metricName));\n            return;\n        }\n        if (detail && detail.length > 200) {\n            console.error(\"Detail for metric \".concat(metricName, \" is too long: \").concat(detail));\n            return;\n        }\n        var AWSC = this.findAWSC(window);\n        if (typeof AWSC === 'object' && typeof AWSC.Clog === 'object' && typeof AWSC.Clog.log === 'function') {\n            AWSC.Clog.log(metricName, value, detail);\n        }\n    };\n    CLogClient.prototype.findAWSC = function (currentWindow) {\n        try {\n            if (typeof (currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.AWSC) === 'object') {\n                return currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.AWSC;\n            }\n            if (!currentWindow || currentWindow.parent === currentWindow) {\n                // When the window has no more parents, it references itself\n                return undefined;\n            }\n            return this.findAWSC(currentWindow.parent);\n        }\n        catch (ex) {\n            // Most likely a cross-origin access error\n            return undefined;\n        }\n    };\n    return CLogClient;\n}());\nexport { CLogClient };\n/**\n * Console Platform's client v2 logging JS API client.\n */\nvar PanoramaClient = /** @class */ (function () {\n    function PanoramaClient() {\n    }\n    /**\n     * Sends metric but only if Console Platform client v2 logging JS API is present in the page.\n     */\n    PanoramaClient.prototype.sendMetric = function (metric) {\n        if (typeof metric.eventDetail === 'object') {\n            metric.eventDetail = JSON.stringify(metric.eventDetail);\n        }\n        if (metric.eventDetail && metric.eventDetail.length > 200) {\n            console.error(\"Detail for metric is too long: \".concat(metric.eventDetail));\n            return;\n        }\n        if (typeof metric.eventValue === 'object') {\n            metric.eventValue = JSON.stringify(metric.eventValue);\n        }\n        var panorama = this.findPanorama(window);\n        if (typeof panorama === 'function') {\n            panorama('trackCustomEvent', __assign(__assign({}, metric), { timestamp: Date.now() }));\n        }\n    };\n    PanoramaClient.prototype.findPanorama = function (currentWindow) {\n        try {\n            if (typeof (currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.panorama) === 'function') {\n                return currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.panorama;\n            }\n            if (!currentWindow || currentWindow.parent === currentWindow) {\n                // When the window has no more parents, it references itself\n                return undefined;\n            }\n            return this.findPanorama(currentWindow.parent);\n        }\n        catch (ex) {\n            // Most likely a cross-origin access error\n            return undefined;\n        }\n    };\n    return PanoramaClient;\n}());\nexport { PanoramaClient };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// React is the only framework we're using.\nvar framework = 'react';\nexport function buildMetricHash(_a) {\n    var source = _a.source, action = _a.action;\n    return [\"src\".concat(source), \"action\".concat(action)].join('_');\n}\nexport function buildMetricDetail(_a, theme) {\n    var source = _a.source, action = _a.action, version = _a.version;\n    var metricOrigin = typeof AWSUI_METRIC_ORIGIN !== 'undefined' ? AWSUI_METRIC_ORIGIN : 'main';\n    var detailObject = {\n        o: metricOrigin,\n        s: source,\n        t: theme,\n        a: action,\n        f: framework,\n        v: formatMajorVersionForMetricDetail(version)\n    };\n    return JSON.stringify(detailObject);\n}\nexport function buildMetricName(_a, theme) {\n    var source = _a.source, version = _a.version;\n    return ['awsui', source, \"\".concat(formatVersionForMetricName(theme, version))].join('_');\n}\nexport function formatMajorVersionForMetricDetail(version) {\n    return version.replace(/\\s/g, '');\n}\nexport function formatVersionForMetricName(theme, version) {\n    return \"\".concat(theme.charAt(0)).concat(getMajorVersion(version).replace('.', ''));\n}\nfunction getMajorVersion(versionString) {\n    var majorVersionMatch = versionString.match(/^(\\d+\\.\\d+)/);\n    return majorVersionMatch ? majorVersionMatch[1] : '';\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { CLogClient, PanoramaClient } from './log-clients';\nimport { buildMetricDetail, buildMetricHash, buildMetricName } from './formatters';\nvar oneTimeMetrics = {};\n// In case we need to override the theme for VR.\nvar theme = '';\nfunction setTheme(newTheme) {\n    theme = newTheme;\n}\nvar Metrics = /** @class */ (function () {\n    function Metrics(source, packageVersion) {\n        this.clog = new CLogClient();\n        this.panorama = new PanoramaClient();\n        this.source = source;\n        this.packageVersion = packageVersion;\n    }\n    Metrics.prototype.initMetrics = function (theme) {\n        setTheme(theme);\n    };\n    /**\n     * Calls Console Platform's client logging JS API with provided metric name, value, and detail.\n     * Does nothing if Console Platform client logging JS is not present in page.\n     */\n    Metrics.prototype.sendMetric = function (metricName, value, detail) {\n        if (!theme) {\n            // Metrics need to be initialized first (initMetrics)\n            console.error('Metrics need to be initialized first.');\n            return;\n        }\n        this.clog.sendMetric(metricName, value, detail);\n    };\n    /**\n     * Calls Console Platform's client v2 logging JS API with provided metric name and detail.\n     * Does nothing if Console Platform client logging JS is not present in page.\n     */\n    Metrics.prototype.sendPanoramaMetric = function (metric) {\n        this.panorama.sendMetric(metric);\n    };\n    Metrics.prototype.sendMetricObject = function (metric, value) {\n        this.sendMetric(buildMetricName(metric, theme), value, buildMetricDetail(metric, theme));\n    };\n    Metrics.prototype.sendMetricObjectOnce = function (metric, value) {\n        var metricHash = buildMetricHash(metric);\n        if (!oneTimeMetrics[metricHash]) {\n            this.sendMetricObject(metric, value);\n            oneTimeMetrics[metricHash] = true;\n        }\n    };\n    /*\n     * Calls Console Platform's client logging only the first time the provided metricName is used.\n     * Subsequent calls with the same metricName are ignored.\n     */\n    Metrics.prototype.sendMetricOnce = function (metricName, value, detail) {\n        if (!oneTimeMetrics[metricName]) {\n            this.sendMetric(metricName, value, detail);\n            oneTimeMetrics[metricName] = true;\n        }\n    };\n    /*\n     * Reports a metric value 1 to Console Platform's client logging service to indicate that the\n     * component was loaded. The component load event will only be reported as used to client logging\n     * service once per page view.\n     */\n    Metrics.prototype.logComponentLoaded = function () {\n        this.sendMetricObjectOnce({ source: this.source, action: 'loaded', version: this.packageVersion }, 1);\n    };\n    /*\n     * Reports a metric value 1 to Console Platform's client logging service to indicate that the\n     * component was used in the page.  A component will only be reported as used to client logging\n     * service once per page view.\n     */\n    Metrics.prototype.logComponentUsed = function (componentName) {\n        this.sendMetricObjectOnce({\n            source: componentName,\n            action: 'used',\n            version: this.packageVersion\n        }, 1);\n    };\n    return Metrics;\n}());\nexport { Metrics };\nvar MetricsTestHelper = /** @class */ (function () {\n    function MetricsTestHelper() {\n    }\n    MetricsTestHelper.prototype.resetOneTimeMetricsCache = function () {\n        for (var prop in oneTimeMetrics) {\n            delete oneTimeMetrics[prop];\n        }\n    };\n    return MetricsTestHelper;\n}());\nexport { MetricsTestHelper };\n","\n    export var PACKAGE_SOURCE = 'components';\n    export var PACKAGE_VERSION = '3.0.0 (0180c66)';\n    export var THEME = 'open-source-classic';\n    export var ALWAYS_VISUAL_REFRESH = false;\n    ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// expose version info, so it can be checked using the browser devtools\nexport function initAwsUiVersions(source, packageVersion) {\n    if (typeof window !== 'undefined') {\n        if (!window.awsuiVersions) {\n            window.awsuiVersions = {};\n        }\n        if (!window.awsuiVersions[source]) {\n            window.awsuiVersions[source] = [];\n        }\n        window.awsuiVersions[source].push(packageVersion);\n    }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { initAwsUiVersions } from '@awsui/component-toolkit/internal';\nimport { PACKAGE_SOURCE, PACKAGE_VERSION } from '../environment';\n\n// these styles needed to be imported for every public component\nimport './styles.css.js';\n\ninitAwsUiVersions(PACKAGE_SOURCE, PACKAGE_VERSION);\n\nexport interface BaseComponentProps {\n  /**\n   * Adds the specified classes to the root element of the component.\n   * @deprecated Custom CSS is not supported. For other use cases, use [data attributes](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes).\n   */\n  className?: string;\n  /**\n   * Adds the specified ID to the root element of the component.\n   * @deprecated Custom CSS is not supported. For other use cases, use [data attributes](https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes).\n   */\n  id?: string;\n  // we also support data-* attributes, but they are always implicitly allowed by typescript\n  // http://www.typescriptlang.org/docs/handbook/jsx.html#attribute-type-checking\n  // \"Note: If an attribute name is not a valid JS identifier (like a data-* attribute), it is not considered to be an error\"\n}\n\nexport function getBaseProps(props: BaseComponentProps) {\n  const baseProps: Record<string, any> = {};\n  Object.keys(props).forEach(prop => {\n    if (prop === 'id' || prop === 'className' || prop.match(/^data-/)) {\n      baseProps[prop] = (props as Record<string, any>)[prop];\n    }\n  });\n  return baseProps as BaseComponentProps;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Allow use of `process.env.NODE_ENV` specifically.\n *\n * Bundlers like Webpack and Parcel find uses of `process.env.NODE_ENV` and\n * statically replace them with the actual value during the build. When creating\n * production bundles, the use is replaced with the string \"production\", and\n * dead code checkers (e.g. terser) will then remove our dev-only code from\n * production bundles, letting us write runtime checks and warnings that don't\n * hurt production bundle size or performance.\n */\ndeclare const process: { env: { NODE_ENV?: string } };\n\n/**\n * Whether the bundle is a development bundle.\n * Only use this in an if condition and on its own! This will help bundlers find\n * and remove the conditional statement for production bundles.\n */\nexport const isDevelopment = process.env.NODE_ENV !== 'production';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isDevelopment } from './is-development';\n\nconst messageCache: Record<string, true | undefined> = {};\n\nexport function warnOnce(component: string, message: string): void {\n  if (isDevelopment) {\n    const warning = `[AwsUi] [${component}] ${message}`;\n    if (!messageCache[warning]) {\n      messageCache[warning] = true;\n      console.warn(warning);\n    }\n  }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport * as React from 'react';\nimport { isDevelopment } from '../../is-development';\nimport { warnOnce } from '../../logging';\n\ninterface PropertyDescription {\n  componentName: string;\n  controlledProp: string;\n  changeHandler: string;\n}\n\n/**\n * This hook allows you to make a component that can be used both in controlled mode and uncontrolled mode.\n * Pass in your component's props, and then implement your component as if it was only controlled.\n * When calling onChange callbacks (or the equivalent for your property), you need to call both the callback returned by this function\n * as well as the callback provided in your component's props.\n *\n * A component determines its mode (either controlled or uncontrolled) on the first render and keeps it for its lifetime. The mode cannot\n * be switched later.\n *\n *\n * Example usage:\n * ```jsx\n * const [checked, setChecked] = useControllable(\n *     props,\n *     props.defaultEnabled ?? false,\n *     {\n *        componentName: 'MyCheckboxComponent',\n *        controlledProp: 'enabled',\n *        changeHandler: 'onCheckedStatusChange'\n *     }\n * )\n *\n * return\n *  <input\n *   type=\"checkbox\"\n *   checked={checked}\n *   onChange={event => {\n *    setChecked(event.target.checked);\n *    fireNonCancelableEvent(props.onCheckedStatusChange, { checked: event.target.checked })\n *   }} />\n * ```\n *\n * @param controlledValue value for the controlled mode\n * @param handler update handler for controlled mode\n * @param defaultValue initial value for uncontrolled mode\n * @param description property metadata\n */\nexport function useControllable<ValueType>(\n  controlledValue: ValueType,\n  handler: ((...args: any[]) => unknown) | undefined,\n  defaultValue: ValueType,\n  { componentName, changeHandler, controlledProp }: PropertyDescription\n) {\n  // The decision whether a component is controlled or uncontrolled is made on its first render and cannot be changed afterwards.\n  const isControlled = React.useState(controlledValue !== undefined)[0];\n\n  if (isDevelopment) {\n    // Print a warning if the component switches between controlled and uncontrolled mode.\n\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (isControlled && handler === undefined) {\n        warnOnce(\n          componentName,\n          `You provided a \\`${controlledProp}\\` prop without an \\`${changeHandler}\\` handler. This will render a non-interactive component.`\n        );\n      }\n    }, [handler, isControlled, componentName, changeHandler, controlledProp]);\n\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      const isControlledNow = controlledValue !== undefined;\n      if (isControlled !== isControlledNow) {\n        const initialMode = isControlled ? 'controlled' : 'uncontrolled';\n        const modeNow = isControlledNow ? 'controlled' : 'uncontrolled';\n        warnOnce(\n          componentName,\n          `A component tried to change ${initialMode} '${controlledProp}' property to be ${modeNow}. ` +\n            `This is not supported. Properties should not switch from ${initialMode} to ${modeNow} (or vice versa). ` +\n            `Decide between using a controlled or uncontrolled mode for the lifetime of the component. ` +\n            `More info: https://fb.me/react-controlled-components`\n        );\n      }\n    }, [isControlled, controlledProp, componentName, controlledValue]);\n  }\n\n  // This is the value that is used if the component is uncontrolled.\n  const [valueState, setValue] = React.useState(defaultValue);\n  const [valueHasBeenSet, setValueHasBeenSet] = React.useState(false);\n\n  // We track changes to the defaultValue\n  const currentUncontrolledValue = valueHasBeenSet ? valueState : defaultValue;\n\n  const setUncontrolledValue = React.useCallback(\n    (newValue: React.SetStateAction<ValueType>) => {\n      setValue(newValue);\n      setValueHasBeenSet(true);\n    },\n    [setValue, setValueHasBeenSet]\n  );\n\n  if (isControlled) {\n    return [controlledValue, defaultCallback] as const;\n  } else {\n    return [currentUncontrolledValue, setUncontrolledValue] as const;\n  }\n}\n\nfunction defaultCallback() {\n  return void 0;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport type Breakpoint = 'default' | 'xxs' | 'xs' | 's' | 'm' | 'l' | 'xl';\n\nconst BREAKPOINT_MAPPING: [Breakpoint, number][] = [\n  ['xl', 1840],\n  ['l', 1320],\n  ['m', 1120],\n  ['s', 912],\n  ['xs', 688],\n  ['xxs', 465],\n  ['default', -1],\n];\n\nexport const mobileBreakpoint = BREAKPOINT_MAPPING.filter(b => b[0] === 'xs')[0][1];\n\nconst BREAKPOINTS_DESCENDING = BREAKPOINT_MAPPING.map(([bp]) => bp);\n\n/**\n * Take a breakpoint mapping and return the breakpoint value that most closely matches the actual breakpoint.\n */\nexport function matchBreakpointMapping<T>(subset: Partial<Record<Breakpoint, T>>, actual: Breakpoint): T | null {\n  const qualifyingBreakpoints = BREAKPOINT_MAPPING.slice(BREAKPOINTS_DESCENDING.indexOf(actual));\n  for (const [breakpoint] of qualifyingBreakpoints) {\n    const breakpointValue = subset[breakpoint];\n    if (breakpointValue !== undefined) {\n      return breakpointValue;\n    }\n  }\n  return null;\n}\n\n/**\n * Get the named breakpoint for a provided width, optionally filtering to a subset of breakpoints.\n */\nexport function getMatchingBreakpoint(width: number, breakpointFilter?: readonly Breakpoint[]): Breakpoint {\n  for (const [breakpoint, breakpointWidth] of BREAKPOINT_MAPPING) {\n    if (width > breakpointWidth && (!breakpointFilter || breakpointFilter.indexOf(breakpoint) !== -1)) {\n      return breakpoint;\n    }\n  }\n  return 'default';\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useEffect, useState } from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\n\ntype ValueCallback<T> = (value: T) => void;\ntype CleanupCallback = () => void;\nexport type UseSingleton<T> = (listener: ValueCallback<T>) => void;\n\nexport function createSingletonHandler<T>(factory: (handler: ValueCallback<T>) => CleanupCallback): UseSingleton<T> {\n  const listeners: Array<ValueCallback<T>> = [];\n  const callback: ValueCallback<T> = value => {\n    unstable_batchedUpdates(() => {\n      for (const listener of listeners) {\n        listener(value);\n      }\n    });\n  };\n  let cleanup: (() => void) | undefined;\n\n  return function useSingleton(listener: ValueCallback<T>) {\n    useEffect(() => {\n      if (listeners.length === 0) {\n        cleanup = factory(callback);\n      }\n      listeners.push(listener);\n\n      return () => {\n        listeners.splice(listeners.indexOf(listener), 1);\n        if (listeners.length === 0) {\n          cleanup!();\n          cleanup = undefined;\n        }\n      };\n      // register handlers only on mount\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n  };\n}\n\ninterface SingletonStateOptions<T> {\n  factory: (handler: ValueCallback<T>) => CleanupCallback;\n  initialState: T | (() => T); // useState signature\n}\n\nexport function createSingletonState<T>({ factory, initialState }: SingletonStateOptions<T>) {\n  const useSingleton = createSingletonHandler(factory);\n  let value = initialState;\n  return function useSingletonState() {\n    const [state, setState] = useState<T>(value);\n    useSingleton(newValue => {\n      value = newValue;\n      setState(newValue);\n    });\n    return state;\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getMatchingBreakpoint, mobileBreakpoint } from '../../breakpoints';\nimport { createSingletonState } from '../use-singleton-handler';\n\nfunction getIsMobile() {\n  if (typeof window === 'undefined') {\n    // assume desktop in server-rendering\n    return false;\n  }\n\n  if (window.matchMedia) {\n    /**\n     * Some browsers include the scrollbar width in their media query calculations, but\n     * some browsers don't. Thus we can't use `window.innerWidth` or\n     * `document.documentElement.clientWidth` to get a very accurate result (since we\n     * wouldn't know which one of them to use).\n     * Instead, we use the media query here in JS too.\n     */\n    return window.matchMedia(`(max-width: ${mobileBreakpoint}px)`).matches;\n  }\n\n  return getMatchingBreakpoint(window.innerWidth, ['xs']) !== 'xs';\n}\n\nexport const useMobile = createSingletonState<boolean>({\n  initialState: () => getIsMobile(),\n  factory: handler => {\n    const listener = () => handler(getIsMobile());\n    window.addEventListener('resize', listener);\n    return () => {\n      window.removeEventListener('resize', listener);\n    };\n  },\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\n// This is a part of our public types API. We cannot change this in the current major version\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type NonCancelableEventHandler<Detail = {}> = (event: NonCancelableCustomEvent<Detail>) => void;\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type CancelableEventHandler<Detail = {}> = (event: CustomEvent<Detail>) => void;\n\nexport type NonCancelableCustomEvent<DetailType> = Omit<CustomEvent<DetailType>, 'preventDefault'>;\n\nclass CustomEventStub<T> {\n  defaultPrevented = false;\n  cancelBubble = false;\n  constructor(public cancelable: boolean = false, public detail: T | null = null) {}\n\n  preventDefault() {\n    this.defaultPrevented = true;\n  }\n\n  stopPropagation() {\n    this.cancelBubble = true;\n  }\n}\n\nexport interface BaseKeyDetail {\n  keyCode: number;\n  key: string;\n  ctrlKey: boolean;\n  shiftKey: boolean;\n  altKey: boolean;\n  metaKey: boolean;\n}\n\nexport interface ClickDetail {\n  button: number;\n  ctrlKey: boolean;\n  shiftKey: boolean;\n  altKey: boolean;\n  metaKey: boolean;\n}\n\nexport interface BaseNavigationDetail {\n  href: string | undefined;\n  external?: boolean;\n  target?: string;\n}\n\nexport function createCustomEvent<T>({ cancelable, detail }: CustomEventInit<T>): CustomEvent<T> {\n  return new CustomEventStub(cancelable, detail) as CustomEvent;\n}\n\nexport function fireNonCancelableEvent<T = null>(handler: NonCancelableEventHandler<T> | undefined, detail?: T) {\n  if (!handler) {\n    return;\n  }\n  const event = createCustomEvent({ cancelable: false, detail });\n  handler(event);\n}\n\nexport function fireCancelableEvent<T>(\n  handler: CancelableEventHandler<T> | undefined,\n  detail: T,\n  sourceEvent?: React.SyntheticEvent | Event\n) {\n  if (!handler) {\n    return false;\n  }\n  const event = createCustomEvent({ cancelable: true, detail });\n  handler(event);\n  if (event.defaultPrevented && sourceEvent) {\n    sourceEvent.preventDefault();\n  }\n  if (event.cancelBubble && sourceEvent) {\n    sourceEvent.stopPropagation();\n  }\n  return event.defaultPrevented;\n}\n\nexport function fireKeyboardEvent(handler: CancelableEventHandler<BaseKeyDetail>, reactEvent: React.KeyboardEvent) {\n  return fireCancelableEvent(\n    handler,\n    {\n      keyCode: reactEvent.keyCode,\n      key: reactEvent.key,\n      ctrlKey: reactEvent.ctrlKey,\n      shiftKey: reactEvent.shiftKey,\n      altKey: reactEvent.altKey,\n      metaKey: reactEvent.metaKey,\n    },\n    reactEvent\n  );\n}\n\nconst isMouseEvent = (e: React.MouseEvent | React.KeyboardEvent): e is React.MouseEvent => {\n  return (e as React.MouseEvent).button !== undefined;\n};\n\nexport function hasModifierKeys(event: React.MouseEvent | React.KeyboardEvent) {\n  return event.ctrlKey || event.altKey || event.shiftKey || event.metaKey;\n}\n\nexport function isPlainLeftClick(event: React.MouseEvent | React.KeyboardEvent) {\n  return event && (!isMouseEvent(event) || event.button === 0) && !hasModifierKeys(event);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AppLayoutProps } from './interfaces';\n\nconst defaultContentTypeState: AppLayoutState = {\n  navigationOpen: true,\n  minContentWidth: 280,\n  maxContentWidth: undefined,\n};\n\nconst defaults: Record<AppLayoutProps.ContentType, AppLayoutState> = {\n  default: {\n    ...defaultContentTypeState,\n  },\n  dashboard: {\n    ...defaultContentTypeState,\n  },\n  cards: {\n    navigationOpen: true,\n    minContentWidth: 280,\n    maxContentWidth: undefined,\n  },\n  form: {\n    navigationOpen: false,\n    minContentWidth: 280,\n    maxContentWidth: 800,\n  },\n  table: {\n    navigationOpen: true,\n    minContentWidth: 280,\n    maxContentWidth: undefined,\n  },\n  wizard: {\n    navigationOpen: false,\n    minContentWidth: 280,\n    maxContentWidth: 1080,\n  },\n};\n\ninterface AppLayoutState {\n  navigationOpen?: boolean;\n  toolsOpen?: boolean;\n  minContentWidth?: number;\n  maxContentWidth?: number | undefined;\n}\n\nexport function applyDefaults(\n  contentType: AppLayoutProps.ContentType,\n  stateFromProps: AppLayoutState,\n  isRefresh: boolean\n): AppLayoutState {\n  const contentTypeDefaults = isRefresh\n    ? { ...defaults[contentType], maxContentWidth: undefined }\n    : defaults[contentType];\n\n  return {\n    maxContentWidth: stateFromProps.maxContentWidth ?? contentTypeDefaults.maxContentWidth,\n    minContentWidth: stateFromProps.minContentWidth ?? contentTypeDefaults.minContentWidth,\n    navigationOpen: stateFromProps.navigationOpen ?? contentTypeDefaults.navigationOpen,\n    toolsOpen: stateFromProps.toolsOpen ?? contentTypeDefaults.toolsOpen,\n  };\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"notifications\": \"awsui_notifications_1hmm4_1pban_9\",\n  \"notifications-sticky\": \"awsui_notifications-sticky_1hmm4_1pban_10\",\n  \"no-content-paddings\": \"awsui_no-content-paddings_1hmm4_1pban_25\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport styles from './styles.css.js';\nimport { AppLayoutProps } from '../interfaces';\nimport clsx from 'clsx';\n\ninterface NotificationsProps {\n  testUtilsClassName: string;\n  children?: React.ReactNode;\n  labels: AppLayoutProps.Labels | undefined;\n  topOffset: number | undefined;\n  disableContentPaddings?: boolean;\n}\ninterface NotificationWrapperProps extends NotificationsProps {\n  sticky: boolean | undefined;\n}\n\nexport const Notifications = React.forwardRef(\n  ({ sticky, disableContentPaddings, ...props }: NotificationWrapperProps, ref: React.Ref<HTMLDivElement>) => {\n    return sticky ? (\n      <div ref={ref} className={styles['notifications-sticky']} style={{ top: props.topOffset }}>\n        <div\n          role=\"region\"\n          className={clsx(props.testUtilsClassName, disableContentPaddings && styles['no-content-paddings'])}\n          aria-label={props.labels?.notifications}\n        >\n          {props.children}\n        </div>\n      </div>\n    ) : (\n      <div\n        role=\"region\"\n        ref={ref}\n        className={clsx(\n          props.testUtilsClassName,\n          styles.notifications,\n          disableContentPaddings && styles['no-content-paddings']\n        )}\n        aria-label={props.labels?.notifications}\n      >\n        {props.children}\n      </div>\n    );\n  }\n);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useImperativeHandle } from 'react';\n\nexport interface ForwardFocusRef {\n  focus(): void;\n}\n\nexport default function useForwardFocus(\n  mainRef: React.Ref<any>,\n  controlRef: React.RefObject<{ focus: HTMLElement['focus'] }>\n) {\n  useImperativeHandle(\n    mainRef,\n    () => ({\n      focus(...args: Parameters<HTMLElement['focus']>) {\n        controlRef.current?.focus(...args);\n      },\n    }),\n    [controlRef]\n  );\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"content\": \"awsui_content_vjswe_1wbe8_97\",\n  \"button\": \"awsui_button_vjswe_1wbe8_101\",\n  \"variant-normal\": \"awsui_variant-normal_vjswe_1wbe8_126\",\n  \"is-activated\": \"awsui_is-activated_vjswe_1wbe8_139\",\n  \"variant-icon\": \"awsui_variant-icon_vjswe_1wbe8_166\",\n  \"variant-modal-dismiss\": \"awsui_variant-modal-dismiss_vjswe_1wbe8_166\",\n  \"variant-flashbar-icon\": \"awsui_variant-flashbar-icon_vjswe_1wbe8_166\",\n  \"variant-inline-icon\": \"awsui_variant-inline-icon_vjswe_1wbe8_184\",\n  \"disabled\": \"awsui_disabled_vjswe_1wbe8_202\",\n  \"variant-primary\": \"awsui_variant-primary_vjswe_1wbe8_210\",\n  \"variant-link\": \"awsui_variant-link_vjswe_1wbe8_294\",\n  \"variant-breadcrumb-group\": \"awsui_variant-breadcrumb-group_vjswe_1wbe8_714\",\n  \"variant-menu-trigger\": \"awsui_variant-menu-trigger_vjswe_1wbe8_801\",\n  \"button-no-text\": \"awsui_button-no-text_vjswe_1wbe8_885\",\n  \"button-no-wrap\": \"awsui_button-no-wrap_vjswe_1wbe8_889\",\n  \"full-width\": \"awsui_full-width_vjswe_1wbe8_892\",\n  \"icon-left\": \"awsui_icon-left_vjswe_1wbe8_909\",\n  \"icon-right\": \"awsui_icon-right_vjswe_1wbe8_914\",\n  \"icon\": \"awsui_icon_vjswe_1wbe8_909\"\n};\n  ","\n    import './styles.scoped.css';\n    export default {\n  \"icon\": \"awsui_icon_h11ix_1cvnj_98\",\n  \"icon-flex-height\": \"awsui_icon-flex-height_h11ix_1cvnj_104\",\n  \"size-small\": \"awsui_size-small_h11ix_1cvnj_129\",\n  \"size-small-mapped-height\": \"awsui_size-small-mapped-height_h11ix_1cvnj_133\",\n  \"size-normal\": \"awsui_size-normal_h11ix_1cvnj_147\",\n  \"size-normal-mapped-height\": \"awsui_size-normal-mapped-height_h11ix_1cvnj_151\",\n  \"size-medium\": \"awsui_size-medium_h11ix_1cvnj_165\",\n  \"size-medium-mapped-height\": \"awsui_size-medium-mapped-height_h11ix_1cvnj_169\",\n  \"size-big\": \"awsui_size-big_h11ix_1cvnj_183\",\n  \"size-big-mapped-height\": \"awsui_size-big-mapped-height_h11ix_1cvnj_187\",\n  \"size-large\": \"awsui_size-large_h11ix_1cvnj_201\",\n  \"size-large-mapped-height\": \"awsui_size-large-mapped-height_h11ix_1cvnj_205\",\n  \"variant-normal\": \"awsui_variant-normal_h11ix_1cvnj_219\",\n  \"variant-disabled\": \"awsui_variant-disabled_h11ix_1cvnj_222\",\n  \"variant-inverted\": \"awsui_variant-inverted_h11ix_1cvnj_225\",\n  \"variant-subtle\": \"awsui_variant-subtle_h11ix_1cvnj_228\",\n  \"variant-warning\": \"awsui_variant-warning_h11ix_1cvnj_231\",\n  \"variant-error\": \"awsui_variant-error_h11ix_1cvnj_234\",\n  \"variant-success\": \"awsui_variant-success_h11ix_1cvnj_237\",\n  \"variant-link\": \"awsui_variant-link_h11ix_1cvnj_240\",\n  \"badge\": \"awsui_badge_h11ix_1cvnj_244\"\n};\n  ","export default {\n  \"add-plus\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M8 1v14M15 8H1\\\"/></svg>\",\"angle-down\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"m1 4 7 7 7-7\\\"/></svg>\",\"angle-left-double\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M14 1 7 8l7 7\\\"/><path d=\\\"M9 1 2 8l7 7\\\"/></svg>\",\"angle-left\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M12 1 5 8l7 7\\\"/></svg>\",\"angle-right-double\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"m2 1 7 7-7 7\\\"/><path d=\\\"m7 1 7 7-7 7\\\"/></svg>\",\"angle-right\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"m4 1 7 7-7 7\\\"/></svg>\",\"angle-up\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"m1 12 7-7 7 7\\\"/></svg>\",\"arrow-left\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M9 1 2 8l7 7M2 8h13\\\"/></svg>\",\"audio-full\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M7 15V1L1 6v4l6 5ZM15 3v10M11 5v6\\\"/></svg>\",\"audio-half\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M7 15V1L1 6v4l6 5ZM11 5v6\\\"/></svg>\",\"audio-off\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M7 15V1L1 6v4l6 5Z\\\"/><path d=\\\"m15.01 5.75-4.5 4.5M15.01 10.25l-4.5-4.5\\\"/></svg>\",\"bug\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M5 5h6a1 1 0 0 1 1 1v5.5A3.5 3.5 0 0 1 8.5 15h-1A3.5 3.5 0 0 1 4 11.5V6a1 1 0 0 1 1-1ZM5 5a3 3 0 0 1 6 0\\\"/><path d=\\\"M12 9h3M1 9h3M12 12h2l1 2M4 12H2l-1 2M12 6h2l1-2M4 6H2L1 4\\\"/></svg>\",\"calendar\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M2 2h12v12H2z\\\"/><path d=\\\"M4.99 8H5v.01h-.01zM7.99 8H8v.01h-.01zM10.99 8H11v.01h-.01zM4.99 5H5v.01h-.01zM7.99 5H8v.01h-.01zM10.99 5H11v.01h-.01zM4.99 11H5v.01h-.01zM7.99 11H8v.01h-.01z\\\"/></svg>\",\"call\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M9 2c2.8 0 5 2.2 5 5M7.9 13c1.3 1.3 3.5 1.3 4.8 0l1-1c.4-.4.4-1 0-1.4l-1.5-1.5c-.3-.3-1-.2-1.3.1l-.1.1c-.5.5-1.4.5-2 0L6.6 7.2c-.5-.5-.5-1.4 0-2l.1-.1c.3-.3.4-1 .1-1.3L5.3 2.3c-.3-.4-1-.4-1.3 0l-1 1C1.7 4.6 1.7 6.7 3 8.1L7.9 13z\\\"/></svg>\",\"caret-down-filled\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"filled stroke-linejoin-round\\\" d=\\\"M4 5h8l-4 6-4-6z\\\"/></svg>\",\"caret-down\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M4 5h8l-4 6-4-6z\\\"/></svg>\",\"caret-left-filled\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"filled stroke-linejoin-round\\\" d=\\\"M11 4v8L5 8l6-4z\\\"/></svg>\",\"caret-right-filled\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"filled stroke-linejoin-round\\\" d=\\\"M5 4v8l6-4-6-4z\\\"/></svg>\",\"caret-up-filled\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"filled stroke-linejoin-round\\\" d=\\\"M4 11h8L8 5l-4 6z\\\"/></svg>\",\"caret-up\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M4 11h8L8 5l-4 6z\\\"/></svg>\",\"check\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"m14.254 4.254-8.25 8.25L6 12.5l-.004.004-4.25-4.25.008-.008L6 12.493l8.246-8.247.008.008Z\\\"/></svg>\",\"close\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"m2 2 12 12M14 2 2 14\\\"/></svg>\",\"contact\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round stroke-linecap-round\\\" d=\\\"M2 12.286h5.143L8.857 14l1.714-1.714H14V2H2v10.286z\\\"/><path class=\\\"stroke-linecap-round\\\" d=\\\"M4.99 7H5v.01h-.01zM7.99 7H8v.01h-.01zM10.99 7H11v.01h-.01z\\\"/></svg>\",\"copy\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M2 5h9v9H2z\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M5 5V2h9v9h-3\\\"/></svg>\",\"delete-marker\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M3 7V1h6l5 5v9H9\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M8 1v6h6M1 15l6-6M7 15 1 9\\\"/></svg>\",\"download\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M11 2h3v12H2V2h3\\\"/><path d=\\\"m4 6 4 4 4-4M8 1v9\\\"/></svg>\",\"drag-indicator\": \"<svg viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><circle cx=\\\"5.5\\\" cy=\\\"2.5\\\" r=\\\".5\\\" class=\\\"filled\\\"/><circle cx=\\\"5.5\\\" cy=\\\"13.5\\\" r=\\\".5\\\" class=\\\"filled\\\"/><circle cx=\\\"5.5\\\" cy=\\\"8\\\" r=\\\".5\\\" class=\\\"filled\\\"/><circle cx=\\\"10.5\\\" cy=\\\"2.5\\\" r=\\\".5\\\" class=\\\"filled\\\"/><circle cx=\\\"10.5\\\" cy=\\\"13.5\\\" r=\\\".5\\\" class=\\\"filled\\\"/><circle cx=\\\"10.5\\\" cy=\\\"8\\\" r=\\\".5\\\" class=\\\"filled\\\"/></svg>\",\"edit\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"filled\\\" d=\\\"M8.2 13.9H14v.1H8.1l.1-.1Zm2.37-9.17.7.7-5.3 5.3-.7-.7 5.3-5.3Zm2.71-2.7a.1.1 0 0 1 .14 0l.57.57a.1.1 0 0 1 0 .14l-.58.58-.71-.71.58-.58ZM3.15 12.15l.7.71-.24.24a1 1 0 0 1-.43.26l-.74.2.21-.73a1 1 0 0 1 .26-.44l.24-.24Z\\\"/></svg>\",\"ellipsis\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><circle class=\\\"filled\\\" cx=\\\"8\\\" cy=\\\"2.5\\\" r=\\\".5\\\"/><circle class=\\\"filled\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\".5\\\"/><circle class=\\\"filled\\\" cx=\\\"8\\\" cy=\\\"13.5\\\" r=\\\".5\\\"/></svg>\",\"envelope\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M1 2h14v12H1z\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"m1 4 7 6 7-6\\\"/></svg>\",\"expand\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M9 2h5v5M7 2H2v5M7 14H2V9M9 14h5V9M2 2l12 12M14 2 2 14\\\"/></svg>\",\"external\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linecap-square\\\" d=\\\"M10 2h4v4\\\"/><path d=\\\"m6 10 8-8\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M14 9.048V14H2V2h5\\\"/></svg>\",\"file-open\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M8 1v4a1 1 0 0 0 1 1h4\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M3 15h10V5L9 1H3v14z\\\"/><path d=\\\"m3 8 7 7\\\"/></svg>\",\"file\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M8 1v5h5\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M3 15V1h6l4 4v10H3z\\\"/></svg>\",\"filter\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M15 2H1l5 6v7h4V8l5-6z\\\"/></svg>\",\"flag\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"m2.71 9.18 1.11-.39C5.2 8.3 6.74 8.44 8 9.18c1.27.74 2.8.89 4.18.39l1.11-.39v-6l-1.11.39c-1.38.49-2.92.35-4.18-.39-1.27-.74-2.8-.89-4.18-.39l-1.11.39v11.83\\\"/></svg>\",\"folder-open\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M2 7V2h7l1 2h5v9a1 1 0 0 1-1 1H3L1 7h10l2.006 7\\\"/></svg>\",\"folder\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M14 14H2V2h5.143L9 5h5v9z\\\"/></svg>\",\"group-active\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M14 4a2 2 0 1 0-4 0 2 2 0 0 0 4 0ZM9 11v3h6v-3c0-1.66-1.34-3-3-3s-3 1.34-3 3Z\\\"/><path class=\\\"filled stroke-linejoin-round\\\" d=\\\"M6 4a2 2 0 1 0-4 0 2 2 0 0 0 4 0ZM1 11v3h6v-3c0-1.66-1.34-3-3-3s-3 1.34-3 3Z\\\"/></svg>\",\"group\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M14 4a2 2 0 1 0-4 0 2 2 0 0 0 4 0ZM9 11v3h6v-3c0-1.66-1.34-3-3-3s-3 1.34-3 3ZM6 4a2 2 0 1 0-4 0 2 2 0 0 0 4 0ZM1 11v3h6v-3c0-1.66-1.34-3-3-3s-3 1.34-3 3Z\\\"/></svg>\",\"heart\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M13.92 3.061a3.729 3.729 0 0 0-5.21 0L8 3.76l-.71-.699a3.729 3.729 0 0 0-5.21 0 3.58 3.58 0 0 0 0 5.123l5.21 5.124.003-.004L8 14l.707-.696.004.004 5.21-5.124a3.58 3.58 0 0 0 0-5.123Z\\\"/></svg>\",\"insert-row\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M15 6V3H1v9h5M16 11H8M12 15V7\\\"/></svg>\",\"key\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M9 10a5.023 5.023 0 0 1 0 1 3.996 3.996 0 1 1-3-3.874L13 1h2v5h-2v2h-2l.016 1.983Z\\\"/><path d=\\\"M4.99 11H5v.01h-.01z\\\"/></svg>\",\"keyboard\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M15 2H1v12h14V2Z\\\"/><path d=\\\"M6 5H4M9 5H7M12 5h-2M6 8H4M12 11H4M9 8H7M12 8h-2\\\"/></svg>\",\"lock-private\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M2 7h12v7H2z\\\"/><path d=\\\"M4 7V5a4 4 0 0 1 8 0v2\\\"/></svg>\",\"menu\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M15 8H1M15 3H1M15 13H1\\\"/></svg>\",\"microphone-off\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M13.76 1.34 2.11 12.98M4.75 10.8A5.002 5.002 0 0 0 13 7V6M8 15v-3M3 15h10\\\"/><path class=\\\"filled\\\" d=\\\"M8 1c-1.1 0-2 .9-2 2v1.09l2.88-2.88C8.61 1.08 8.32 1 8 1ZM6.64 8.46A2 2 0 0 0 8 9c1.1 0 2-.9 2-2V5.09L6.64 8.45v.01Z\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M3.37 8.53C3.024 8.184 3 7.537 3 7V6\\\"/></svg>\",\"microphone\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><rect class=\\\"stroke-linejoin-round\\\" x=\\\"6\\\" y=\\\"1\\\" width=\\\"4\\\" height=\\\"8\\\" rx=\\\"2\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M3 6v1a5 5 0 0 0 10 0V6M8 12v3M3 15h10\\\"/></svg>\",\"multiscreen\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M11 5H1v7h10V5Z\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M11 8.229h4v-7H5V5M1 15h10M6 15v-3\\\"/></svg>\",\"notification\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M8 2.167c-3.5 0-3.5 4.666-3.5 4.666L1 11.5h14l-3.5-4.667s0-4.666-3.5-4.666ZM5.667 11.5v1.167a2.333 2.333 0 0 0 4.666 0V11.5\\\"/><path class=\\\"stroke-linecap-round\\\" d=\\\"M8 1v1.167\\\"/></svg>\",\"redo\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M12 5H6.38c-4.5 0-4.5 8 0 8H13\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"m10 8 3-3-3-3\\\"/></svg>\",\"refresh\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M10 5h5V0\\\"/><path d=\\\"M15 8a6.957 6.957 0 0 1-7 7 6.957 6.957 0 0 1-7-7 6.957 6.957 0 0 1 7-7 6.87 6.87 0 0 1 6.3 4\\\"/></svg>\",\"remove\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"m3 3 1 11h8l1-11H3ZM1 3h14M10 2H6v1h4V2Z\\\"/></svg>\",\"resize-area\": \"<svg viewBox=\\\"0 0 16 16\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"m9.5 14.5 5-5M4 14.5 14.5 4\\\"/></svg>\",\"script\": \"<svg viewBox=\\\"0 0 16 17\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"m9.53 4.397-3.06 7.4M4.5 11.597 1 8.097l3.5-3.5M11.5 11.597l3.5-3.5-3.5-3.5\\\"/></svg>\",\"search\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><circle cx=\\\"7\\\" cy=\\\"7\\\" r=\\\"5\\\"/><path d=\\\"m15 15-4.5-4.5\\\"/></svg>\",\"security\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M8 14.83s-6-1.925-6-6.74V3.265c3.31 0 5.99-1.916 5.99-1.916s2.7 1.916 6.01 1.916V8.09c0 4.815-6 6.74-6 6.74Z\\\"/><path d=\\\"M2 8.09V3.265c3.31 0 5.99-1.916 5.99-1.916M13.99 8.09V3.265C10.68 3.265 8 1.35 8 1.35\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M8 4v5M8 10v2\\\"/></svg>\",\"settings\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M13.33 5.792a1.942 1.942 0 0 1 .287-1.97 6.984 6.984 0 0 0-1.44-1.439 1.943 1.943 0 0 1-3.159-1.308 6.965 6.965 0 0 0-2.037 0 1.943 1.943 0 0 1-3.158 1.308 6.962 6.962 0 0 0-1.44 1.44 1.943 1.943 0 0 1-1.308 3.158 6.972 6.972 0 0 0 0 2.037 1.943 1.943 0 0 1 1.308 3.159 6.952 6.952 0 0 0 1.44 1.44 1.942 1.942 0 0 1 3.159 1.308 6.962 6.962 0 0 0 2.036 0 1.942 1.942 0 0 1 3.159-1.308 6.974 6.974 0 0 0 1.44-1.44 1.943 1.943 0 0 1 1.308-3.159 6.974 6.974 0 0 0 0-2.037 1.942 1.942 0 0 1-1.596-1.189Z\\\"/><circle cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"2\\\"/></svg>\",\"share\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><circle cx=\\\"11\\\" cy=\\\"4\\\" r=\\\"2\\\"/><circle cx=\\\"4\\\" cy=\\\"8\\\" r=\\\"2\\\"/><circle cx=\\\"11\\\" cy=\\\"12\\\" r=\\\"2\\\"/><path d=\\\"M9.2 4.9 5.8 7.1M9.2 11.1 5.8 8.9\\\"/></svg>\",\"shrink\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M10 1v5h5M10 6l5-5M6 15v-5H1M6 10l-5 5\\\"/></svg>\",\"status-in-progress\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><circle class=\\\"stroke-linejoin-round\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"7\\\"/><path class=\\\"stroke-linecap-round\\\" d=\\\"M4.99 7.995H5v.01h-.01zM7.99 7.995H8v.01h-.01zM10.99 7.995H11v.01h-.01z\\\"/></svg>\",\"status-info\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><circle class=\\\"stroke-linejoin-round\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"7\\\"/><path d=\\\"M8 11V8H6\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M10 11H6\\\"/><path d=\\\"M7.99 5H8v.01h-.01z\\\"/></svg>\",\"status-negative\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><circle class=\\\"stroke-linejoin-round\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"7\\\"/><path d=\\\"m10.828 5.172-5.656 5.656M10.828 10.828 5.172 5.172\\\"/></svg>\",\"status-pending\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><circle class=\\\"stroke-linejoin-round\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"7\\\"/><path class=\\\"stroke-linecap-square\\\" d=\\\"M8 5v4H5\\\"/></svg>\",\"status-positive\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><circle class=\\\"stroke-linejoin-round\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"7\\\"/><path class=\\\"stroke-linecap-square\\\" d=\\\"m5 8 2 2 3.521-3.521\\\"/></svg>\",\"status-stopped\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><circle class=\\\"stroke-linejoin-round\\\" cx=\\\"8\\\" cy=\\\"8\\\" r=\\\"7\\\"/><path class=\\\"stroke-linecap-square\\\" d=\\\"M11 8H5\\\"/></svg>\",\"status-warning\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"m8 1 7 14H1L8 1z\\\"/><path d=\\\"M7.99 12H8v.01h-.01zM8 6v4\\\"/></svg>\",\"suggestions\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M6 14h4\\\"/><path d=\\\"M8 11h1c0-1.53 3-2.46 3-5.24.02-1.36-.61-2.4-1.57-3.09a4.208 4.208 0 0 0-4.86 0C4.61 3.36 3.98 4.4 4 5.76 4 8.54 7 9.47 7 11h1Z\\\"/></svg>\",\"thumbs-down-filled\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"filled stroke-linejoin-round\\\" d=\\\"M6 9.58c0 .27.06.55.19.79l1.64 3.28c.1.21.32.34.55.34.34 0 .62-.28.62-.62v-3.33h3.44a2 2 0 0 0 1.94-2.48l-1.01-4.05a2 2 0 0 0-1.94-1.52H6v7.59Z\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M6 2H2v7h4\\\"/></svg>\",\"thumbs-down\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M6 9.58c0 .27.06.55.19.79l1.64 3.28c.1.21.32.34.55.34.34 0 .62-.28.62-.62v-3.33h3.44a2 2 0 0 0 1.94-2.48l-1.01-4.05a2 2 0 0 0-1.94-1.52H6v7.59ZM6 2H2v7h4\\\"/></svg>\",\"thumbs-up-filled\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"filled stroke-linejoin-round\\\" d=\\\"M6 6.42c0-.27.06-.55.19-.79l1.64-3.28c.1-.21.32-.34.55-.34.34 0 .62.28.62.62v3.33h3.44a2 2 0 0 1 1.94 2.48l-1.01 4.05a2 2 0 0 1-1.94 1.52H6V6.42Z\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M6 14H2V7h4\\\"/></svg>\",\"thumbs-up\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M6 6.42c0-.27.06-.55.19-.79l1.64-3.28c.1-.21.32-.34.55-.34.34 0 .62.28.62.62v3.33h3.44a2 2 0 0 1 1.94 2.48l-1.01 4.05a2 2 0 0 1-1.94 1.52H6V6.42ZM6 14H2V7h4\\\"/></svg>\",\"ticket\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M8 4.275a2 2 0 0 1-2-2H3v12h3a2 2 0 1 1 4 0h3v-12h-3a2 2 0 0 1-2 2Z\\\"/></svg>\",\"treeview-collapse\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M5 8h6M2 2h12v12H2z\\\"/></svg>\",\"treeview-expand\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M5 8h6M8 11V5M2 2h12v12H2z\\\"/></svg>\",\"undo\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M4 13h5.625c4.5 0 4.5-8 0-8H3\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M6 2 3 5l3 3\\\"/></svg>\",\"unlocked\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M2 7h12v7H2z\\\"/><path d=\\\"M11.874 4A4 4 0 0 0 4 5v2\\\"/></svg>\",\"upload-download\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M11 13.701v-10M8 6.702l3-3 3 3M4.98 2.662v10.04M7.98 9.662l-3 3-3-3\\\"/></svg>\",\"upload\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M5 14H2V2h12v12h-3\\\"/><path d=\\\"M12 10 8 6l-4 4M8 6v9\\\"/></svg>\",\"user-profile-active\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"filled stroke-linejoin-round\\\" d=\\\"M4.61 4.39C4.61 2.52 6.13 1 8 1s3.39 1.52 3.39 3.39S9.87 7.78 8 7.78 4.61 6.26 4.61 4.39M2.05 14.08h11.91c0-2.25-1.17-4.23-2.9-5.3A5.77 5.77 0 0 0 8 7.91c-3.29 0-5.95 2.76-5.95 6.17z\\\"/></svg>\",\"user-profile\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M4.61 4.39C4.61 2.52 6.13 1 8 1s3.39 1.52 3.39 3.39S9.87 7.78 8 7.78 4.61 6.26 4.61 4.39M2.05 14.08h11.91c0-2.25-1.17-4.23-2.9-5.3A5.77 5.77 0 0 0 8 7.91c-3.29 0-5.95 2.76-5.95 6.17z\\\"/></svg>\",\"video-off\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M3 15h10M8 15v-3M8 12A5 5 0 1 0 8 2a5 5 0 0 0 0 10ZM6 5l4 4M10 5 6 9\\\"/></svg>\",\"video-on\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M3 15h10M8 15v-3M8 12A5 5 0 1 0 8 2a5 5 0 0 0 0 10Z\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M8 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z\\\"/></svg>\",\"video-unavailable\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"stroke-linejoin-round\\\" d=\\\"M3 15h10M8 15v-3M8 12A5 5 0 1 0 8 2a5 5 0 0 0 0 10ZM5.5 7h5\\\"/></svg>\",\"view-full\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"filled\\\" d=\\\"M5 5h6v6H5z\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M2 2h12v12H2z\\\"/></svg>\",\"view-horizontal\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"filled\\\" d=\\\"M5 9h6v2H5z\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M2 2h12v12H2z\\\"/></svg>\",\"view-vertical\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path class=\\\"filled\\\" d=\\\"M11 5v6H9V5z\\\"/><path class=\\\"stroke-linejoin-round\\\" d=\\\"M2 2h12v12H2z\\\"/></svg>\",\"zoom-in\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><circle cx=\\\"6.885\\\" cy=\\\"6.885\\\" r=\\\"5.385\\\"/><path d=\\\"m14.5 14.5-3.846-3.846M7 4v6M10 7H4\\\"/></svg>\",\"zoom-out\": \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><circle cx=\\\"6.885\\\" cy=\\\"6.885\\\" r=\\\"5.385\\\"/><path d=\\\"m14.5 14.5-3.846-3.846M10 7H4\\\"/></svg>\",\"zoom-to-fit\": \"<svg viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" focusable=\\\"false\\\" aria-hidden=\\\"true\\\"><path d=\\\"M14 11v3h-4M2 11v3h4M2 5V2h4M14 5V2h-4M10 6H6v4h4V6Z\\\"/></svg>\"\n  }","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useMemo } from 'react';\n\n/**\n * useMergeRefs merges multiple refs into single ref callback.\n *\n * For example\n *  const mergedRef = useMergeRefs(ref1, ref2, ref3)\n *  <div ref={refs}>...</div>\n */\nexport function useMergeRefs<T = any>(\n  ...refs: Array<React.RefCallback<T> | React.MutableRefObject<T> | null | undefined>\n): React.RefCallback<T> | null {\n  return useMemo(() => {\n    if (refs.every(ref => ref === null || ref === undefined)) {\n      return null;\n    }\n    return (value: T | null) => {\n      refs.forEach(ref => {\n        if (typeof ref === 'function') {\n          ref(value);\n        } else if (ref !== null && ref !== undefined) {\n          (ref as React.MutableRefObject<any>).current = value;\n        }\n      });\n    };\n    // ESLint expects an array literal which we can not provide here\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function calculateOnce<T>(callback: () => T) {\n  let result: T | undefined = undefined;\n  return () => {\n    if (result === undefined) {\n      result = callback();\n    }\n    return result;\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport balanced from 'balanced-match';\nimport { calculateOnce } from './calculate-once';\n\nexport function findUpUntil(node: HTMLElement, callback: (element: HTMLElement) => boolean): HTMLElement | null {\n  let current: HTMLElement | null = node;\n  while (current && !callback(current)) {\n    current = current.parentElement;\n    // If a component is used within an svg (i.e. as foreignObject), then it will\n    // have some ancestor nodes that are SVGElement. We want to skip those,\n    // as they have very different properties to HTLMElements.\n    while (current && !(current instanceof HTMLElement)) {\n      current = (current as Element).parentElement;\n    }\n  }\n  return current;\n}\n\n/**\n * Returns whether the browser supports CSS position sticky.\n * In our list of supported browsers, only returns false for IE11.\n */\nexport function supportsStickyPosition() {\n  if (typeof window === 'undefined') {\n    // render no-sticky UI on server-side\n    return false;\n  }\n  return window.CSS?.supports?.('position', 'sticky') ?? false;\n}\n\n/**\n * Returns whether `position: fixed` can be relative to transformed parents or\n * whether it's always relative to the viewport. Returns `true` on all browsers\n * except IE.\n */\nconst supportsContainingBlockPositioning = calculateOnce(() => {\n  const parent = document.createElement('div');\n  parent.style.transform = 'translateY(5px)';\n  document.body.appendChild(parent);\n\n  const child = document.createElement('div');\n  child.style.position = 'fixed';\n  child.style.top = '0';\n  parent.appendChild(child);\n\n  const result = parent.getBoundingClientRect().top === child.getBoundingClientRect().top;\n  document.body.removeChild(parent);\n  return result;\n});\n\n/**\n * Returns an element that is used to position the given element.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block\n */\nexport function getContainingBlock(startElement: HTMLElement): HTMLElement | null {\n  if (!startElement.parentElement) {\n    return null;\n  }\n\n  return supportsContainingBlockPositioning()\n    ? (findUpUntil(startElement.parentElement, element => {\n        const computedStyle = getComputedStyle(element);\n        return (\n          (!!computedStyle.transform && computedStyle.transform !== 'none') ||\n          (!!computedStyle.perspective && computedStyle.perspective !== 'none')\n        );\n      }) as HTMLElement)\n    : null;\n}\n\nconst cssVariableExpression = /--.+?\\s*,\\s*(.+)/;\n\n/**\n * Parses a CSS color value that might contain CSS Custom Properties\n * and returns a value that will be understood by the browser, no matter of support level.\n * If the browser support CSS Custom Properties, the value will be return as is. Otherwise,\n * the fallback value will be extracted and returned instead.\n */\nexport function parseCssVariable(value: string) {\n  if (window.CSS?.supports?.('color', 'var(--dummy, #000)') ?? false) {\n    return value;\n  }\n\n  const varIndex = value.lastIndexOf('var(');\n  if (varIndex === -1) {\n    return value;\n  }\n\n  const expr = balanced('(', ')', value.substr(varIndex));\n  if (!expr) {\n    return value;\n  }\n\n  const match = expr.body.match(cssVariableExpression);\n  return match ? match[1] : value;\n}\n\n/**\n * Checks whether the given node is a parent of the other descendant node.\n * This utility is helpful when the parent might be an SVG element,\n * which doesn't have a native `contains` implementation on some browsers like IE11.\n * @param parent Parent node\n * @param descendant Node that is checked to be a descendant of the parent node\n */\nexport function nodeContains(parent: Node | null, descendant: Node | null) {\n  if (!parent || !descendant) {\n    return false;\n  }\n\n  // Use the native `contains` method when available\n  if (parent.contains && descendant.nodeType === Node.ELEMENT_NODE) {\n    return parent === descendant || parent.contains(descendant);\n  }\n\n  // Fall back to a simple upwards tree traversal\n  let upperNode: Node | null = descendant;\n  while (upperNode && parent !== upperNode) {\n    upperNode = upperNode.parentNode;\n  }\n  return upperNode === parent;\n}\n\n/**\n * Checks whether the given node is a descendant of a container.\n * @param container Container node\n * @param node Node that is checked to be a descendant of the container\n */\nexport function containsOrEqual(container: Node | null, node: Node): boolean {\n  if (container === null) {\n    return false;\n  }\n  return container === node || container.contains(node);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { findUpUntil } from './utils/dom';\n\nexport const isMotionDisabled = (element: HTMLElement): boolean =>\n  !!findUpUntil(element, node => node.classList.contains('awsui-motion-disabled')) ||\n  (window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useCallback, useEffect, useRef } from 'react';\n\n/**\n * A callback that stays stable between renders even as the dependencies change.\n * Not a recommended React pattern, so it should be used sparingly and only if\n * the callback is an event handler (i.e. not used during rendering) and causing\n * clear performance issues.\n *\n * @see https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n */\nexport function useStableEventHandler<T extends (...args: any[]) => any>(fn: T): T {\n  const ref = useRef<T>();\n\n  useEffect(() => {\n    ref.current = fn;\n  });\n\n  return useCallback((...args: any[]) => ref.current?.apply(undefined, args), []) as T;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect } from 'react';\nimport { useStableEventHandler } from '../use-stable-event-handler';\nimport { createSingletonHandler } from '../use-singleton-handler';\n\nconst useMutationSingleton = createSingletonHandler<void>(handler => {\n  const observer = new MutationObserver(() => handler());\n  observer.observe(document.body, { attributes: true, subtree: true });\n  return () => observer.disconnect();\n});\n\n/**\n * Fires onChange with the given target element as an argument every time any DOM node attribute changes.\n *\n * @deprecated The hook has performance implications. Consider alternatives.\n */\nexport function useMutationObserver(\n  elementRef: React.RefObject<HTMLElement>,\n  onChange: (element: HTMLElement) => void\n) {\n  const handler = useStableEventHandler(() => {\n    if (elementRef.current) {\n      onChange(elementRef.current);\n    }\n  });\n  useMutationSingleton(handler);\n\n  useEffect(() => {\n    handler();\n  }, [handler]);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useState } from 'react';\nimport { ALWAYS_VISUAL_REFRESH } from '../../environment';\nimport { isMotionDisabled } from '../../motion';\nimport { findUpUntil } from '../../utils/dom';\nimport { useMutationObserver } from '../use-mutation-observer';\nimport { isDevelopment } from '../../is-development';\nimport { warnOnce } from '../../logging';\n\nexport function useCurrentMode(elementRef: React.RefObject<HTMLElement>) {\n  const [value, setValue] = useState<'light' | 'dark'>('light');\n  useMutationObserver(elementRef, node => {\n    const darkModeParent = findUpUntil(\n      node,\n      node => node.classList.contains('awsui-polaris-dark-mode') || node.classList.contains('awsui-dark-mode')\n    );\n    setValue(darkModeParent ? 'dark' : 'light');\n  });\n  return value;\n}\n\nexport function useDensityMode(elementRef: React.RefObject<HTMLElement>) {\n  const [value, setValue] = useState<'comfortable' | 'compact'>('comfortable');\n  useMutationObserver(elementRef, node => {\n    const compactModeParent = findUpUntil(\n      node,\n      node => node.classList.contains('awsui-polaris-compact-mode') || node.classList.contains('awsui-compact-mode')\n    );\n    setValue(compactModeParent ? 'compact' : 'comfortable');\n  });\n  return value;\n}\n\nexport const useVisualRefresh = ALWAYS_VISUAL_REFRESH ? () => true : useVisualRefreshDynamic;\n\n// We expect VR is to be set only once and before the application is rendered.\nlet visualRefreshState: undefined | boolean = undefined;\n\n// for testing\nexport function clearVisualRefreshState() {\n  visualRefreshState = undefined;\n}\n\nfunction detectVisualRefresh() {\n  return typeof document !== 'undefined' && !!document.querySelector('.awsui-visual-refresh');\n}\n\nexport function useVisualRefreshDynamic() {\n  if (visualRefreshState === undefined) {\n    visualRefreshState = detectVisualRefresh();\n  }\n  if (isDevelopment) {\n    const newVisualRefreshState = detectVisualRefresh();\n    if (newVisualRefreshState !== visualRefreshState) {\n      warnOnce(\n        'Visual Refresh',\n        'Dynamic visual refresh change detected. This is not supported. ' +\n          'Make sure `awsui-visual-refresh` is attached to the `<body>` element before initial React render'\n      );\n    }\n  }\n  return visualRefreshState;\n}\n\nexport function useReducedMotion(elementRef: React.RefObject<HTMLElement>) {\n  const [value, setValue] = useState(false);\n  useMutationObserver(elementRef, node => {\n    setValue(isMotionDisabled(node));\n  });\n  return value;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useLayoutEffect, useRef, useState } from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport { warnOnce } from '../internal/logging';\nimport styles from './styles.css.js';\nimport icons from './icons';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { IconProps } from './interfaces';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\n\ntype InternalIconProps = IconProps &\n  InternalBaseComponentProps & {\n    badge?: boolean;\n  };\n\nfunction iconSizeMap(height: number | null) {\n  if (height === null) {\n    // This is the best guess for the contextual height while server rendering.\n    return 'normal';\n  }\n\n  if (height >= 50) {\n    return 'large';\n  } else if (height >= 36) {\n    return 'big';\n  } else if (height >= 24) {\n    return 'medium';\n  } else if (height <= 16) {\n    return 'small';\n  } else {\n    return 'normal';\n  }\n}\n\nconst InternalIcon = ({\n  name,\n  size = 'normal',\n  variant = 'normal',\n  url,\n  alt,\n  svg,\n  badge,\n  __internalRootRef = null,\n  ...props\n}: InternalIconProps) => {\n  const iconRef = useRef<HTMLElement>(null);\n  // To ensure a re-render is triggered on visual mode changes\n  useVisualRefresh();\n  const [parentHeight, setParentHeight] = useState<number | null>(null);\n  const contextualSize = size === 'inherit';\n  const iconSize = contextualSize ? iconSizeMap(parentHeight) : size;\n  const inlineStyles = contextualSize && parentHeight !== null ? { height: `${parentHeight}px` } : {};\n  const baseProps = getBaseProps(props);\n\n  baseProps.className = clsx(\n    baseProps.className,\n    styles.icon,\n    contextualSize && styles['icon-flex-height'],\n    badge && styles.badge,\n    !contextualSize && styles[`size-${iconSize}-mapped-height`],\n    styles[`size-${iconSize}`],\n    styles[`variant-${variant}`]\n  );\n\n  // Possible infinite loop is not a concern here because line\n  // height should not change without an external state update.\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  useLayoutEffect(() => {\n    if (!contextualSize || !iconRef.current) {\n      return;\n    }\n    const { lineHeight } = getComputedStyle(iconRef.current);\n    const newParentHeight = parseInt(lineHeight, 10);\n    setParentHeight(newParentHeight);\n  });\n\n  const mergedRef = useMergeRefs(iconRef, __internalRootRef);\n\n  if (svg) {\n    if (url) {\n      warnOnce(\n        'Icon',\n        'You have specified both `url` and `svg`. `svg` will take precedence and `url` will be ignored.'\n      );\n    }\n    return (\n      <span {...baseProps} ref={mergedRef} aria-hidden=\"true\" style={inlineStyles}>\n        {svg}\n      </span>\n    );\n  }\n\n  if (url) {\n    return (\n      <span {...baseProps} ref={mergedRef} style={inlineStyles}>\n        <img src={url} alt={alt} />\n      </span>\n    );\n  }\n\n  const validIcon = name && Object.prototype.hasOwnProperty.call(icons, name);\n\n  return (\n    <span\n      {...baseProps}\n      // dangerouslySetInnerHTML is safe here, as we control the content coming from `icons`\n      // eslint-disable-next-line react/no-danger\n      dangerouslySetInnerHTML={validIcon ? { __html: icons[name] } : undefined}\n      ref={mergedRef}\n      style={inlineStyles}\n    />\n  );\n};\n\nexport { InternalIconProps };\nexport default InternalIcon;\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_1612d_eii7u_127\",\n  \"spinner-rotator\": \"awsui_spinner-rotator_1612d_eii7u_1\",\n  \"size-normal\": \"awsui_size-normal_1612d_eii7u_135\",\n  \"size-big\": \"awsui_size-big_1612d_eii7u_143\",\n  \"size-large\": \"awsui_size-large_1612d_eii7u_151\",\n  \"variant-normal\": \"awsui_variant-normal_1612d_eii7u_159\",\n  \"variant-disabled\": \"awsui_variant-disabled_1612d_eii7u_162\",\n  \"variant-inverted\": \"awsui_variant-inverted_1612d_eii7u_165\",\n  \"circle\": \"awsui_circle_1612d_eii7u_169\",\n  \"circle-left\": \"awsui_circle-left_1612d_eii7u_193\",\n  \"spinner-line-left\": \"awsui_spinner-line-left_1612d_eii7u_1\",\n  \"circle-right\": \"awsui_circle-right_1612d_eii7u_198\",\n  \"spinner-line-right\": \"awsui_spinner-line-right_1612d_eii7u_1\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport styles from './styles.css.js';\nimport { SpinnerProps } from './interfaces';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\n\ninterface InternalSpinnerProps extends SpinnerProps, InternalBaseComponentProps {}\n\nexport default function InternalSpinner({\n  size = 'normal',\n  variant = 'normal',\n  __internalRootRef,\n  ...props\n}: InternalSpinnerProps) {\n  const baseProps = getBaseProps(props);\n\n  return (\n    <span\n      {...baseProps}\n      className={clsx(baseProps.className, styles.root, styles[`size-${size}`], styles[`variant-${variant}`])}\n      ref={__internalRootRef}\n    >\n      <span className={clsx(styles.circle, styles['circle-left'])} />\n      <span className={clsx(styles.circle, styles['circle-right'])} />\n    </span>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport { IconProps } from '../icon/interfaces';\nimport InternalIcon from '../icon/internal';\nimport InternalSpinner from '../spinner/internal';\nimport { ButtonProps } from './interfaces';\nimport styles from './styles.css.js';\n\nexport interface ButtonIconProps {\n  loading?: boolean;\n  iconName?: ButtonProps['iconName'];\n  iconAlign?: ButtonProps['iconAlign'];\n  iconUrl?: string;\n  iconSvg?: React.ReactNode;\n  iconAlt?: string;\n  iconSize?: IconProps.Size;\n  variant?: string;\n  iconClass?: string;\n}\n\nfunction getIconAlign(props: ButtonIconProps) {\n  const standalone = props.variant === 'icon' || props.variant === 'inline-icon';\n\n  return standalone ? 'left' : props.iconAlign;\n}\n\nfunction IconWrapper({ iconName, iconUrl, iconAlt, iconSvg, iconSize, ...props }: ButtonIconProps) {\n  if (!iconName && !iconUrl && !iconSvg) {\n    return null;\n  }\n\n  return (\n    <InternalIcon\n      className={clsx(styles.icon, styles[`icon-${getIconAlign(props)}`], props.iconClass)}\n      name={iconName}\n      url={iconUrl}\n      svg={iconSvg}\n      alt={iconAlt}\n      size={iconSize}\n    />\n  );\n}\n\nexport function LeftIcon(props: ButtonIconProps) {\n  if (props.loading) {\n    return <InternalSpinner className={clsx(styles.icon, styles['icon-left'])} />;\n  } else if (getIconAlign(props) === 'left') {\n    return <IconWrapper {...props} />;\n  }\n  return null;\n}\n\nexport function RightIcon(props: ButtonIconProps) {\n  if (getIconAlign(props) === 'right') {\n    return <IconWrapper {...props} />;\n  }\n  return null;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { warnOnce } from '../logging';\n\nconst allowedJavascriptUrls = ['javascript:void(0)', 'javascript:void(0);', 'javascript:;'];\n\nexport function checkSafeUrl(component: string, url: string | undefined | null): void {\n  if (!url) {\n    return;\n  }\n  if (allowedJavascriptUrls.indexOf(url.toLowerCase()) !== -1) {\n    return;\n  }\n\n  let parsedUrl: URL;\n  try {\n    parsedUrl = new URL(url);\n  } catch (e) {\n    // If the URL cannot be parsed by the browser, it likely does not pose a security risk.\n    return;\n  }\n\n  if (parsedUrl.protocol === 'javascript:') {\n    warnOnce(component, `A javascript: URL was blocked as a security precaution. The URL was \"${url}\".`);\n    // This mirrors the error message that React will use:\n    // https://github.com/facebook/react/blob/a724a3b578dce77d427bef313102a4d0e978d9b4/packages/react-dom/src/shared/sanitizeURL.js#L30\n    throw new Error(`A javascript: URL was blocked as a security precaution.`);\n  }\n\n  return;\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_xttbq_1i4dh_93\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport clsx from 'clsx';\nimport React from 'react';\nimport styles from './styles.css.js';\n\nexport interface ScreenreaderOnlyProps {\n  id?: string;\n  className?: string;\n  children: React.ReactNode;\n}\n\n/**\n * Makes content now shown on a screen but still announced by screen-reader users.\n * The component is suitable when the aria-label cannot be used, e.g. to avoid elemnts being announced as \"blank\".\n *\n * To exclude screenreader-only content use `:not(.${screenreaderOnlyStyles.root})` selector, for example:\n *\n * ```\n * import screenreaderOnlyStyles from '~internal/components/screenreader-only/styles.css.js'\n *\n * let visibleContent = wrapper.find(`${styles.label}`).find(`:not(.${screenreaderOnlyStyles.root})`).getElement().textContent\n *\n * let screenreaderContent = wrapper.find(`${styles.label}`).find(`.${screenreaderOnlyStyles.root}`).getElement().textContent\n * ```\n */\nexport default function ScreenreaderOnly(props: ScreenreaderOnlyProps) {\n  return <span {...props} className={clsx(styles.root, props.className)} />;\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_3bgfn_im8v7_5\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable @awsui/prefer-live-region */\n\nimport clsx from 'clsx';\nimport React, { memo, useEffect, useRef } from 'react';\nimport ScreenreaderOnly, { ScreenreaderOnlyProps } from '../screenreader-only';\nimport styles from './styles.css.js';\n\nexport interface LiveRegionProps extends ScreenreaderOnlyProps {\n  assertive?: boolean;\n  delay?: number;\n  visible?: boolean;\n  tagName?: 'span' | 'div';\n  children: React.ReactNode;\n  id?: string;\n}\n\n/**\n * The live region is hidden in the layout, but visible for screen readers.\n * It's purpose it to announce changes e.g. when custom navigation logic is used.\n *\n * The way live region works differently in different browsers and screen readers and\n * it is recommended to manually test every new implementation.\n *\n * If you notice there are different words being merged together,\n * check if there are text nodes not being wrapped in elements, like:\n * <LiveRegion>\n *   {title}\n *   <span><Details /></span>\n * </LiveRegion>\n *\n * To fix, wrap \"title\" in an element:\n * <LiveRegion>\n *   <span>{title}</span>\n *   <span><Details /></span>\n * </LiveRegion>\n *\n * Or create a single text node if possible:\n * <LiveRegion>\n *   {`${title} ${details}`}\n * </LiveRegion>\n *\n * The live region is always atomic, because non-atomic regions can be treated by screen readers\n * differently and produce unexpected results. To imitate non-atomic announcements simply use\n * multiple live regions:\n * <>\n *   <LiveRegion>{title}</LiveRegion>\n *   <LiveRegion><Details /></LiveRegion>\n * </>\n */\nexport default memo(LiveRegion);\n\nfunction LiveRegion({\n  assertive = false,\n  delay = 10,\n  visible = false,\n  tagName: TagName = 'span',\n  children,\n  id,\n  ...restProps\n}: LiveRegionProps) {\n  const sourceRef = useRef<HTMLSpanElement & HTMLDivElement>(null);\n  const targetRef = useRef<HTMLSpanElement & HTMLDivElement>(null);\n\n  /*\n    When React state changes, React often produces too many DOM updates, causing NVDA to\n    issue many announcements for the same logical event (See https://github.com/nvaccess/nvda/issues/7996).\n\n    The code below imitates a debouncing, scheduling a callback every time new React state\n    update is detected. When a callback resolves, it copies content from a muted element\n    to the live region, which is recognized by screen readers as an update.\n\n    If the use case requires no announcement to be ignored, use delay = 0, but ensure it\n    does not impact the performance. If it does, prefer using a string as children prop.\n  */\n  useEffect(() => {\n    function updateLiveRegion() {\n      if (targetRef.current && sourceRef.current) {\n        const sourceContent = extractInnerText(sourceRef.current);\n        const targetContent = extractInnerText(targetRef.current);\n        if (targetContent !== sourceContent) {\n          // The aria-atomic does not work properly in Voice Over, causing\n          // certain parts of the content to be ignored. To fix that,\n          // we assign the source text content as a single node.\n          targetRef.current.innerText = sourceContent;\n        }\n      }\n    }\n\n    let timeoutId: null | number;\n    if (delay) {\n      timeoutId = setTimeout(updateLiveRegion, delay);\n    } else {\n      updateLiveRegion();\n    }\n\n    return () => {\n      if (timeoutId) {\n        clearTimeout(timeoutId);\n      }\n    };\n  });\n\n  return (\n    <>\n      {visible && (\n        <TagName ref={sourceRef} id={id}>\n          {children}\n        </TagName>\n      )}\n\n      <ScreenreaderOnly {...restProps} className={clsx(styles.root, restProps.className)}>\n        {!visible && (\n          <TagName ref={sourceRef} aria-hidden=\"true\">\n            {children}\n          </TagName>\n        )}\n\n        <span ref={targetRef} aria-atomic=\"true\" aria-live={assertive ? 'assertive' : 'polite'}></span>\n      </ScreenreaderOnly>\n    </>\n  );\n}\n\n// This only extracts text content from the node including all its children which is enough for now.\n// To make it more powerful, it is possible to create a more sophisticated extractor with respect to\n// ARIA properties to ignore aria-hidden nodes and read ARIA labels from the live content.\nfunction extractInnerText(node: HTMLElement) {\n  return (node.innerText || '').replace(/\\s+/g, ' ').trim();\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { createContext } from 'react';\nimport { FunnelType } from '../interfaces';\n\nexport interface BaseContextProps {\n  funnelInteractionId: string | undefined;\n}\n\nexport interface FunnelContextValue extends BaseContextProps {\n  funnelType: FunnelType;\n  optionalStepNumbers: number[];\n  totalFunnelSteps: number;\n  funnelSubmit: () => void;\n  funnelCancel: () => void;\n  setFunnelInteractionId: (funnelInteractionId: string) => void;\n}\n\nexport interface FunnelStepContextValue extends BaseContextProps {\n  stepNameSelector: string;\n  stepNumber: number;\n}\n\nexport interface FunnelSubStepContextValue extends FunnelStepContextValue {\n  subStepId: string;\n  subStepSelector: string;\n  subStepNameSelector: string;\n  stepNumber: number;\n}\n\nexport const FunnelContext = createContext<FunnelContextValue>({\n  funnelInteractionId: undefined,\n  setFunnelInteractionId: () => {},\n  funnelType: 'single-page',\n  optionalStepNumbers: [],\n  totalFunnelSteps: 0,\n  funnelSubmit: () => {},\n  funnelCancel: () => {},\n});\n\nexport const FunnelStepContext = createContext<FunnelStepContextValue>({\n  funnelInteractionId: undefined,\n  stepNameSelector: '',\n  stepNumber: 0,\n});\n\nexport const FunnelSubStepContext = createContext<FunnelSubStepContextValue>({\n  funnelInteractionId: undefined,\n  subStepId: '',\n  stepNumber: 0,\n  stepNameSelector: '',\n  subStepSelector: '',\n  subStepNameSelector: '',\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const DATA_ATTR_FUNNEL = 'data-analytics-funnel';\nexport const DATA_ATTR_FUNNEL_INTERACTION_ID = `${DATA_ATTR_FUNNEL}-interaction-id`;\nexport const DATA_ATTR_FUNNEL_KEY = `${DATA_ATTR_FUNNEL}-key`;\nexport const DATA_ATTR_FUNNEL_VALUE = `${DATA_ATTR_FUNNEL}-value`;\nexport const DATA_ATTR_FUNNEL_STEP = `${DATA_ATTR_FUNNEL}-step`;\nexport const DATA_ATTR_FUNNEL_SUBSTEP = `${DATA_ATTR_FUNNEL}-substep`;\n\nexport const DATA_ATTR_FIELD_LABEL = 'data-analytics-field-label';\nexport const DATA_ATTR_FIELD_ERROR = 'data-analytics-field-error';\n\nexport const DATA_ATTR_ANALYTICS_ALERT = 'data-analytics-alert';\nexport const DATA_ATTR_ANALYTICS_FLASHBAR = 'data-analytics-flashbar';\n\nexport const FUNNEL_KEY_FUNNEL_NAME = 'funnel-name';\nexport const FUNNEL_KEY_SUBSTEP_NAME = 'substep-name';\n\nexport const getFunnelNameSelector = () => `[${DATA_ATTR_FUNNEL_KEY}=\"${FUNNEL_KEY_FUNNEL_NAME}\"]`;\nexport const getFunnelKeySelector = (key: string) => `[${DATA_ATTR_FUNNEL_KEY}=\"${key}\"]`;\nexport const getFunnelValueSelector = (value: string) => `[${DATA_ATTR_FUNNEL_VALUE}=\"${value}\"]`;\n\nexport const getSubStepAllSelector = () => `[${DATA_ATTR_FUNNEL_SUBSTEP}]`;\nexport const getSubStepSelector = (subStepId: string) => `[${DATA_ATTR_FUNNEL_SUBSTEP}=\"${subStepId}\"]`;\nexport const getSubStepNameSelector = (subStepId: string) =>\n  [`${getSubStepSelector(subStepId)}`, `[${DATA_ATTR_FUNNEL_KEY}=\"${FUNNEL_KEY_SUBSTEP_NAME}\"]`].join(' ');\n\nexport const getFieldSlotSeletor = (id: string | undefined) => (id ? `[id=\"${id}\"]` : undefined);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/* istanbul ignore file */\n\nimport { IFunnelMetrics } from './interfaces';\n\nexport function setFunnelMetrics(funnelMetrics: IFunnelMetrics) {\n  FunnelMetrics = funnelMetrics;\n}\n\n/**\n * This is a stub implementation of the FunnelMetrics interface and will be replaced during\n * build time with the actual implementation.\n */\nexport let FunnelMetrics: IFunnelMetrics = {\n  funnelStart(): string {\n    return '';\n  },\n\n  funnelError(): void {},\n  funnelComplete(): void {},\n  funnelSuccessful(): void {},\n  funnelCancelled(): void {},\n  funnelStepStart(): void {},\n  funnelStepComplete(): void {},\n  funnelStepNavigation(): void {},\n  funnelSubStepStart(): void {},\n  funnelSubStepComplete(): void {},\n  funnelSubStepError(): void {},\n  helpPanelInteracted(): void {},\n  externalLinkInteracted(): void {},\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext, useRef } from 'react';\nimport { FunnelContext, FunnelStepContext, FunnelSubStepContext } from '../context/analytics-context';\nimport {\n  DATA_ATTR_FUNNEL_INTERACTION_ID,\n  DATA_ATTR_FUNNEL_STEP,\n  DATA_ATTR_FUNNEL_SUBSTEP,\n  getSubStepAllSelector,\n} from '../selectors';\nimport { FunnelMetrics } from '../';\n\n/**\n * Custom React Hook to manage and interact with FunnelSubStep.\n * This hook will provide necessary properties and methods required\n * to track and manage interactions with a FunnelSubStep component.\n *\n * The `onFocus` method is used to track the beginning of interaction with the FunnelSubStep.\n * The `onBlur` method is used to track the completion of interaction with the FunnelSubStep.\n * The subStepId is a unique identifier for the funnel sub-step.\n * The subStepRef is a reference to the DOM element of the funnel sub-step.\n */\nexport const useFunnelSubStep = () => {\n  const subStepRef = useRef<HTMLDivElement | null>(null);\n  const context = useContext(FunnelSubStepContext);\n  const { funnelInteractionId, subStepId, subStepSelector, subStepNameSelector, stepNumber, stepNameSelector } =\n    context;\n\n  const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n    if (\n      funnelInteractionId &&\n      subStepRef.current &&\n      (!event.relatedTarget || !subStepRef.current.contains(event.relatedTarget as Node))\n    ) {\n      FunnelMetrics.funnelSubStepStart({\n        funnelInteractionId,\n        subStepSelector,\n        subStepNameSelector,\n        stepNumber,\n        stepNameSelector,\n        subStepAllSelector: getSubStepAllSelector(),\n      });\n    }\n  };\n\n  const onBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n    if (funnelInteractionId && subStepRef.current && !subStepRef.current.contains(event.relatedTarget)) {\n      FunnelMetrics.funnelSubStepComplete({\n        funnelInteractionId,\n        subStepSelector,\n        subStepNameSelector,\n        stepNumber,\n        stepNameSelector,\n        subStepAllSelector: getSubStepAllSelector(),\n      });\n    }\n  };\n\n  const funnelSubStepProps: Record<string, any> = funnelInteractionId\n    ? {\n        [DATA_ATTR_FUNNEL_SUBSTEP]: subStepId,\n        onFocus,\n        onBlur,\n      }\n    : {};\n\n  return { funnelSubStepProps, subStepRef, ...context };\n};\n\n/**\n * Custom React Hook to manage and interact with FunnelStep.\n * This hook will provide necessary properties required to track\n * and manage interactions with a FunnelStep component.\n *\n * The 'data-analytics-funnel-step' property of funnelStepProps is used to track the index of the current step in the funnel.\n * The context contains additional properties of the FunnelStep.\n */\nexport const useFunnelStep = () => {\n  const context = useContext(FunnelStepContext);\n  const funnelStepProps: Record<string, string | number | boolean | undefined> = context.funnelInteractionId\n    ? {\n        [DATA_ATTR_FUNNEL_STEP]: context.stepNumber,\n      }\n    : {};\n\n  return { funnelStepProps, ...context };\n};\n\n/**\n * Custom React Hook to manage and interact with Funnel.\n * This hook will provide necessary properties required to track\n * and manage interactions with a Funnel component.\n *\n * The 'data-analytics-funnel-interaction-id' property of funnelProps is used to track the unique identifier of the current interaction with the funnel.\n */\nexport const useFunnel = () => {\n  const context = useContext(FunnelContext);\n  const funnelProps: Record<string, string | number | boolean | undefined> = context.funnelInteractionId\n    ? {\n        [DATA_ATTR_FUNNEL_INTERACTION_ID]: context.funnelInteractionId,\n      }\n    : {};\n\n  return { funnelProps, ...context };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useCallback, useRef } from 'react';\nimport { fireCancelableEvent, isPlainLeftClick } from '../internal/events';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport styles from './styles.css.js';\nimport { ButtonIconProps, LeftIcon, RightIcon } from './icon-helper';\nimport { ButtonProps } from './interfaces';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport LiveRegion from '../internal/components/live-region';\nimport { useFunnel } from '../internal/analytics/hooks/use-funnel';\n\ntype InternalButtonProps = Omit<ButtonProps, 'variant'> & {\n  variant?: ButtonProps['variant'] | 'flashbar-icon' | 'breadcrumb-group' | 'menu-trigger' | 'modal-dismiss';\n  __nativeAttributes?: Record<string, any>;\n  __iconClass?: string;\n  __activated?: boolean;\n} & InternalBaseComponentProps;\n\nexport const InternalButton = React.forwardRef(\n  (\n    {\n      children,\n      iconName,\n      __iconClass,\n      onClick,\n      onFollow,\n      iconAlign = 'left',\n      iconUrl,\n      iconSvg,\n      iconAlt,\n      variant = 'normal',\n      loading = false,\n      loadingText,\n      disabled = false,\n      wrapText = true,\n      href,\n      target,\n      rel,\n      download,\n      formAction = 'submit',\n      ariaLabel,\n      ariaDescribedby,\n      ariaExpanded,\n      fullWidth,\n      __nativeAttributes,\n      __internalRootRef = null,\n      __activated = false,\n      ...props\n    }: InternalButtonProps,\n    ref: React.Ref<ButtonProps.Ref>\n  ) => {\n    checkSafeUrl('Button', href);\n    const isAnchor = Boolean(href);\n    const isNotInteractive = loading || disabled;\n    const shouldHaveContent =\n      children && ['icon', 'inline-icon', 'flashbar-icon', 'modal-dismiss'].indexOf(variant) === -1;\n\n    const buttonRef = useRef<HTMLElement>(null);\n    useForwardFocus(ref, buttonRef);\n\n    const { funnelInteractionId, funnelSubmit } = useFunnel();\n\n    const handleClick = useCallback(\n      (event: React.MouseEvent) => {\n        if (isNotInteractive) {\n          return event.preventDefault();\n        }\n\n        if (isAnchor && isPlainLeftClick(event)) {\n          fireCancelableEvent(onFollow, { href, target }, event);\n        }\n\n        if (funnelInteractionId && variant === 'primary') {\n          funnelSubmit();\n        }\n\n        const { altKey, button, ctrlKey, metaKey, shiftKey } = event;\n        fireCancelableEvent(onClick, { altKey, button, ctrlKey, metaKey, shiftKey }, event);\n      },\n      [isAnchor, isNotInteractive, onClick, onFollow, href, target, funnelInteractionId, variant, funnelSubmit]\n    );\n\n    const buttonClass = clsx(props.className, styles.button, styles[`variant-${variant}`], {\n      [styles.disabled]: isNotInteractive,\n      [styles['button-no-wrap']]: !wrapText,\n      [styles['button-no-text']]: !shouldHaveContent,\n      [styles['is-activated']]: __activated,\n      [styles['full-width']]: shouldHaveContent && fullWidth,\n    });\n\n    const buttonProps = {\n      ...props,\n      ...__nativeAttributes,\n      // https://github.com/microsoft/TypeScript/issues/36659\n      ref: useMergeRefs(buttonRef as any, __internalRootRef),\n      'aria-label': ariaLabel,\n      'aria-describedby': ariaDescribedby,\n      'aria-expanded': ariaExpanded,\n      className: buttonClass,\n      onClick: handleClick,\n    } as const;\n    const iconProps: ButtonIconProps = {\n      loading,\n      iconName,\n      iconAlign,\n      iconUrl,\n      iconSvg,\n      iconAlt,\n      variant,\n      iconClass: __iconClass,\n      iconSize: variant === 'modal-dismiss' ? 'medium' : 'normal',\n    };\n    const buttonContent = (\n      <>\n        <LeftIcon {...iconProps} />\n        {shouldHaveContent && <span className={styles.content}>{children}</span>}\n        <RightIcon {...iconProps} />\n      </>\n    );\n\n    if (isAnchor) {\n      return (\n        // https://github.com/yannickcr/eslint-plugin-react/issues/2962\n        // eslint-disable-next-line react/jsx-no-target-blank\n        <>\n          <a\n            {...buttonProps}\n            href={href}\n            target={target}\n            // security recommendation: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target\n            rel={rel ?? (target === '_blank' ? 'noopener noreferrer' : undefined)}\n            tabIndex={isNotInteractive ? -1 : undefined}\n            aria-disabled={isNotInteractive ? true : undefined}\n            download={download}\n          >\n            {buttonContent}\n          </a>\n          {loading && loadingText && <LiveRegion>{loadingText}</LiveRegion>}\n        </>\n      );\n    }\n    return (\n      <>\n        <button\n          {...buttonProps}\n          type={formAction === 'none' ? 'button' : 'submit'}\n          disabled={disabled}\n          aria-disabled={loading && !disabled ? true : undefined}\n        >\n          {buttonContent}\n        </button>\n        {loading && loadingText && <LiveRegion>{loadingText}</LiveRegion>}\n      </>\n    );\n  }\n);\n\nexport default InternalButton;\n","\n    import './styles.scoped.css';\n    export default {\n  \"close-button\": \"awsui_close-button_16w0h_z9mit_93\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { ButtonProps } from '../../button/interfaces';\nimport { InternalButton } from '../../button/internal';\nimport { AppLayoutProps } from '../interfaces';\nimport { AppLayoutButtonProps } from './interfaces';\nimport styles from './styles.css.js';\n\nexport const togglesConfig = {\n  navigation: {\n    TagName: 'nav',\n    iconName: 'menu',\n    getLabels: (labels: AppLayoutProps.Labels = {}) => ({\n      mainLabel: labels.navigation,\n      openLabel: labels.navigationToggle,\n      closeLabel: labels.navigationClose,\n    }),\n  },\n  tools: {\n    TagName: 'aside',\n    iconName: 'status-info',\n    getLabels: (labels: AppLayoutProps.Labels = {}) => ({\n      mainLabel: labels.tools,\n      openLabel: labels.toolsToggle,\n      closeLabel: labels.toolsClose,\n    }),\n  },\n} as const;\n\nexport const AppLayoutButton = React.forwardRef(\n  (\n    { className, ariaLabel, ariaExpanded, iconName, iconSvg, disabled, onClick }: AppLayoutButtonProps,\n    ref: React.Ref<ButtonProps.Ref>\n  ) => {\n    return (\n      <InternalButton\n        ref={ref}\n        className={className}\n        ariaLabel={ariaLabel}\n        variant=\"icon\"\n        formAction=\"none\"\n        onClick={onClick}\n        iconName={iconName}\n        iconSvg={iconSvg}\n        disabled={disabled}\n        ariaExpanded={ariaExpanded ? undefined : false}\n        __nativeAttributes={{ 'aria-haspopup': ariaExpanded ? undefined : true }}\n      />\n    );\n  }\n);\n\ninterface CloseButtonProps {\n  className?: string;\n  ariaLabel: string | undefined;\n  onClick: () => void;\n}\n\nexport const CloseButton = React.forwardRef(\n  ({ className, ariaLabel, onClick }: CloseButtonProps, ref: React.Ref<ButtonProps.Ref>) => {\n    return (\n      <span className={styles['close-button']}>\n        <AppLayoutButton\n          ref={ref}\n          className={className}\n          ariaExpanded={true}\n          ariaLabel={ariaLabel}\n          iconName=\"close\"\n          onClick={onClick}\n        />\n      </span>\n    );\n  }\n);\n","\n    import './styles.scoped.css';\n    export default {\n  \"block-body-scroll\": \"awsui_block-body-scroll_19d8l_yjxry_97\",\n  \"mobile-bar\": \"awsui_mobile-bar_19d8l_yjxry_101\",\n  \"mobile-bar-breadcrumbs\": \"awsui_mobile-bar-breadcrumbs_19d8l_yjxry_115\",\n  \"mobile-trigger-with-drawers\": \"awsui_mobile-trigger-with-drawers_19d8l_yjxry_122\",\n  \"mobile-toggle\": \"awsui_mobile-toggle_19d8l_yjxry_128\",\n  \"mobile-toggle-with-drawers\": \"awsui_mobile-toggle-with-drawers_19d8l_yjxry_138\"\n};\n  ","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_lm6vo_xcena_97\",\n  \"layout-wrapper\": \"awsui_layout-wrapper_lm6vo_xcena_98\",\n  \"root-no-scroll\": \"awsui_root-no-scroll_lm6vo_xcena_105\",\n  \"layout\": \"awsui_layout_lm6vo_xcena_98\",\n  \"layout-no-scroll\": \"awsui_layout-no-scroll_lm6vo_xcena_116\",\n  \"layout-main\": \"awsui_layout-main_lm6vo_xcena_120\",\n  \"layout-main-scrollable\": \"awsui_layout-main-scrollable_lm6vo_xcena_126\",\n  \"unfocusable\": \"awsui_unfocusable_lm6vo_xcena_131\",\n  \"breadcrumbs-desktop\": \"awsui_breadcrumbs-desktop_lm6vo_xcena_135\",\n  \"content-header-wrapper\": \"awsui_content-header-wrapper_lm6vo_xcena_140\",\n  \"content-wrapper\": \"awsui_content-wrapper_lm6vo_xcena_144\",\n  \"content-overlapped\": \"awsui_content-overlapped_lm6vo_xcena_148\",\n  \"content-extra-top-padding\": \"awsui_content-extra-top-padding_lm6vo_xcena_152\"\n};\n  ","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_1fj9k_1csvr_5\",\n  \"navigation\": \"awsui_navigation_1fj9k_1csvr_9\",\n  \"navigation-toggle\": \"awsui_navigation-toggle_1fj9k_1csvr_13\",\n  \"navigation-close\": \"awsui_navigation-close_1fj9k_1csvr_17\",\n  \"content\": \"awsui_content_1fj9k_1csvr_21\",\n  \"notifications\": \"awsui_notifications_1fj9k_1csvr_25\",\n  \"breadcrumbs\": \"awsui_breadcrumbs_1fj9k_1csvr_29\",\n  \"tools\": \"awsui_tools_1fj9k_1csvr_33\",\n  \"tools-close\": \"awsui_tools-close_1fj9k_1csvr_37\",\n  \"tools-toggle\": \"awsui_tools-toggle_1fj9k_1csvr_41\",\n  \"drawer-closed\": \"awsui_drawer-closed_1fj9k_1csvr_45\",\n  \"mobile-bar\": \"awsui_mobile-bar_1fj9k_1csvr_49\",\n  \"disable-body-scroll-root\": \"awsui_disable-body-scroll-root_1fj9k_1csvr_53\",\n  \"drawers-desktop-triggers-container\": \"awsui_drawers-desktop-triggers-container_1fj9k_1csvr_57\",\n  \"drawers-mobile-triggers-container\": \"awsui_drawers-mobile-triggers-container_1fj9k_1csvr_61\",\n  \"drawers-trigger\": \"awsui_drawers-trigger_1fj9k_1csvr_65\",\n  \"active-drawer\": \"awsui_active-drawer_1fj9k_1csvr_69\",\n  \"active-drawer-close-button\": \"awsui_active-drawer-close-button_1fj9k_1csvr_73\",\n  \"drawers-slider\": \"awsui_drawers-slider_1fj9k_1csvr_77\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useEffect } from 'react';\nimport { ButtonProps } from '../../button/interfaces';\nimport { AppLayoutProps } from '../interfaces';\nimport { DrawerItem } from '../drawer/interfaces';\nimport { AppLayoutButton, togglesConfig } from '../toggles';\nimport styles from './styles.css.js';\nimport sharedStyles from '../styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\ninterface MobileToggleProps {\n  className?: string;\n  ariaLabels?: AppLayoutProps.Labels;\n  type: keyof typeof togglesConfig;\n  disabled?: boolean;\n  onClick: () => void;\n}\nconst MobileToggle = React.forwardRef(\n  ({ className, ariaLabels, type, disabled, onClick }: MobileToggleProps, ref: React.Ref<ButtonProps.Ref>) => {\n    const { TagName, iconName, getLabels } = togglesConfig[type];\n    const { mainLabel, openLabel } = getLabels(ariaLabels);\n\n    return (\n      <TagName\n        className={clsx(styles['mobile-toggle'])}\n        aria-hidden={disabled}\n        aria-label={mainLabel}\n        onClick={e => e.target === e.currentTarget && onClick()}\n      >\n        <AppLayoutButton\n          ref={ref}\n          className={className}\n          iconName={iconName}\n          onClick={onClick}\n          ariaLabel={openLabel}\n          disabled={disabled}\n          ariaExpanded={disabled}\n        />\n      </TagName>\n    );\n  }\n);\ninterface MobileToolbarProps {\n  anyPanelOpen: boolean | undefined;\n  unfocusable: boolean | undefined;\n  toggleRefs: {\n    navigation: React.Ref<ButtonProps.Ref>;\n    tools: React.Ref<ButtonProps.Ref>;\n  };\n  navigationHide: boolean | undefined;\n  toolsHide: boolean | undefined;\n  topOffset?: number;\n  ariaLabels?: AppLayoutProps.Labels;\n  mobileBarRef: React.Ref<HTMLDivElement>;\n  children: React.ReactNode;\n  onNavigationOpen: () => void;\n  onToolsOpen: () => void;\n  drawers?: {\n    items: Array<DrawerItem>;\n    activeDrawerId: string | undefined;\n    onChange: (changeDetail: { activeDrawerId: string | undefined }) => void;\n    ariaLabel?: string;\n  };\n}\n\nexport function MobileToolbar({\n  ariaLabels = {},\n  toggleRefs,\n  topOffset,\n  navigationHide,\n  toolsHide,\n  anyPanelOpen = false,\n  unfocusable,\n  children,\n  onNavigationOpen,\n  onToolsOpen,\n  drawers,\n  mobileBarRef,\n}: MobileToolbarProps) {\n  useEffect(() => {\n    if (anyPanelOpen) {\n      document.body.classList.add(styles['block-body-scroll']);\n      return () => {\n        document.body.classList.remove(styles['block-body-scroll']);\n      };\n    } else {\n      document.body.classList.remove(styles['block-body-scroll']);\n    }\n  }, [anyPanelOpen]);\n  return (\n    <div\n      ref={mobileBarRef}\n      className={clsx(styles['mobile-bar'], unfocusable && sharedStyles.unfocusable)}\n      style={{ top: topOffset }}\n    >\n      {!navigationHide && (\n        <MobileToggle\n          ref={toggleRefs.navigation}\n          type=\"navigation\"\n          className={testutilStyles['navigation-toggle']}\n          ariaLabels={ariaLabels}\n          disabled={anyPanelOpen}\n          onClick={onNavigationOpen}\n        />\n      )}\n      <div className={styles['mobile-bar-breadcrumbs']}>\n        {children && <div className={testutilStyles.breadcrumbs}>{children}</div>}\n      </div>\n      {!toolsHide && !drawers && (\n        <MobileToggle\n          ref={toggleRefs.tools}\n          type=\"tools\"\n          className={testutilStyles['tools-toggle']}\n          ariaLabels={ariaLabels}\n          disabled={anyPanelOpen}\n          onClick={onToolsOpen}\n        />\n      )}\n      {drawers && (\n        <aside\n          aria-label={drawers.ariaLabel}\n          className={clsx(\n            styles['mobile-toggle'],\n            styles['mobile-toggle-with-drawers'],\n            testutilStyles['drawers-mobile-triggers-container']\n          )}\n        >\n          {drawers.items.map((item: DrawerItem, index: number) => (\n            <AppLayoutButton\n              className={clsx(styles['mobile-trigger-with-drawers'], testutilStyles['drawers-trigger'])}\n              key={`drawer-trigger-${index}`}\n              iconName={item.trigger.iconName}\n              iconSvg={item.trigger.iconSvg}\n              ariaLabel={item.ariaLabels?.triggerButton}\n              onClick={() => drawers.onChange({ activeDrawerId: item.id })}\n              ariaExpanded={drawers.activeDrawerId !== undefined}\n            />\n          ))}\n        </aside>\n      )}\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { RefObject, useCallback, useEffect, useRef } from 'react';\nimport { ButtonProps } from '../../button/interfaces';\n\nexport interface FocusControlRefs {\n  toggle: RefObject<ButtonProps.Ref>;\n  close: RefObject<ButtonProps.Ref>;\n}\n\ninterface FocusControlState {\n  refs: FocusControlRefs;\n  setFocus: (force?: boolean) => void;\n  loseFocus: () => void;\n}\n\nexport function useFocusControl(isOpen: boolean, restoreFocus = false): FocusControlState {\n  const refs = {\n    toggle: useRef<ButtonProps.Ref>(null),\n    close: useRef<ButtonProps.Ref>(null),\n  };\n  const previousFocusedElement = useRef<HTMLElement>();\n  const shouldFocus = useRef(false);\n\n  const doFocus = () => {\n    if (!shouldFocus.current) {\n      return;\n    }\n    if (isOpen) {\n      previousFocusedElement.current =\n        document.activeElement !== document.body ? (document.activeElement as HTMLElement) : undefined;\n      refs.close.current?.focus();\n    } else {\n      if (restoreFocus && previousFocusedElement.current && document.contains(previousFocusedElement.current)) {\n        previousFocusedElement.current.focus();\n        previousFocusedElement.current = undefined;\n      } else {\n        refs.toggle.current?.focus();\n      }\n    }\n    shouldFocus.current = false;\n  };\n\n  // We explictly want this effect to run when only `isOpen` changes\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  useEffect(doFocus, [isOpen]);\n\n  const loseFocus = useCallback(() => {\n    previousFocusedElement.current = undefined;\n  }, []);\n\n  return {\n    refs,\n    setFocus: force => {\n      shouldFocus.current = true;\n      if (force && isOpen) {\n        doFocus();\n      }\n    },\n    loseFocus,\n  };\n}\n","var resizeObservers = [];\nexport { resizeObservers };\n","var ResizeObserverBoxOptions;\n(function (ResizeObserverBoxOptions) {\n    ResizeObserverBoxOptions[\"BORDER_BOX\"] = \"border-box\";\n    ResizeObserverBoxOptions[\"CONTENT_BOX\"] = \"content-box\";\n    ResizeObserverBoxOptions[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\nexport { ResizeObserverBoxOptions };\n","var msg = 'ResizeObserver loop completed with undelivered notifications.';\nvar deliverResizeLoopError = function () {\n    var event;\n    if (typeof ErrorEvent === 'function') {\n        event = new ErrorEvent('error', {\n            message: msg\n        });\n    }\n    else {\n        event = document.createEvent('Event');\n        event.initEvent('error', false, false);\n        event.message = msg;\n    }\n    window.dispatchEvent(event);\n};\nexport { deliverResizeLoopError };\n","export var freeze = function (obj) { return Object.freeze(obj); };\n","var trigger;\nvar callbacks = [];\nvar notify = function () { return callbacks.splice(0).forEach(function (cb) { return cb(); }); };\nvar queueMicroTask = function (callback) {\n    if (!trigger) {\n        var toggle_1 = 0;\n        var el_1 = document.createTextNode('');\n        var config = { characterData: true };\n        new MutationObserver(function () { return notify(); }).observe(el_1, config);\n        trigger = function () { el_1.textContent = \"\".concat(toggle_1 ? toggle_1-- : toggle_1++); };\n    }\n    callbacks.push(callback);\n    trigger();\n};\nexport { queueMicroTask };\n","import { freeze } from './utils/freeze';\nvar ResizeObserverSize = (function () {\n    function ResizeObserverSize(inlineSize, blockSize) {\n        this.inlineSize = inlineSize;\n        this.blockSize = blockSize;\n        freeze(this);\n    }\n    return ResizeObserverSize;\n}());\nexport { ResizeObserverSize };\n","import { freeze } from './utils/freeze';\nvar DOMRectReadOnly = (function () {\n    function DOMRectReadOnly(x, y, width, height) {\n        this.x = x;\n        this.y = y;\n        this.width = width;\n        this.height = height;\n        this.top = this.y;\n        this.left = this.x;\n        this.bottom = this.top + this.height;\n        this.right = this.left + this.width;\n        return freeze(this);\n    }\n    DOMRectReadOnly.prototype.toJSON = function () {\n        var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n        return { x: x, y: y, top: top, right: right, bottom: bottom, left: left, width: width, height: height };\n    };\n    DOMRectReadOnly.fromRect = function (rectangle) {\n        return new DOMRectReadOnly(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n    };\n    return DOMRectReadOnly;\n}());\nexport { DOMRectReadOnly };\n","var isSVG = function (target) { return target instanceof SVGElement && 'getBBox' in target; };\nvar isHidden = function (target) {\n    if (isSVG(target)) {\n        var _a = target.getBBox(), width = _a.width, height = _a.height;\n        return !width && !height;\n    }\n    var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n    return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function (obj) {\n    var _a;\n    if (obj instanceof Element) {\n        return true;\n    }\n    var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;\n    return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function (target) {\n    switch (target.tagName) {\n        case 'INPUT':\n            if (target.type !== 'image') {\n                break;\n            }\n        case 'VIDEO':\n        case 'AUDIO':\n        case 'EMBED':\n        case 'OBJECT':\n        case 'CANVAS':\n        case 'IFRAME':\n        case 'IMG':\n            return true;\n    }\n    return false;\n};\nexport { isSVG, isHidden, isElement, isReplacedElement };\n","export var global = typeof window !== 'undefined' ? window : {};\n","import { ResizeObserverBoxOptions } from '../ResizeObserverBoxOptions';\nimport { ResizeObserverSize } from '../ResizeObserverSize';\nimport { DOMRectReadOnly } from '../DOMRectReadOnly';\nimport { isSVG, isHidden } from '../utils/element';\nimport { freeze } from '../utils/freeze';\nimport { global } from '../utils/global';\nvar cache = new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = (/msie|trident/i).test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function (pixel) { return parseFloat(pixel || '0'); };\nvar size = function (inlineSize, blockSize, switchSizes) {\n    if (inlineSize === void 0) { inlineSize = 0; }\n    if (blockSize === void 0) { blockSize = 0; }\n    if (switchSizes === void 0) { switchSizes = false; }\n    return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n    devicePixelContentBoxSize: size(),\n    borderBoxSize: size(),\n    contentBoxSize: size(),\n    contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function (target, forceRecalculation) {\n    if (forceRecalculation === void 0) { forceRecalculation = false; }\n    if (cache.has(target) && !forceRecalculation) {\n        return cache.get(target);\n    }\n    if (isHidden(target)) {\n        cache.set(target, zeroBoxes);\n        return zeroBoxes;\n    }\n    var cs = getComputedStyle(target);\n    var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n    var removePadding = !IE && cs.boxSizing === 'border-box';\n    var switchSizes = verticalRegexp.test(cs.writingMode || '');\n    var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || '');\n    var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || '');\n    var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n    var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n    var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n    var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n    var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n    var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n    var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n    var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n    var horizontalPadding = paddingLeft + paddingRight;\n    var verticalPadding = paddingTop + paddingBottom;\n    var horizontalBorderArea = borderLeft + borderRight;\n    var verticalBorderArea = borderTop + borderBottom;\n    var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n    var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n    var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n    var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n    var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n    var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n    var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n    var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n    var boxes = freeze({\n        devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n        borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n        contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n        contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n    });\n    cache.set(target, boxes);\n    return boxes;\n};\nvar calculateBoxSize = function (target, observedBox, forceRecalculation) {\n    var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n    switch (observedBox) {\n        case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n            return devicePixelContentBoxSize;\n        case ResizeObserverBoxOptions.BORDER_BOX:\n            return borderBoxSize;\n        default:\n            return contentBoxSize;\n    }\n};\nexport { calculateBoxSize, calculateBoxSizes };\n","import { calculateBoxSizes } from './algorithms/calculateBoxSize';\nimport { freeze } from './utils/freeze';\nvar ResizeObserverEntry = (function () {\n    function ResizeObserverEntry(target) {\n        var boxes = calculateBoxSizes(target);\n        this.target = target;\n        this.contentRect = boxes.contentRect;\n        this.borderBoxSize = freeze([boxes.borderBoxSize]);\n        this.contentBoxSize = freeze([boxes.contentBoxSize]);\n        this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n    }\n    return ResizeObserverEntry;\n}());\nexport { ResizeObserverEntry };\n","import { isHidden } from '../utils/element';\nvar calculateDepthForNode = function (node) {\n    if (isHidden(node)) {\n        return Infinity;\n    }\n    var depth = 0;\n    var parent = node.parentNode;\n    while (parent) {\n        depth += 1;\n        parent = parent.parentNode;\n    }\n    return depth;\n};\nexport { calculateDepthForNode };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { ResizeObserverEntry } from '../ResizeObserverEntry';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nimport { calculateBoxSize } from './calculateBoxSize';\nvar broadcastActiveObservations = function () {\n    var shallowestDepth = Infinity;\n    var callbacks = [];\n    resizeObservers.forEach(function processObserver(ro) {\n        if (ro.activeTargets.length === 0) {\n            return;\n        }\n        var entries = [];\n        ro.activeTargets.forEach(function processTarget(ot) {\n            var entry = new ResizeObserverEntry(ot.target);\n            var targetDepth = calculateDepthForNode(ot.target);\n            entries.push(entry);\n            ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n            if (targetDepth < shallowestDepth) {\n                shallowestDepth = targetDepth;\n            }\n        });\n        callbacks.push(function resizeObserverCallback() {\n            ro.callback.call(ro.observer, entries, ro.observer);\n        });\n        ro.activeTargets.splice(0, ro.activeTargets.length);\n    });\n    for (var _i = 0, callbacks_1 = callbacks; _i < callbacks_1.length; _i++) {\n        var callback = callbacks_1[_i];\n        callback();\n    }\n    return shallowestDepth;\n};\nexport { broadcastActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nimport { calculateDepthForNode } from './calculateDepthForNode';\nvar gatherActiveObservationsAtDepth = function (depth) {\n    resizeObservers.forEach(function processObserver(ro) {\n        ro.activeTargets.splice(0, ro.activeTargets.length);\n        ro.skippedTargets.splice(0, ro.skippedTargets.length);\n        ro.observationTargets.forEach(function processTarget(ot) {\n            if (ot.isActive()) {\n                if (calculateDepthForNode(ot.target) > depth) {\n                    ro.activeTargets.push(ot);\n                }\n                else {\n                    ro.skippedTargets.push(ot);\n                }\n            }\n        });\n    });\n};\nexport { gatherActiveObservationsAtDepth };\n","import { hasActiveObservations } from '../algorithms/hasActiveObservations';\nimport { hasSkippedObservations } from '../algorithms/hasSkippedObservations';\nimport { deliverResizeLoopError } from '../algorithms/deliverResizeLoopError';\nimport { broadcastActiveObservations } from '../algorithms/broadcastActiveObservations';\nimport { gatherActiveObservationsAtDepth } from '../algorithms/gatherActiveObservationsAtDepth';\nvar process = function () {\n    var depth = 0;\n    gatherActiveObservationsAtDepth(depth);\n    while (hasActiveObservations()) {\n        depth = broadcastActiveObservations();\n        gatherActiveObservationsAtDepth(depth);\n    }\n    if (hasSkippedObservations()) {\n        deliverResizeLoopError();\n    }\n    return depth > 0;\n};\nexport { process };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasActiveObservations = function () {\n    return resizeObservers.some(function (ro) { return ro.activeTargets.length > 0; });\n};\nexport { hasActiveObservations };\n","import { resizeObservers } from '../utils/resizeObservers';\nvar hasSkippedObservations = function () {\n    return resizeObservers.some(function (ro) { return ro.skippedTargets.length > 0; });\n};\nexport { hasSkippedObservations };\n","import { process } from './process';\nimport { global } from './global';\nimport { queueResizeObserver } from './queueResizeObserver';\nvar watching = 0;\nvar isWatching = function () { return !!watching; };\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n    'resize',\n    'load',\n    'transitionend',\n    'animationend',\n    'animationstart',\n    'animationiteration',\n    'keyup',\n    'keydown',\n    'mouseup',\n    'mousedown',\n    'mouseover',\n    'mouseout',\n    'blur',\n    'focus'\n];\nvar time = function (timeout) {\n    if (timeout === void 0) { timeout = 0; }\n    return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = (function () {\n    function Scheduler() {\n        var _this = this;\n        this.stopped = true;\n        this.listener = function () { return _this.schedule(); };\n    }\n    Scheduler.prototype.run = function (timeout) {\n        var _this = this;\n        if (timeout === void 0) { timeout = CATCH_PERIOD; }\n        if (scheduled) {\n            return;\n        }\n        scheduled = true;\n        var until = time(timeout);\n        queueResizeObserver(function () {\n            var elementsHaveResized = false;\n            try {\n                elementsHaveResized = process();\n            }\n            finally {\n                scheduled = false;\n                timeout = until - time();\n                if (!isWatching()) {\n                    return;\n                }\n                if (elementsHaveResized) {\n                    _this.run(1000);\n                }\n                else if (timeout > 0) {\n                    _this.run(timeout);\n                }\n                else {\n                    _this.start();\n                }\n            }\n        });\n    };\n    Scheduler.prototype.schedule = function () {\n        this.stop();\n        this.run();\n    };\n    Scheduler.prototype.observe = function () {\n        var _this = this;\n        var cb = function () { return _this.observer && _this.observer.observe(document.body, observerConfig); };\n        document.body ? cb() : global.addEventListener('DOMContentLoaded', cb);\n    };\n    Scheduler.prototype.start = function () {\n        var _this = this;\n        if (this.stopped) {\n            this.stopped = false;\n            this.observer = new MutationObserver(this.listener);\n            this.observe();\n            events.forEach(function (name) { return global.addEventListener(name, _this.listener, true); });\n        }\n    };\n    Scheduler.prototype.stop = function () {\n        var _this = this;\n        if (!this.stopped) {\n            this.observer && this.observer.disconnect();\n            events.forEach(function (name) { return global.removeEventListener(name, _this.listener, true); });\n            this.stopped = true;\n        }\n    };\n    return Scheduler;\n}());\nvar scheduler = new Scheduler();\nvar updateCount = function (n) {\n    !watching && n > 0 && scheduler.start();\n    watching += n;\n    !watching && scheduler.stop();\n};\nexport { scheduler, updateCount };\n","import { queueMicroTask } from './queueMicroTask';\nvar queueResizeObserver = function (cb) {\n    queueMicroTask(function ResizeObserver() {\n        requestAnimationFrame(cb);\n    });\n};\nexport { queueResizeObserver };\n","import { ResizeObserverBoxOptions } from './ResizeObserverBoxOptions';\nimport { calculateBoxSize } from './algorithms/calculateBoxSize';\nimport { isSVG, isReplacedElement } from './utils/element';\nvar skipNotifyOnElement = function (target) {\n    return !isSVG(target)\n        && !isReplacedElement(target)\n        && getComputedStyle(target).display === 'inline';\n};\nvar ResizeObservation = (function () {\n    function ResizeObservation(target, observedBox) {\n        this.target = target;\n        this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n        this.lastReportedSize = {\n            inlineSize: 0,\n            blockSize: 0\n        };\n    }\n    ResizeObservation.prototype.isActive = function () {\n        var size = calculateBoxSize(this.target, this.observedBox, true);\n        if (skipNotifyOnElement(this.target)) {\n            this.lastReportedSize = size;\n        }\n        if (this.lastReportedSize.inlineSize !== size.inlineSize\n            || this.lastReportedSize.blockSize !== size.blockSize) {\n            return true;\n        }\n        return false;\n    };\n    return ResizeObservation;\n}());\nexport { ResizeObservation };\n","var ResizeObserverDetail = (function () {\n    function ResizeObserverDetail(resizeObserver, callback) {\n        this.activeTargets = [];\n        this.skippedTargets = [];\n        this.observationTargets = [];\n        this.observer = resizeObserver;\n        this.callback = callback;\n    }\n    return ResizeObserverDetail;\n}());\nexport { ResizeObserverDetail };\n","import { scheduler, updateCount } from './utils/scheduler';\nimport { ResizeObservation } from './ResizeObservation';\nimport { ResizeObserverDetail } from './ResizeObserverDetail';\nimport { resizeObservers } from './utils/resizeObservers';\nvar observerMap = new WeakMap();\nvar getObservationIndex = function (observationTargets, target) {\n    for (var i = 0; i < observationTargets.length; i += 1) {\n        if (observationTargets[i].target === target) {\n            return i;\n        }\n    }\n    return -1;\n};\nvar ResizeObserverController = (function () {\n    function ResizeObserverController() {\n    }\n    ResizeObserverController.connect = function (resizeObserver, callback) {\n        var detail = new ResizeObserverDetail(resizeObserver, callback);\n        observerMap.set(resizeObserver, detail);\n    };\n    ResizeObserverController.observe = function (resizeObserver, target, options) {\n        var detail = observerMap.get(resizeObserver);\n        var firstObservation = detail.observationTargets.length === 0;\n        if (getObservationIndex(detail.observationTargets, target) < 0) {\n            firstObservation && resizeObservers.push(detail);\n            detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n            updateCount(1);\n            scheduler.schedule();\n        }\n    };\n    ResizeObserverController.unobserve = function (resizeObserver, target) {\n        var detail = observerMap.get(resizeObserver);\n        var index = getObservationIndex(detail.observationTargets, target);\n        var lastObservation = detail.observationTargets.length === 1;\n        if (index >= 0) {\n            lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n            detail.observationTargets.splice(index, 1);\n            updateCount(-1);\n        }\n    };\n    ResizeObserverController.disconnect = function (resizeObserver) {\n        var _this = this;\n        var detail = observerMap.get(resizeObserver);\n        detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); });\n        detail.activeTargets.splice(0, detail.activeTargets.length);\n    };\n    return ResizeObserverController;\n}());\nexport { ResizeObserverController };\n","import { ResizeObserverController } from './ResizeObserverController';\nimport { isElement } from './utils/element';\nvar ResizeObserver = (function () {\n    function ResizeObserver(callback) {\n        if (arguments.length === 0) {\n            throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n        }\n        if (typeof callback !== 'function') {\n            throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n        }\n        ResizeObserverController.connect(this, callback);\n    }\n    ResizeObserver.prototype.observe = function (target, options) {\n        if (arguments.length === 0) {\n            throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n        }\n        if (!isElement(target)) {\n            throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n        }\n        ResizeObserverController.observe(this, target, options);\n    };\n    ResizeObserver.prototype.unobserve = function (target) {\n        if (arguments.length === 0) {\n            throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n        }\n        if (!isElement(target)) {\n            throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n        }\n        ResizeObserverController.unobserve(this, target);\n    };\n    ResizeObserver.prototype.disconnect = function () {\n        ResizeObserverController.disconnect(this);\n    };\n    ResizeObserver.toString = function () {\n        return 'function ResizeObserver () { [polyfill code] }';\n    };\n    return ResizeObserver;\n}());\nexport { ResizeObserver };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ResizeObserver, ResizeObserverEntry } from '@juggle/resize-observer';\nimport React, { useEffect, useLayoutEffect } from 'react';\nimport { useStableEventHandler } from '../use-stable-event-handler';\nimport { ContainerQueryEntry } from './interfaces';\n\ntype ElementReference = (() => Element | null) | React.RefObject<Element>;\n\n/**\n * Attaches resize-observer to the referenced element.\n *\n * Examples:\n *     // With React reference\n *     const ref = useRef(null)\n *     useResizeObserver(ref, (entry) => setState(getWidth(entry)))\n *\n *     // With ID reference\n *     const getElement = useCallback(() => document.getElementById(id), [id])\n *     useResizeObserver(getElement, (entry) => setState(getWidth(entry)))\n *\n * @param elementRef React reference or memoized getter for the target element\n * @param onObserve Function to fire when observation occurs\n */\nexport function useResizeObserver(elementRef: ElementReference, onObserve: (entry: ContainerQueryEntry) => void) {\n  const stableOnObserve = useStableEventHandler(onObserve);\n\n  // This effect provides a synchronous update required to prevent flakiness when initial state and first observed state are different.\n  // Can potentially conflict with React concurrent mode: https://17.reactjs.org/docs/concurrent-mode-intro.html.\n  // A possible solution would be to make consumers not render any content until the first (asynchronous) observation is available.\n  useLayoutEffect(\n    () => {\n      const element = typeof elementRef === 'function' ? elementRef() : elementRef?.current;\n      if (element) {\n        onObserve(convertResizeObserverEntry(new ResizeObserverEntry(element)));\n      }\n    },\n    // This effect is only needed for the first render to provide a synchronous update.\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    []\n  );\n\n  useEffect(() => {\n    const element = typeof elementRef === 'function' ? elementRef() : elementRef?.current;\n    if (element) {\n      let connected = true;\n      const observer = new ResizeObserver(entries => {\n        // Prevent observe notifications on already unmounted component.\n        if (connected) {\n          stableOnObserve(convertResizeObserverEntry(entries[0]));\n        }\n      });\n      observer.observe(element);\n      return () => {\n        connected = false;\n        observer.disconnect();\n      };\n    }\n  }, [elementRef, stableOnObserve]);\n}\n\nfunction convertResizeObserverEntry(entry: ResizeObserverEntry): ContainerQueryEntry {\n  return {\n    target: entry.target,\n    contentBoxWidth: entry.contentBoxSize[0].inlineSize,\n    contentBoxHeight: entry.contentBoxSize[0].blockSize,\n    borderBoxWidth: entry.borderBoxSize[0].inlineSize,\n    borderBoxHeight: entry.borderBoxSize[0].blockSize,\n    width: entry.contentBoxSize[0].inlineSize,\n    height: entry.contentBoxSize[0].blockSize,\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useResizeObserver } from '../../internal/hooks/container-queries';\nimport { useCallback, useState } from 'react';\n\nexport function useObservedElement(selector: string) {\n  const getElement = useCallback(() => {\n    return document.querySelector(selector);\n  }, [selector]);\n\n  const [height, setHeight] = useState(0);\n\n  useResizeObserver(getElement, entry => setHeight(entry.borderBoxHeight));\n\n  return height;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useContext, createContext } from 'react';\n\nexport interface AppLayoutContextProps {\n  stickyOffsetBottom: number;\n  stickyOffsetTop: number;\n  mobileBarHeight?: number;\n  setHasStickyBackground?: (hasBackground: boolean) => void;\n}\n\nexport const AppLayoutContext = createContext<AppLayoutContextProps>({\n  stickyOffsetTop: 0,\n  stickyOffsetBottom: 0,\n  mobileBarHeight: 0,\n});\n\nexport function useAppLayoutContext() {\n  return useContext(AppLayoutContext);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef, useState, useCallback } from 'react';\nimport { ContainerQueryEntry } from './interfaces';\nimport { useResizeObserver } from './use-resize-observer';\n\n/**\n * Attaches resize-observer to the referenced element and keeps last observation in state.\n * The hook allows to limit the amount of re-renders to only when the observed value changes.\n *\n * Examples:\n *    // Switching display mode under a given condition (only re-renders when mode changes):\n *    const [smallMode, ref] = useContainerQuery(entry => entry.contentBoxHeight <= smallModeHeight, [smallModeHeight]);\n *\n *    // Obtain observer entity (re-renders with each observation):\n *    const [entry, ref] = useContainerQuery(entry => entry);\n *\n *    // Using prevState to avoid unnecessary re-renders:\n *    const [value, ref] = useContainerQuery((entry, prevValue) => shouldUpdate(entry) ? getValue(entry) : prevValue);\n *\n * @param mapFn Function to convert ContainerQueryEntry to a custom type S\n * @param deps Dependency list to indicate when the mapFn changes\n * @returns A tuple of observation value and a reference to be attached to the target element.\n */\nexport function useContainerQuery<S>(\n  mapFn: (entry: ContainerQueryEntry, prev: null | S) => S,\n  deps: React.DependencyList = []\n): [null | S, React.Ref<any>] {\n  const elementRef = useRef<HTMLElement>(null);\n  const [state, setState] = useState<S | null>(null);\n\n  // Update getElement when deps change to trigger new observation.\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const getElement = useCallback(() => elementRef.current, deps);\n\n  useResizeObserver(getElement, entry => setState(prevState => mapFn(entry, prevState)));\n\n  return [state, elementRef];\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function applyDisplayName<T>(component: T, displayName: string): void {\n  (component as any).displayName = displayName;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useContext, createContext } from 'react';\nimport { SplitPanelFocusControlRefs } from '../../app-layout/utils/use-split-panel-focus-control';\n\nexport interface SplitPanelSideToggleProps {\n  displayed: boolean;\n  ariaLabel: string | undefined;\n}\n\nexport interface SplitPanelContextProps {\n  topOffset: number;\n  bottomOffset: number;\n  leftOffset: number;\n  rightOffset: number;\n  position: 'side' | 'bottom';\n  size: number;\n  getMaxWidth: () => number;\n  getMaxHeight: () => number;\n  disableContentPaddings?: boolean;\n  contentWidthStyles?: React.CSSProperties;\n  contentWrapperPaddings?: {\n    closedNav: boolean;\n    closedTools: boolean;\n  };\n  isOpen?: boolean;\n  isMobile: boolean;\n  isForcedPosition: boolean;\n  onResize: (detail: { size: number }) => void;\n  onToggle: () => void;\n  onPreferencesChange: (detail: { position: 'side' | 'bottom' }) => void;\n  reportSize: (pixels: number) => void;\n  reportHeaderHeight: (pixels: number) => void;\n  setSplitPanelToggle: (config: SplitPanelSideToggleProps) => void;\n  refs: SplitPanelFocusControlRefs;\n}\n\nconst SplitPanelContext = createContext<SplitPanelContextProps | null>(null);\n\nexport const SplitPanelContextProvider = SplitPanelContext.Provider;\n\nexport function useSplitPanelContext() {\n  const ctx = useContext(SplitPanelContext);\n  if (!ctx) {\n    throw new Error('Split panel can only be used inside app layout');\n  }\n  return ctx;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * The page height where the page is considered constrained.\n */\nexport const CONSTRAINED_PAGE_HEIGHT = 400;\n\n/**\n * Based on approximate height of breadcrumb, table header, and the first table row\n */\nexport const MAIN_PANEL_MIN_HEIGHT = 250;\n\n/**\n * Based on approximate height of app bar on comfortable mode on mobile.\n */\nexport const CONSTRAINED_MAIN_PANEL_MIN_HEIGHT = 40;\n\n/**\n * Estimate a default split panel size for the first render based on the document size.\n */\nexport function getSplitPanelDefaultSize(position: 'side' | 'bottom') {\n  if (typeof document === 'undefined') {\n    return 0; // render the split panel in its minimum possible size\n  }\n  return position === 'side' ? document.documentElement.clientWidth / 3 : document.documentElement.clientHeight / 2;\n}\n\nexport function getLimitedValue(min: number, value: number, max: number) {\n  if (min > max) {\n    return min;\n  }\n  if (value < min) {\n    return min;\n  }\n  if (value > max) {\n    return max;\n  }\n  return value;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useComponentMetrics } from '@awsui/component-toolkit/internal';\nimport { PACKAGE_SOURCE, PACKAGE_VERSION, THEME } from '../../environment';\nimport { useVisualRefresh } from '../use-visual-mode';\n\nexport function useTelemetry(componentName: string) {\n  const theme = useVisualRefresh() ? 'vr' : THEME;\n  useComponentMetrics(componentName, { packageSource: PACKAGE_SOURCE, packageVersion: PACKAGE_VERSION, theme });\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useEffect } from 'react';\nimport { Metrics } from './metrics/metrics';\nexport function useComponentMetrics(componentName, _a) {\n    var packageSource = _a.packageSource, packageVersion = _a.packageVersion, theme = _a.theme;\n    useEffect(function () {\n        var metrics = new Metrics(packageSource, packageVersion);\n        metrics.initMetrics(theme);\n        if (typeof window !== 'undefined') {\n            metrics.sendMetricOnce('awsui-viewport-width', window.innerWidth || 0);\n            metrics.sendMetricOnce('awsui-viewport-height', window.innerHeight || 0);\n        }\n        metrics.logComponentLoaded();\n        metrics.logComponentUsed(componentName.toLowerCase());\n        // Components do not change the name dynamically. Explicit empty array to prevent accidental double metrics\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// When updating the list of key codes, don't forget\n// to modify corresponding list in test-utils\n// to avoid failing unit tests\nexport enum KeyCode {\n  pageUp = 33,\n  pageDown = 34,\n  end = 35,\n  home = 36,\n  backspace = 8,\n  space = 32,\n  down = 40,\n  left = 37,\n  right = 39,\n  up = 38,\n  escape = 27,\n  enter = 13,\n  tab = 9,\n  shift = 16,\n  control = 17,\n  alt = 18,\n  meta = 91,\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useEffect } from 'react';\nimport { KeyCode } from '../../keycode';\n\nexport function isModifierKey(event: KeyboardEvent) {\n  // we do not want to highlight focused element\n  // when special keys are pressed\n  return [KeyCode.shift, KeyCode.alt, KeyCode.control, KeyCode.meta].indexOf(event.keyCode) > -1;\n}\n\nfunction setIsKeyboard(active: boolean) {\n  if (active) {\n    document.body.setAttribute('data-awsui-focus-visible', 'true');\n  } else {\n    document.body.removeAttribute('data-awsui-focus-visible');\n  }\n}\n\nfunction handleMousedown() {\n  return setIsKeyboard(false);\n}\n\nfunction handleKeydown(event: KeyboardEvent) {\n  if (!isModifierKey(event)) {\n    setIsKeyboard(true);\n  }\n}\n\nlet componentsCount = 0;\n\nfunction addListeners() {\n  document.addEventListener('mousedown', handleMousedown);\n  document.addEventListener('keydown', handleKeydown);\n}\n\nfunction removeListeners() {\n  document.removeEventListener('mousedown', handleMousedown);\n  document.removeEventListener('keydown', handleKeydown);\n}\n\nexport default function useFocusVisible() {\n  useEffect(() => {\n    if (componentsCount === 0) {\n      addListeners();\n    }\n    componentsCount++;\n    return () => {\n      componentsCount--;\n      if (componentsCount === 0) {\n        removeListeners();\n      }\n    };\n  }, []);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { MutableRefObject } from 'react';\nimport { useComponentMetadata } from '@awsui/component-toolkit/internal';\nimport { useTelemetry } from '../use-telemetry';\nimport { PACKAGE_VERSION } from '../../environment';\nimport useFocusVisible from '../focus-visible';\n\nexport interface InternalBaseComponentProps {\n  __internalRootRef?: MutableRefObject<any> | null;\n}\n\n/**\n * This hook is used for components which are exported to customers. The returned __internalRootRef needs to be\n * attached to the (internal) component's root DOM node. The hook takes care of attaching the metadata to this\n * root DOM node and emits the telemetry for this component.\n */\nexport default function useBaseComponent<T = any>(componentName: string) {\n  useTelemetry(componentName);\n  useFocusVisible();\n  const elementRef = useComponentMetadata<T>(componentName, PACKAGE_VERSION);\n  return { __internalRootRef: elementRef };\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"content-wrapper\": \"awsui_content-wrapper_zycdx_vcyhj_97\",\n  \"content-wrapper-mobile\": \"awsui_content-wrapper-mobile_zycdx_vcyhj_101\",\n  \"content-type-dashboard\": \"awsui_content-type-dashboard_zycdx_vcyhj_106\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport styles from './styles.css.js';\nimport { AppLayoutProps } from '../interfaces';\n\nexport interface ContentWrapperProps {\n  className?: string;\n  contentType: AppLayoutProps.ContentType;\n  children?: React.ReactNode;\n  isMobile: boolean;\n  navigationPadding: boolean;\n  toolsPadding: boolean;\n  disablePaddings?: boolean;\n  contentWidthStyles?: React.CSSProperties;\n}\n\nconst ContentWrapper = React.forwardRef(\n  (\n    {\n      className,\n      contentType,\n      children,\n      toolsPadding,\n      disablePaddings,\n      navigationPadding,\n      isMobile,\n      contentWidthStyles,\n    }: ContentWrapperProps,\n    ref: React.Ref<HTMLDivElement>\n  ) => {\n    if (disablePaddings) {\n      return (\n        <div className={className} ref={ref}>\n          {children}\n        </div>\n      );\n    }\n    return (\n      <div\n        ref={ref}\n        className={clsx(\n          styles['content-wrapper'],\n          !navigationPadding && styles['content-wrapper-no-navigation-padding'],\n          !toolsPadding && styles['content-wrapper-no-tools-padding'],\n          isMobile && styles['content-wrapper-mobile']\n        )}\n      >\n        <div style={contentWidthStyles} className={clsx(className, styles[`content-type-${contentType}`])}>\n          {children}\n        </div>\n      </div>\n    );\n  }\n);\n\nexport default ContentWrapper;\n","\n    import './styles.scoped.css';\n    export default {\n  \"toggle\": \"awsui_toggle_1uo6m_zen78_97\",\n  \"drawer-triggers\": \"awsui_drawer-triggers_1uo6m_zen78_102\",\n  \"drawer\": \"awsui_drawer_1uo6m_zen78_102\",\n  \"drawer-mobile\": \"awsui_drawer-mobile_1uo6m_zen78_112\",\n  \"drawer-closed\": \"awsui_drawer-closed_1uo6m_zen78_115\",\n  \"drawer-content\": \"awsui_drawer-content_1uo6m_zen78_123\",\n  \"non-interactive\": \"awsui_non-interactive_1uo6m_zen78_141\",\n  \"trigger\": \"awsui_trigger_1uo6m_zen78_149\",\n  \"trigger-drawer\": \"awsui_trigger-drawer_1uo6m_zen78_160\",\n  \"selected\": \"awsui_selected_1uo6m_zen78_160\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useRef } from 'react';\nimport { AppLayoutButton, CloseButton, togglesConfig } from '../toggles';\n\nimport testutilStyles from '../test-classes/styles.css.js';\nimport styles from './styles.css.js';\nimport { DesktopDrawerProps, DrawerTriggersBarProps, DrawerItem, DrawerItemAriaLabels } from './interfaces';\n\n// We are using two landmarks per drawer, i.e. two NAVs and two ASIDEs, because of several\n// known bugs in NVDA that cause focus changes within a container to sometimes not be\n// announced. As a result, we use one region for the open button and one region for the\n// actual drawer content, always hiding the other one when it's not visible.\n// An alternative solution to follow a more classic implementation here to only have one\n// button that triggers the opening/closing of the drawer also did not work due to another\n// series of bugs in NVDA (together with Firefox) which prevent the changed expanded state\n// from being announced.\n// Even with this workaround in place, the announcement of the close button when opening a\n// panel in NVDA is not working correctly. The suspected root cause is one of the bugs below\n// as well.\n// Relevant tickets:\n// * https://github.com/nvaccess/nvda/issues/6606\n// * https://github.com/nvaccess/nvda/issues/5825\n// * https://github.com/nvaccess/nvda/issues/5247\n// * https://github.com/nvaccess/nvda/pull/8869 (reverted PR that was going to fix it)\nexport const Drawer = React.forwardRef(\n  (\n    {\n      contentClassName,\n      toggleClassName,\n      closeClassName,\n      width,\n      type,\n      toggleRefs,\n      topOffset,\n      bottomOffset,\n      ariaLabels,\n      drawersAriaLabels,\n      children,\n      isOpen,\n      isMobile,\n      onToggle,\n      onClick,\n      onLoseFocus,\n      drawers,\n      resizeHandle,\n    }: DesktopDrawerProps,\n    ref: React.Ref<HTMLDivElement>\n  ) => {\n    const openButtonWrapperRef = useRef<HTMLElement | null>(null);\n    const { TagName, iconName, getLabels } = togglesConfig[type];\n    const { mainLabel, closeLabel, openLabel } = getLabels(ariaLabels);\n    const drawerContentWidthOpen = isMobile ? undefined : width;\n    const drawerContentWidth = isOpen ? drawerContentWidthOpen : undefined;\n\n    const getDrawersLabels = (labels: DrawerItemAriaLabels = {}) => ({\n      drawerMainLabel: labels?.content,\n      drawerOpenLabel: labels?.triggerButton,\n      drawerCloseLabel: labels?.closeButton,\n    });\n    const { drawerMainLabel, drawerCloseLabel } = getDrawersLabels(drawersAriaLabels);\n\n    const regularOpenButton = (\n      <TagName ref={openButtonWrapperRef} aria-label={mainLabel} className={styles.toggle} aria-hidden={isOpen}>\n        <AppLayoutButton\n          ref={toggleRefs.toggle}\n          className={toggleClassName}\n          iconName={iconName}\n          ariaLabel={openLabel}\n          onClick={() => onToggle(true)}\n          ariaExpanded={false}\n        />\n      </TagName>\n    );\n\n    return (\n      <div\n        ref={ref}\n        className={clsx(styles.drawer, {\n          [styles['drawer-closed']]: !isOpen,\n          [testutilStyles['drawer-closed']]: !isOpen,\n          [styles['drawer-mobile']]: isMobile,\n        })}\n        style={{ width: drawerContentWidth }}\n        onBlur={\n          onLoseFocus\n            ? e => {\n                if (!e.relatedTarget || !e.currentTarget.contains(e.relatedTarget)) {\n                  onLoseFocus(e);\n                }\n              }\n            : undefined\n        }\n        onClick={event => {\n          if (onClick) {\n            onClick(event);\n          }\n          if (!isOpen) {\n            // to prevent calling onToggle from the drawer when it's called from the toggle button\n            if (\n              openButtonWrapperRef.current === event.target ||\n              !openButtonWrapperRef.current?.contains(event.target as Node)\n            ) {\n              onToggle(true);\n            }\n          }\n        }}\n      >\n        <div\n          style={{ width: drawerContentWidth, top: topOffset, bottom: bottomOffset }}\n          className={clsx(styles['drawer-content'], contentClassName)}\n        >\n          {!isMobile && regularOpenButton}\n          {resizeHandle}\n          <TagName aria-label={drawers ? drawerMainLabel : mainLabel} aria-hidden={!isOpen}>\n            <CloseButton\n              ref={toggleRefs.close}\n              className={closeClassName}\n              ariaLabel={drawers ? drawerCloseLabel : closeLabel}\n              onClick={() => {\n                onToggle(false);\n                drawers?.onChange({ activeDrawerId: undefined });\n              }}\n            />\n            {children}\n          </TagName>\n        </div>\n      </div>\n    );\n  }\n);\n\nexport function DrawerTriggersBar({\n  isMobile,\n  topOffset,\n  bottomOffset,\n  drawers,\n  contentClassName,\n  toggleClassName,\n}: DrawerTriggersBarProps) {\n  return (\n    <div\n      className={clsx(styles.drawer, styles['drawer-closed'], testutilStyles['drawer-closed'], {\n        [styles['drawer-mobile']]: isMobile,\n      })}\n    >\n      <div\n        style={{ top: topOffset, bottom: bottomOffset }}\n        className={clsx(styles['drawer-content'], styles['non-interactive'])}\n      >\n        {!isMobile && (\n          <aside aria-label={drawers?.ariaLabel} className={clsx(styles['drawer-triggers'], contentClassName)}>\n            {drawers?.items?.map((item: DrawerItem, index: number) => (\n              <AppLayoutButton\n                className={clsx(\n                  toggleClassName,\n                  styles.trigger,\n                  styles['trigger-drawer'],\n                  drawers.activeDrawerId === item.id && styles.selected\n                )}\n                key={`drawer-trigger-${index}`}\n                iconName={item.trigger.iconName}\n                iconSvg={item.trigger.iconSvg}\n                ariaLabel={item.ariaLabels?.triggerButton}\n                onClick={() =>\n                  drawers.onChange({ activeDrawerId: item.id !== drawers.activeDrawerId ? item.id : undefined })\n                }\n                ariaExpanded={drawers.activeDrawerId !== undefined}\n              />\n            ))}\n          </aside>\n        )}\n      </div>\n    </div>\n  );\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"drawer\": \"awsui_drawer_1r9lg_1tmlb_189\",\n  \"refresh\": \"awsui_refresh_1r9lg_1tmlb_189\",\n  \"animating\": \"awsui_animating_1r9lg_1tmlb_203\",\n  \"preference-icon--layout-border\": \"awsui_preference-icon--layout-border_1r9lg_1tmlb_226\",\n  \"preference-icon--layout-background\": \"awsui_preference-icon--layout-background_1r9lg_1tmlb_230\",\n  \"preference-icon--layout-header\": \"awsui_preference-icon--layout-header_1r9lg_1tmlb_233\",\n  \"preference-icon--border\": \"awsui_preference-icon--border_1r9lg_1tmlb_236\",\n  \"preference-icon--primary-button\": \"awsui_preference-icon--primary-button_1r9lg_1tmlb_240\",\n  \"preference-icon--secondary\": \"awsui_preference-icon--secondary_1r9lg_1tmlb_243\",\n  \"preference-icon--disabled-element\": \"awsui_preference-icon--disabled-element_1r9lg_1tmlb_246\",\n  \"preference-icon--separator\": \"awsui_preference-icon--separator_1r9lg_1tmlb_249\",\n  \"preference-icon--focus-text\": \"awsui_preference-icon--focus-text_1r9lg_1tmlb_252\",\n  \"preference-icon-refresh--layout-top\": \"awsui_preference-icon-refresh--layout-top_1r9lg_1tmlb_256\",\n  \"preference-icon-refresh--layout-main\": \"awsui_preference-icon-refresh--layout-main_1r9lg_1tmlb_259\",\n  \"preference-icon-refresh--primary\": \"awsui_preference-icon-refresh--primary_1r9lg_1tmlb_262\",\n  \"preference-icon-refresh--disabled\": \"awsui_preference-icon-refresh--disabled_1r9lg_1tmlb_265\",\n  \"preference-icon-refresh--column-header\": \"awsui_preference-icon-refresh--column-header_1r9lg_1tmlb_268\",\n  \"preference-icon-refresh--window\": \"awsui_preference-icon-refresh--window_1r9lg_1tmlb_271\",\n  \"preference-icon-refresh--secondary\": \"awsui_preference-icon-refresh--secondary_1r9lg_1tmlb_275\",\n  \"preference-icon-refresh--default\": \"awsui_preference-icon-refresh--default_1r9lg_1tmlb_278\",\n  \"preference-icon-refresh--separator\": \"awsui_preference-icon-refresh--separator_1r9lg_1tmlb_281\",\n  \"preference-icon-refresh--input-default\": \"awsui_preference-icon-refresh--input-default_1r9lg_1tmlb_284\",\n  \"preference-icon-refresh--heading\": \"awsui_preference-icon-refresh--heading_1r9lg_1tmlb_287\",\n  \"resize-active\": \"awsui_resize-active_1r9lg_1tmlb_292\",\n  \"resize-side\": \"awsui_resize-side_1r9lg_1tmlb_298\",\n  \"resize-bottom\": \"awsui_resize-bottom_1r9lg_1tmlb_301\",\n  \"root\": \"awsui_root_1r9lg_1tmlb_306\",\n  \"preferences-button\": \"awsui_preferences-button_1r9lg_1tmlb_319\",\n  \"close-button\": \"awsui_close-button_1r9lg_1tmlb_323\",\n  \"drawer-closed\": \"awsui_drawer-closed_1r9lg_1tmlb_334\",\n  \"drawer-content-side\": \"awsui_drawer-content-side_1r9lg_1tmlb_339\",\n  \"drawer-content-bottom\": \"awsui_drawer-content-bottom_1r9lg_1tmlb_359\",\n  \"position-bottom\": \"awsui_position-bottom_1r9lg_1tmlb_368\",\n  \"position-side\": \"awsui_position-side_1r9lg_1tmlb_395\",\n  \"slider\": \"awsui_slider_1r9lg_1tmlb_401\",\n  \"slider-side\": \"awsui_slider-side_1r9lg_1tmlb_430\",\n  \"slider-wrapper-bottom\": \"awsui_slider-wrapper-bottom_1r9lg_1tmlb_435\",\n  \"slider-wrapper-side\": \"awsui_slider-wrapper-side_1r9lg_1tmlb_446\",\n  \"open-button\": \"awsui_open-button_1r9lg_1tmlb_457\",\n  \"open-button-side\": \"awsui_open-button-side_1r9lg_1tmlb_461\",\n  \"slider-icon\": \"awsui_slider-icon_1r9lg_1tmlb_468\",\n  \"slider-icon-bottom\": \"awsui_slider-icon-bottom_1r9lg_1tmlb_474\",\n  \"slider-icon-side\": \"awsui_slider-icon-side_1r9lg_1tmlb_477\",\n  \"pane-header-wrapper-bottom\": \"awsui_pane-header-wrapper-bottom_1r9lg_1tmlb_481\",\n  \"drawer-mobile\": \"awsui_drawer-mobile_1r9lg_1tmlb_491\",\n  \"drawer-disable-content-paddings\": \"awsui_drawer-disable-content-paddings_1r9lg_1tmlb_494\",\n  \"content-bottom\": \"awsui_content-bottom_1r9lg_1tmlb_502\",\n  \"pane-bottom-center-align\": \"awsui_pane-bottom-center-align_1r9lg_1tmlb_515\",\n  \"pane-bottom-content-nav-padding\": \"awsui_pane-bottom-content-nav-padding_1r9lg_1tmlb_520\",\n  \"pane-bottom-content-tools-padding\": \"awsui_pane-bottom-content-tools-padding_1r9lg_1tmlb_524\",\n  \"content-bottom-max-width\": \"awsui_content-bottom-max-width_1r9lg_1tmlb_528\",\n  \"content-side\": \"awsui_content-side_1r9lg_1tmlb_533\",\n  \"pane-header-wrapper-side\": \"awsui_pane-header-wrapper-side_1r9lg_1tmlb_544\",\n  \"pane-content-wrapper-side\": \"awsui_pane-content-wrapper-side_1r9lg_1tmlb_547\",\n  \"header\": \"awsui_header_1r9lg_1tmlb_552\",\n  \"header-text\": \"awsui_header-text_1r9lg_1tmlb_561\",\n  \"header-divider\": \"awsui_header-divider_1r9lg_1tmlb_571\",\n  \"header-actions\": \"awsui_header-actions_1r9lg_1tmlb_577\",\n  \"divider\": \"awsui_divider_1r9lg_1tmlb_585\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { KeyCode } from '../../internal/keycode';\nimport { SizeControlProps } from '../interfaces';\n\nconst KEYBOARD_SINGLE_STEP_SIZE = 10;\nconst KEYBOARD_MULTIPLE_STEPS_SIZE = 60;\n\nconst getCurrentSize = (splitPanelRef?: React.RefObject<HTMLDivElement>) => {\n  if (!splitPanelRef || !splitPanelRef.current) {\n    return {\n      splitPanelHeight: 0,\n      splitPanelWidth: 0,\n    };\n  }\n\n  const safeParseFloat = (size = '') => parseFloat(size) || 0;\n\n  return {\n    splitPanelHeight: safeParseFloat(splitPanelRef.current.style.height),\n    splitPanelWidth: safeParseFloat(splitPanelRef.current.style.width),\n  };\n};\n\nexport const useKeyboardEvents = ({\n  position,\n  setSidePanelWidth,\n  setBottomPanelHeight,\n  splitPanelRef,\n}: SizeControlProps) => {\n  return (event: React.KeyboardEvent) => {\n    let setSizeFunction;\n    let currentSize;\n    let maxSize;\n\n    const { splitPanelHeight, splitPanelWidth } = getCurrentSize(splitPanelRef);\n\n    if (position === 'side') {\n      setSizeFunction = setSidePanelWidth;\n      currentSize = splitPanelWidth;\n      // don't need the exact max size as it's constrained in the set size function\n      maxSize = window.innerWidth;\n    } else {\n      setSizeFunction = setBottomPanelHeight;\n      currentSize = splitPanelHeight;\n      // don't need the exact max size as it's constrained in the set size function\n      maxSize = window.innerHeight;\n    }\n\n    const primaryGrowKey = position === 'bottom' ? KeyCode.up : KeyCode.left;\n    const primaryShrinkKey = position === 'bottom' ? KeyCode.down : KeyCode.right;\n    const altGrowKey = position === 'bottom' ? KeyCode.right : KeyCode.down;\n    const altShrinkKey = position === 'bottom' ? KeyCode.left : KeyCode.up;\n\n    let isEventHandled = true;\n    switch (event.keyCode) {\n      case primaryGrowKey:\n      case altGrowKey:\n        setSizeFunction(currentSize + KEYBOARD_SINGLE_STEP_SIZE);\n        break;\n      case primaryShrinkKey:\n      case altShrinkKey:\n        setSizeFunction(currentSize - KEYBOARD_SINGLE_STEP_SIZE);\n        break;\n      case KeyCode.pageUp:\n        setSizeFunction(currentSize + KEYBOARD_MULTIPLE_STEPS_SIZE);\n        break;\n      case KeyCode.pageDown:\n        setSizeFunction(currentSize - KEYBOARD_MULTIPLE_STEPS_SIZE);\n        break;\n      case KeyCode.home:\n        setSizeFunction(maxSize);\n        break;\n      case KeyCode.end:\n        setSizeFunction(0);\n        break;\n      default:\n        isEventHandled = false;\n    }\n\n    if (isEventHandled) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nconst ResizeHandler = ({ className }: { className?: string }) => (\n  <svg\n    focusable={false}\n    className={className}\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"16\"\n    height=\"16\"\n    viewBox=\"0 0 16 16\"\n  >\n    <line strokeWidth=\"2\" x1=\"2\" y1=\"5\" x2=\"14\" y2=\"5\" />\n    <line strokeWidth=\"2\" x1=\"14\" y1=\"10\" x2=\"2\" y2=\"10\" />\n  </svg>\n);\n\nexport default ResizeHandler;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useEffect, useState, useRef } from 'react';\n\nimport { getLimitedValue } from '../../split-panel/utils/size-utils';\nimport { usePointerEvents } from '../../split-panel/utils/use-pointer-events';\nimport { useKeyboardEvents } from '../../split-panel/utils/use-keyboard-events';\nimport { Drawer } from './index';\nimport testutilStyles from '../test-classes/styles.css.js';\n\nimport ResizeHandler from '../../split-panel/icons/resize-handler';\nimport splitPanelStyles from '../../split-panel/styles.css.js';\nimport { SizeControlProps, ResizableDrawerProps } from './interfaces';\n\nexport const ResizableDrawer = ({\n  onResize,\n  size,\n  getMaxWidth,\n  refs,\n  activeDrawer,\n  ...props\n}: ResizableDrawerProps) => {\n  const { isOpen, children, isMobile } = props;\n\n  const MIN_WIDTH = activeDrawer?.defaultSize && activeDrawer.defaultSize < 280 ? activeDrawer?.defaultSize : 280;\n  const [relativeSize, setRelativeSize] = useState(0);\n\n  useEffect(() => {\n    // effects are called inside out in the components tree\n    // wait one frame to allow app-layout to complete its calculations\n    const handle = requestAnimationFrame(() => {\n      const maxSize = getMaxWidth();\n      setRelativeSize((size / maxSize) * 100);\n    });\n    return () => cancelAnimationFrame(handle);\n  }, [size, getMaxWidth]);\n\n  const setSidePanelWidth = (width: number) => {\n    const maxWidth = getMaxWidth();\n    const size = getLimitedValue(MIN_WIDTH, width, maxWidth);\n    const id = activeDrawer?.id;\n\n    if (isOpen && id && maxWidth >= MIN_WIDTH) {\n      onResize({ size, id });\n    }\n  };\n\n  const position = 'side';\n  const setBottomPanelHeight = () => {};\n  const drawerRefObject = useRef<HTMLDivElement>(null);\n\n  const sizeControlProps: SizeControlProps = {\n    position,\n    splitPanelRef: drawerRefObject,\n    handleRef: refs.slider,\n    setSidePanelWidth,\n    setBottomPanelHeight,\n  };\n\n  const onSliderPointerDown = usePointerEvents(sizeControlProps);\n  const onKeyDown = useKeyboardEvents(sizeControlProps);\n\n  const resizeHandle = (\n    <div\n      ref={refs.slider}\n      role=\"slider\"\n      tabIndex={0}\n      aria-label={activeDrawer?.ariaLabels?.resizeHandle}\n      aria-valuemax={100}\n      aria-valuemin={0}\n      aria-valuenow={relativeSize}\n      className={clsx(splitPanelStyles.slider, splitPanelStyles[`slider-side`], testutilStyles['drawers-slider'])}\n      onKeyDown={onKeyDown}\n      onPointerDown={onSliderPointerDown}\n    >\n      <ResizeHandler className={clsx(splitPanelStyles['slider-icon'], splitPanelStyles[`slider-icon-side`])} />\n    </div>\n  );\n\n  return (\n    <Drawer\n      {...props}\n      ref={drawerRefObject}\n      resizeHandle={\n        !isMobile &&\n        activeDrawer?.resizable && <div className={splitPanelStyles['slider-wrapper-side']}>{resizeHandle}</div>\n      }\n    >\n      {children}\n    </Drawer>\n  );\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useCallback } from 'react';\nimport { SizeControlProps } from '../interfaces';\nimport styles from '../styles.css.js';\n\nexport const usePointerEvents = ({\n  position,\n  splitPanelRef,\n  handleRef,\n  setSidePanelWidth,\n  setBottomPanelHeight,\n}: SizeControlProps) => {\n  const onDocumentPointerMove = useCallback(\n    (event: PointerEvent) => {\n      if (!splitPanelRef || !splitPanelRef.current || !handleRef || !handleRef.current) {\n        return;\n      }\n\n      if (position === 'side') {\n        const mouseClientX = event.clientX;\n\n        // The handle offset aligns the cursor with the middle of the resize handle.\n        const handleOffset = handleRef.current.getBoundingClientRect().width / 2;\n        const width = splitPanelRef.current.getBoundingClientRect().right - mouseClientX + handleOffset;\n\n        setSidePanelWidth(width);\n      } else {\n        const mouseClientY = event.clientY;\n\n        // The handle offset aligns the cursor with the middle of the resize handle.\n        const handleOffset = handleRef.current.getBoundingClientRect().height / 2;\n        const height = splitPanelRef.current.getBoundingClientRect().bottom - mouseClientY + handleOffset;\n\n        setBottomPanelHeight(height);\n      }\n    },\n    [position, splitPanelRef, handleRef, setSidePanelWidth, setBottomPanelHeight]\n  );\n\n  const onDocumentPointerUp = useCallback(() => {\n    document.body.classList.remove(styles['resize-active']);\n    document.body.classList.remove(styles[`resize-${position}`]);\n    document.removeEventListener('pointerup', onDocumentPointerUp);\n    document.removeEventListener('pointermove', onDocumentPointerMove);\n  }, [onDocumentPointerMove, position]);\n\n  const onSliderPointerDown = useCallback(() => {\n    document.body.classList.add(styles['resize-active']);\n    document.body.classList.add(styles[`resize-${position}`]);\n    document.addEventListener('pointerup', onDocumentPointerUp);\n    document.addEventListener('pointermove', onDocumentPointerMove);\n  }, [onDocumentPointerMove, onDocumentPointerUp, position]);\n\n  return onSliderPointerDown;\n};\n","\n    import './styles.scoped.css';\n    export default {\n  \"drawer-displayed\": \"awsui_drawer-displayed_glvdu_475ep_97\",\n  \"drawer-content\": \"awsui_drawer-content_glvdu_475ep_101\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport styles from './styles.css.js';\n\ninterface SideSplitPanelDrawer {\n  topOffset: number | undefined;\n  bottomOffset: number | undefined;\n  width: number | undefined;\n  displayed: boolean;\n  children: React.ReactNode;\n}\n\nexport function SideSplitPanelDrawer({ topOffset, bottomOffset, width, displayed, children }: SideSplitPanelDrawer) {\n  return (\n    <div\n      className={clsx(displayed && styles['drawer-displayed'])}\n      style={{ width }}\n      data-testid=\"side-split-panel-drawer\"\n    >\n      <div className={styles['drawer-content']} style={{ width: width, top: topOffset, bottom: bottomOffset }}>\n        {children}\n      </div>\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { createContext } from 'react';\n\nexport const DynamicOverlapContext = createContext<(overlapHeight: number) => void>(() => {});\n","\n    import './styles.scoped.css';\n    export default {\n  \"background\": \"awsui_background_hyvsj_1ac3b_93\",\n  \"scrolling-background\": \"awsui_scrolling-background_hyvsj_1ac3b_96\",\n  \"sticky-background\": \"awsui_sticky-background_hyvsj_1ac3b_102\",\n  \"has-sticky-notifications\": \"awsui_has-sticky-notifications_hyvsj_1ac3b_110\",\n  \"breadcrumbs\": \"awsui_breadcrumbs_hyvsj_1ac3b_123\",\n  \"has-sticky-background\": \"awsui_has-sticky-background_hyvsj_1ac3b_133\",\n  \"drawers-container\": \"awsui_drawers-container_hyvsj_1ac3b_145\",\n  \"has-open-drawer\": \"awsui_has-open-drawer_hyvsj_1ac3b_157\",\n  \"disable-body-scroll\": \"awsui_disable-body-scroll_hyvsj_1ac3b_191\",\n  \"drawers-desktop-triggers-container\": \"awsui_drawers-desktop-triggers-container_hyvsj_1ac3b_196\",\n  \"has-multiple-triggers\": \"awsui_has-multiple-triggers_hyvsj_1ac3b_214\",\n  \"drawers-trigger-content\": \"awsui_drawers-trigger-content_hyvsj_1ac3b_246\",\n  \"drawers-trigger\": \"awsui_drawers-trigger_hyvsj_1ac3b_246\",\n  \"drawer\": \"awsui_drawer_hyvsj_1ac3b_145\",\n  \"drawer-close-button\": \"awsui_drawer-close-button_hyvsj_1ac3b_297\",\n  \"drawer-content\": \"awsui_drawer-content_hyvsj_1ac3b_302\",\n  \"is-drawer-open\": \"awsui_is-drawer-open_hyvsj_1ac3b_307\",\n  \"content\": \"awsui_content_hyvsj_1ac3b_341\",\n  \"layout\": \"awsui_layout_hyvsj_1ac3b_362\",\n  \"has-max-content-width\": \"awsui_has-max-content-width_hyvsj_1ac3b_445\",\n  \"content-type-dashboard\": \"awsui_content-type-dashboard_hyvsj_1ac3b_460\",\n  \"is-overlap-disabled\": \"awsui_is-overlap-disabled_hyvsj_1ac3b_477\",\n  \"has-content-gap-left\": \"awsui_has-content-gap-left_hyvsj_1ac3b_509\",\n  \"has-content-gap-right\": \"awsui_has-content-gap-right_hyvsj_1ac3b_512\",\n  \"content-first-child-notifications\": \"awsui_content-first-child-notifications_hyvsj_1ac3b_522\",\n  \"has-breadcrumbs\": \"awsui_has-breadcrumbs_hyvsj_1ac3b_525\",\n  \"content-first-child-header\": \"awsui_content-first-child-header_hyvsj_1ac3b_528\",\n  \"has-header\": \"awsui_has-header_hyvsj_1ac3b_528\",\n  \"content-first-child-main\": \"awsui_content-first-child-main_hyvsj_1ac3b_549\",\n  \"disable-content-paddings\": \"awsui_disable-content-paddings_hyvsj_1ac3b_549\",\n  \"has-split-panel\": \"awsui_has-split-panel_hyvsj_1ac3b_592\",\n  \"split-panel-position-bottom\": \"awsui_split-panel-position-bottom_hyvsj_1ac3b_592\",\n  \"block-body-scroll\": \"awsui_block-body-scroll_hyvsj_1ac3b_608\",\n  \"unfocusable\": \"awsui_unfocusable_hyvsj_1ac3b_613\",\n  \"container\": \"awsui_container_hyvsj_1ac3b_623\",\n  \"is-navigation-open\": \"awsui_is-navigation-open_hyvsj_1ac3b_648\",\n  \"is-tools-open\": \"awsui_is-tools-open_hyvsj_1ac3b_651\",\n  \"is-split-panel-open\": \"awsui_is-split-panel-open_hyvsj_1ac3b_651\",\n  \"split-panel-position-side\": \"awsui_split-panel-position-side_hyvsj_1ac3b_651\",\n  \"mobile-toolbar\": \"awsui_mobile-toolbar_hyvsj_1ac3b_660\",\n  \"mobile-toolbar-nav\": \"awsui_mobile-toolbar-nav_hyvsj_1ac3b_676\",\n  \"mobile-toolbar-breadcrumbs\": \"awsui_mobile-toolbar-breadcrumbs_hyvsj_1ac3b_680\",\n  \"mobile-toolbar-tools\": \"awsui_mobile-toolbar-tools_hyvsj_1ac3b_684\",\n  \"navigation-container\": \"awsui_navigation-container_hyvsj_1ac3b_693\",\n  \"show-navigation\": \"awsui_show-navigation_hyvsj_1ac3b_737\",\n  \"animating\": \"awsui_animating_hyvsj_1ac3b_759\",\n  \"showButtons\": \"awsui_showButtons_hyvsj_1ac3b_1\",\n  \"navigation\": \"awsui_navigation_hyvsj_1ac3b_693\",\n  \"openNavigation\": \"awsui_openNavigation_hyvsj_1ac3b_1\",\n  \"animated-content\": \"awsui_animated-content_hyvsj_1ac3b_820\",\n  \"hide-navigation\": \"awsui_hide-navigation_hyvsj_1ac3b_829\",\n  \"notifications\": \"awsui_notifications_hyvsj_1ac3b_839\",\n  \"sticky-notifications\": \"awsui_sticky-notifications_hyvsj_1ac3b_845\",\n  \"split-panel-bottom\": \"awsui_split-panel-bottom_hyvsj_1ac3b_862\",\n  \"position-bottom\": \"awsui_position-bottom_hyvsj_1ac3b_908\",\n  \"openSplitPanelBottom\": \"awsui_openSplitPanelBottom_hyvsj_1ac3b_1\",\n  \"split-panel-side\": \"awsui_split-panel-side_hyvsj_1ac3b_937\",\n  \"position-side\": \"awsui_position-side_hyvsj_1ac3b_965\",\n  \"openSplitPanelSide\": \"awsui_openSplitPanelSide_hyvsj_1ac3b_1\",\n  \"tools-container\": \"awsui_tools-container_hyvsj_1ac3b_1002\",\n  \"tools\": \"awsui_tools_hyvsj_1ac3b_1002\",\n  \"openTools\": \"awsui_openTools_hyvsj_1ac3b_1\",\n  \"has-tools-form-persistence\": \"awsui_has-tools-form-persistence_hyvsj_1ac3b_1096\",\n  \"hide-tools\": \"awsui_hide-tools_hyvsj_1ac3b_1106\",\n  \"show-tools\": \"awsui_show-tools_hyvsj_1ac3b_1118\",\n  \"has-tools-form\": \"awsui_has-tools-form_hyvsj_1ac3b_1096\",\n  \"trigger\": \"awsui_trigger_hyvsj_1ac3b_1185\",\n  \"selected\": \"awsui_selected_hyvsj_1ac3b_1224\"\n};\n  ","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","export default {\n  disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n  return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        if (this.props.unmountOnExit || this.props.mountOnEnter) {\n          var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n          // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n          // To make the animation happen,  we have to separate each rendering and avoid being processed as batched.\n\n          if (node) forceReflow(node);\n        }\n\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n      var value = propValue[key];\n      return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n    }\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useState } from 'react';\nimport { MutableRefObject, useCallback, useRef } from 'react';\nimport {\n  Transition as ReactTransitionGroupTransition,\n  TransitionStatus as ReactTransitionGroupTransitionStatus,\n} from 'react-transition-group';\nimport { useReducedMotion } from '../../hooks/use-visual-mode';\n\nexport type TransitionStatus = ReactTransitionGroupTransitionStatus | 'enter' | 'exit';\n\nexport interface TransitionProps {\n  in: boolean;\n  exit?: boolean;\n\n  disabled?: boolean;\n\n  children: (state: TransitionStatus, transitioningElementRef: MutableRefObject<any>) => React.ReactNode;\n  onStatusChange?: (status: TransitionStatus) => void;\n  transitionChangeDelay?: { entering?: number };\n}\n\n/**\n * This component is a wrapper around the CSSTransition component.\n *\n * It provides a second parameter in its rendering function that must be\n * attached to the node that is transitioning.\n */\nexport function Transition({\n  in: isIn,\n  children,\n  exit = true,\n  onStatusChange = () => void 0,\n  disabled = false,\n  transitionChangeDelay,\n  ...rest\n}: TransitionProps) {\n  const transitionRootElement = useRef<HTMLElement>(null);\n  // the initial state of the transition should be either 'exited' or 'entered' depending\n  // on the `in` property, this mimicks how internally the Transition component works here:\n  // https://github.com/reactjs/react-transition-group/blob/6cbd6aaedaf8e9472007640b429ddb48c6c24158/src/Transition.js#L121\n  const [transitionState, setTransitionState] = useState<TransitionStatus>(isIn ? 'entered' : 'exited');\n  const motionDisabled = useReducedMotion(transitionRootElement) || disabled;\n\n  const addTransitionEndListener = useCallback((done: () => void) => {\n    const node = transitionRootElement.current;\n\n    if (node === null) {\n      return;\n    }\n    const listener = (e: TransitionEvent | AnimationEvent) => {\n      if (e.target === node) {\n        node.removeEventListener('transitionend', listener);\n        node.removeEventListener('animationend', listener);\n        done();\n      }\n    };\n    node.addEventListener('transitionend', listener);\n    node.addEventListener('animationend', listener);\n  }, []);\n\n  return (\n    <ReactTransitionGroupTransition\n      addEndListener={addTransitionEndListener}\n      timeout={motionDisabled ? 0 : undefined}\n      in={isIn}\n      nodeRef={transitionRootElement}\n      exit={exit}\n      onEnter={isAppearing => {\n        if (!isAppearing) {\n          setTransitionState('enter');\n          onStatusChange('enter');\n        }\n      }}\n      onEntering={isAppearing => {\n        if (!isAppearing) {\n          // This line forces the browser to recalculate the layout because we want the starting state in the 'enter' style\n          // to be applied before the animation starts.\n          void transitionRootElement.current?.offsetHeight;\n\n          if (transitionChangeDelay?.entering) {\n            setTimeout(() => {\n              setTransitionState('entering');\n              onStatusChange('entering');\n            }, transitionChangeDelay?.entering);\n          } else {\n            setTransitionState('entering');\n            onStatusChange('entering');\n          }\n        }\n      }}\n      onEntered={isAppearing => {\n        if (!isAppearing) {\n          setTransitionState('entered');\n          onStatusChange('entered');\n        }\n      }}\n      onExit={() => {\n        setTransitionState('exit');\n        onStatusChange('exit');\n      }}\n      onExiting={() => {\n        setTransitionState('exiting');\n        onStatusChange('exiting');\n      }}\n      onExited={() => {\n        setTransitionState('exited');\n        onStatusChange('exited');\n      }}\n      {...rest}\n    >\n      {() => children(transitionState, transitionRootElement)}\n    </ReactTransitionGroupTransition>\n  );\n}\n","const customCSSPropertiesMap: Record<string, string> = {\n  activeDrawerWidth: '--awsui-active-drawer-width-8nglyc',\n  breadcrumbsGap: '--awsui-breadcrumbs-gap-8nglyc',\n  contentGapLeft: '--awsui-content-gap-left-8nglyc',\n  contentGapRight: '--awsui-content-gap-right-8nglyc',\n  contentHeight: '--awsui-content-height-8nglyc',\n  containerFirstGap: '--awsui-container-first-gap-8nglyc',\n  containerFirstOverlapExtension: '--awsui-container-first-overlap-extension-8nglyc',\n  defaultMaxContentWidth: '--awsui-default-max-content-width-8nglyc',\n  defaultMinContentWidth: '--awsui-default-min-content-width-8nglyc',\n  footerHeight: '--awsui-footer-height-8nglyc',\n  headerGap: '--awsui-header-gap-8nglyc',\n  headerHeight: '--awsui-header-height-8nglyc',\n  layoutWidth: '--awsui-layout-width-8nglyc',\n  mainGap: '--awsui-main-gap-8nglyc',\n  mainOffsetLeft: '--awsui-main-offset-left-8nglyc',\n  mainTemplateRows: '--awsui-main-template-rows-8nglyc',\n  maxContentWidth: '--awsui-max-content-width-8nglyc',\n  minContentWidth: '--awsui-min-content-width-8nglyc',\n  mobileBarHeight: '--awsui-mobile-bar-height-8nglyc',\n  notificationsGap: '--awsui-notifications-gap-8nglyc',\n  notificationsHeight: '--awsui-notifications-height-8nglyc',\n  offsetTop: '--awsui-offset-top-8nglyc',\n  offsetTopWithNotifications: '--awsui-offset-top-with-notifications-8nglyc',\n  overlapHeight: '--awsui-overlap-height-8nglyc',\n  navigationWidth: '--awsui-navigation-width-8nglyc',\n  splitPanelReportedHeaderSize: '--awsui-split-panel-reported-header-size-8nglyc',\n  splitPanelReportedSize: '--awsui-split-panel-reported-size-8nglyc',\n  splitPanelHeight: '--awsui-split-panel-height-8nglyc',\n  splitPanelMinWidth: '--awsui-split-panel-min-width-8nglyc',\n  splitPanelMaxWidth: '--awsui-split-panel-max-width-8nglyc',\n  toolsMaxWidth: '--awsui-tools-max-width-8nglyc',\n  toolsWidth: '--awsui-tools-width-8nglyc',\n  toolsAnimationStartingOpacity: '--awsui-tools-animation-starting-opacity-8nglyc',\n  contentScrollMargin: '--awsui-content-scroll-margin-8nglyc',\n  flashbarStackDepth: '--awsui-flashbar-stack-depth-8nglyc',\n  flashbarStackIndex: '--awsui-flashbar-stack-index-8nglyc',\n  flashbarStickyBottomMargin: '--awsui-flashbar-sticky-bottom-margin-8nglyc',\n  stackedNotificationsBottomMargin: '--awsui-stacked-notifications-bottom-margin-8nglyc',\n  stackedNotificationsDefaultBottomMargin: '--awsui-stacked-notifications-default-bottom-margin-8nglyc',\n};\nexport default customCSSPropertiesMap;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useAppLayoutInternals } from './context';\nimport { SplitPanelContextProvider, SplitPanelContextProps } from '../../internal/context/split-panel-context';\nimport styles from './styles.css.js';\nimport { AppLayoutProps } from '../interfaces';\nimport { Transition } from '../../internal/components/transition';\nimport customCssProps from '../../internal/generated/custom-css-properties';\n\n/**\n * If there is no Split Panel in the AppLayout context then the SplitPanel\n * will pass through the AppLayout children without the context.\n */\nfunction SplitPanel({ children }: React.PropsWithChildren<unknown>) {\n  const {\n    footerHeight,\n    handleSplitPanelClick,\n    handleSplitPanelPreferencesChange,\n    handleSplitPanelResize,\n    headerHeight,\n    isMobile,\n    isSplitPanelForcedPosition,\n    isSplitPanelOpen,\n    setSplitPanelReportedSize,\n    setSplitPanelReportedHeaderHeight,\n    setSplitPanelToggle,\n    splitPanelPosition,\n    splitPanelRefs,\n    splitPanelSize,\n  } = useAppLayoutInternals();\n\n  const context: SplitPanelContextProps = {\n    bottomOffset: 0,\n    getMaxHeight: () => {\n      const availableHeight = document.documentElement.clientHeight - headerHeight - footerHeight;\n      // If the page is likely zoomed in at 200%, allow the split panel to fill the content area.\n      return availableHeight < 400 ? availableHeight - 40 : availableHeight - 250;\n    },\n    getMaxWidth: () => document.documentElement.clientWidth,\n    isForcedPosition: isSplitPanelForcedPosition,\n    isMobile,\n    isOpen: isSplitPanelOpen,\n    leftOffset: 0,\n    onPreferencesChange: handleSplitPanelPreferencesChange,\n    onResize: handleSplitPanelResize,\n    onToggle: handleSplitPanelClick,\n    position: splitPanelPosition,\n    reportSize: setSplitPanelReportedSize,\n    reportHeaderHeight: setSplitPanelReportedHeaderHeight,\n    rightOffset: 0,\n    size: splitPanelSize || 0,\n    topOffset: 0,\n    setSplitPanelToggle,\n    refs: splitPanelRefs,\n  };\n\n  return <SplitPanelContextProvider value={context}>{children}</SplitPanelContextProvider>;\n}\n\n/**\n * This is the render function for the SplitPanel when it is in bottom position.\n * The Split Panel container will be another row entry in the grid definition in\n * the Layout component. The start and finish columns will be variable based\n * on the presence and state of the Navigation and Tools components.\n */\nfunction SplitPanelBottom() {\n  const {\n    disableBodyScroll,\n    hasOpenDrawer,\n    isNavigationOpen,\n    isSplitPanelOpen,\n    splitPanel,\n    splitPanelPosition,\n    splitPanelReportedSize,\n    splitPanelReportedHeaderHeight,\n  } = useAppLayoutInternals();\n\n  if (!splitPanel) {\n    return null;\n  }\n\n  return (\n    <Transition in={isSplitPanelOpen ?? false} exit={false}>\n      {(state, transitionEventsRef) => (\n        <section\n          className={clsx(styles['split-panel-bottom'], styles[`position-${splitPanelPosition}`], {\n            [styles.animating]: state === 'entering',\n            [styles['disable-body-scroll']]: disableBodyScroll,\n            [styles['has-open-drawer']]: hasOpenDrawer,\n            [styles['is-navigation-open']]: isNavigationOpen,\n            [styles['is-split-panel-open']]: isSplitPanelOpen,\n          })}\n          ref={transitionEventsRef}\n          style={{\n            [customCssProps.splitPanelReportedSize]: `${splitPanelReportedSize}px`,\n            [customCssProps.splitPanelReportedHeaderSize]: `${splitPanelReportedHeaderHeight}px`,\n          }}\n        >\n          <SplitPanel></SplitPanel>\n          {splitPanelPosition === 'bottom' && splitPanel}\n        </section>\n      )}\n    </Transition>\n  );\n}\n\n/**\n * This is the render function for the SplitPanel when it is side position.\n * The Split Panel will not be within the grid defined in the Layout component\n * but instead a direct child of the Tools component. The width constraints\n * for this position are computed in the Tools component.\n */\nfunction SplitPanelSide() {\n  const {\n    isSplitPanelOpen,\n    splitPanel,\n    splitPanelPosition,\n    splitPanelMaxWidth,\n    splitPanelMinWidth,\n    splitPanelReportedSize,\n  } = useAppLayoutInternals();\n\n  if (!splitPanel) {\n    return null;\n  }\n\n  return (\n    <Transition in={isSplitPanelOpen ?? false} exit={false}>\n      {(state, transitionEventsRef) => (\n        <section\n          aria-hidden={!isSplitPanelOpen || splitPanelPosition === 'bottom' ? true : false}\n          className={clsx(styles['split-panel-side'], styles[`position-${splitPanelPosition}`], {\n            [styles.animating]: state === 'entering',\n            [styles['is-split-panel-open']]: isSplitPanelOpen,\n          })}\n          ref={transitionEventsRef}\n          style={{\n            [customCssProps.splitPanelMaxWidth]: `${splitPanelMaxWidth}px`,\n            [customCssProps.splitPanelMinWidth]: `${splitPanelMinWidth}px`,\n            [customCssProps.splitPanelReportedHeaderSize]: `${splitPanelReportedSize}px`,\n          }}\n        >\n          <div className={clsx(styles['animated-content'])}>{splitPanelPosition === 'side' && splitPanel}</div>\n        </section>\n      )}\n    </Transition>\n  );\n}\n\n/**\n * This logic will determine what the Split Panel position should be. It reconciles the possibility\n * of being in forced position with the current selected position in the settings.\n */\nexport function getSplitPanelPosition(\n  isSplitPanelForcedPosition: boolean,\n  splitPanelPreferences: AppLayoutProps.SplitPanelPreferences | undefined\n) {\n  let splitPanelPosition: AppLayoutProps.SplitPanelPosition = 'bottom';\n\n  if (!isSplitPanelForcedPosition && splitPanelPreferences?.position === 'side') {\n    splitPanelPosition = 'side';\n  }\n\n  return splitPanelPosition;\n}\nSplitPanel.Bottom = SplitPanelBottom;\nSplitPanel.Side = SplitPanelSide;\n\nexport default SplitPanel;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { DependencyList, RefObject, useEffect, useRef } from 'react';\nimport { ButtonProps } from '../../button/interfaces';\n\nexport type SplitPanelLastInteraction = { type: 'open' } | { type: 'close' } | { type: 'position' };\n\nexport interface SplitPanelFocusControlRefs {\n  toggle: RefObject<ButtonProps.Ref>;\n  slider: RefObject<HTMLDivElement>;\n  preferences: RefObject<ButtonProps.Ref>;\n}\ninterface SplitPanelFocusControlState {\n  refs: SplitPanelFocusControlRefs;\n  setLastInteraction: (interaction: SplitPanelLastInteraction) => void;\n}\n\nexport function useSplitPanelFocusControl(dependencies: DependencyList): SplitPanelFocusControlState {\n  const refs = {\n    toggle: useRef<ButtonProps.Ref>(null),\n    slider: useRef<HTMLDivElement>(null),\n    preferences: useRef<ButtonProps.Ref>(null),\n  };\n  const lastInteraction = useRef<SplitPanelLastInteraction | null>(null);\n\n  useEffect(() => {\n    switch (lastInteraction.current?.type) {\n      case 'open':\n        refs.slider.current?.focus();\n        break;\n      case 'close':\n        refs.toggle.current?.focus();\n        break;\n      case 'position':\n        refs.preferences.current?.focus();\n        break;\n    }\n    lastInteraction.current = null;\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, dependencies);\n\n  return {\n    refs,\n    setLastInteraction: (interaction: SplitPanelLastInteraction) => (lastInteraction.current = interaction),\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, {\n  createContext,\n  useCallback,\n  useEffect,\n  useLayoutEffect,\n  useImperativeHandle,\n  useRef,\n  useState,\n  useContext,\n} from 'react';\nimport { applyDefaults } from '../defaults';\nimport { AppLayoutContext } from '../../internal/context/app-layout-context';\nimport { DynamicOverlapContext } from '../../internal/context/dynamic-overlap-context';\nimport { AppLayoutProps } from '../interfaces';\nimport { DrawersProps } from './drawers';\nimport { fireNonCancelableEvent } from '../../internal/events';\nimport { FocusControlRefs, useFocusControl } from '../utils/use-focus-control';\nimport { getSplitPanelDefaultSize } from '../../split-panel/utils/size-utils';\nimport { isDevelopment } from '../../internal/is-development';\nimport { getSplitPanelPosition } from './split-panel';\nimport { useContainerQuery } from '../../internal/hooks/container-queries';\nimport { useControllable } from '../../internal/hooks/use-controllable';\nimport { SplitPanelFocusControlRefs, useSplitPanelFocusControl } from '../utils/use-split-panel-focus-control';\nimport { SplitPanelSideToggleProps } from '../../internal/context/split-panel-context';\nimport { useObservedElement } from '../utils/use-observed-element';\nimport { useMobile } from '../../internal/hooks/use-mobile';\nimport { warnOnce } from '../../internal/logging';\nimport styles from './styles.css.js';\n\ninterface AppLayoutInternals extends AppLayoutProps {\n  activeDrawerId: string | null;\n  activeDrawerWidth: number;\n  drawers: DrawersProps;\n  drawersRefs: FocusControlRefs;\n  drawersTriggerCount: number;\n  dynamicOverlapHeight: number;\n  handleDrawersClick: (activeDrawerId: string | null, skipFocusControl?: boolean) => void;\n  handleSplitPanelClick: () => void;\n  handleNavigationClick: (isOpen: boolean) => void;\n  handleSplitPanelPreferencesChange: (detail: AppLayoutProps.SplitPanelPreferences) => void;\n  handleSplitPanelResize: (detail: { size: number }) => void;\n  handleToolsClick: (value: boolean, skipFocusControl?: boolean) => void;\n  hasDefaultToolsWidth: boolean;\n  hasDrawerViewportOverlay: boolean;\n  hasNotificationsContent: boolean;\n  hasOpenDrawer: boolean;\n  hasStickyBackground: boolean;\n  isMobile: boolean;\n  isNavigationOpen: boolean;\n  isSplitPanelForcedPosition: boolean;\n  isSplitPanelOpen?: boolean;\n  isToolsOpen: boolean;\n  layoutElement: React.Ref<HTMLElement>;\n  layoutWidth: number;\n  loseToolsFocus: () => void;\n  mainElement: React.Ref<HTMLDivElement>;\n  mainOffsetLeft: number;\n  navigationRefs: FocusControlRefs;\n  notificationsElement: React.Ref<HTMLDivElement>;\n  notificationsHeight: number;\n  offsetBottom: number;\n  setHasStickyBackground: (value: boolean) => void;\n  setSplitPanelReportedSize: (value: number) => void;\n  setSplitPanelReportedHeaderHeight: (value: number) => void;\n  headerHeight: number;\n  footerHeight: number;\n  splitPanelMaxWidth: number;\n  splitPanelMinWidth: number;\n  splitPanelPosition: AppLayoutProps.SplitPanelPosition;\n  splitPanelReportedSize: number;\n  splitPanelReportedHeaderHeight: number;\n  splitPanelToggle: SplitPanelSideToggleProps;\n  setSplitPanelToggle: (toggle: SplitPanelSideToggleProps) => void;\n  splitPanelDisplayed: boolean;\n  splitPanelRefs: SplitPanelFocusControlRefs;\n  toolsRefs: FocusControlRefs;\n}\n\n/**\n * The default values are destructured in the context instantiation to\n * prevent downstream Typescript errors. This could likely be replaced\n * by a context interface definition that extends the AppLayout interface.\n */\nconst AppLayoutInternalsContext = createContext<AppLayoutInternals | null>(null);\n\ninterface AppLayoutProviderInternalsProps extends AppLayoutProps {\n  children: React.ReactNode;\n}\n\nexport function useAppLayoutInternals() {\n  const ctx = useContext(AppLayoutInternalsContext);\n  if (!ctx) {\n    throw new Error('Invariant violation: this context is only available inside app layout');\n  }\n  return ctx;\n}\n\nexport const AppLayoutInternalsProvider = React.forwardRef(\n  (\n    {\n      toolsHide,\n      toolsOpen: controlledToolsOpen,\n      navigationHide,\n      navigationOpen: controlledNavigationOpen,\n      contentType = 'default',\n      headerSelector = '#b #h',\n      footerSelector = '#b #h',\n      children,\n      splitPanel,\n      ...props\n    }: AppLayoutProviderInternalsProps,\n    forwardRef: React.Ref<AppLayoutProps.Ref>\n  ) => {\n    const isMobile = useMobile();\n\n    if (isDevelopment) {\n      if (controlledToolsOpen && toolsHide) {\n        warnOnce(\n          'AppLayout',\n          `You have enabled both the \\`toolsOpen\\` prop and the \\`toolsHide\\` prop. This is not supported. Set \\`toolsOpen\\` to \\`false\\` when you set \\`toolsHide\\` to \\`true\\`.`\n        );\n      }\n    }\n\n    /**\n     * The overlap height has a default set in CSS but can also be dynamically overridden\n     * for content types (such as Table and Wizard) that have variable size content in the overlap.\n     * If a child component utilizes a sticky header the hasStickyBackground property will determine\n     * if the background remains in the same vertical position.\n     */\n    const [dynamicOverlapHeight, setDynamicOverlapHeight] = useState(0);\n    const [hasStickyBackground, setHasStickyBackground] = useState(false);\n\n    /**\n     * Set the default values for minimum and maximum content width.\n     */\n    const geckoMaxCssLength = ((1 << 30) - 1) / 60;\n    const halfGeckoMaxCssLength = geckoMaxCssLength / 2;\n    // CSS lengths in Gecko are limited to at most (1<<30)-1 app units (Gecko uses 60 as app unit).\n    // Limit the maxContentWidth to the half of the upper boundary (≈4230^2) to be on the safe side.\n    const maxContentWidth =\n      props.maxContentWidth && props.maxContentWidth > halfGeckoMaxCssLength\n        ? halfGeckoMaxCssLength\n        : props.maxContentWidth ?? 0;\n    const minContentWidth = props.minContentWidth ?? 280;\n\n    /**\n     * Determine the default state of the Navigation and Tools drawers.\n     * Mobile viewports should be closed by default under all circumstances.\n     * If the navigationOpen prop has been set then that should take precedence\n     * over the contentType prop. Desktop viewports that do not have the\n     * navigationOpen or contentType props set will use the default contentType.\n     */\n    const contentTypeDefaults = applyDefaults(contentType, { maxContentWidth, minContentWidth }, true);\n\n    /**\n     * The useControllable hook will set the default value and manage either\n     * the controlled or uncontrolled state of the Navigation drawer. The logic\n     * for determining the default state is colocated with the Navigation component.\n     *\n     * The callback that will be passed to the Navigation and MobileToolbar\n     * components to handle the click events that will change the state\n     * of the Navigation drawer. It will set the Navigation state with the\n     * useControllable hook and also fire the onNavigationChange function to\n     * emit the state change.\n     */\n    const [isNavigationOpen = false, setIsNavigationOpen] = useControllable(\n      controlledNavigationOpen,\n      props.onNavigationChange,\n      isMobile ? false : contentTypeDefaults.navigationOpen,\n      { componentName: 'AppLayout', controlledProp: 'navigationOpen', changeHandler: 'onNavigationChange' }\n    );\n\n    const { refs: navigationRefs, setFocus: focusNavButtons } = useFocusControl(isNavigationOpen);\n\n    const handleNavigationClick = useCallback(\n      function handleNavigationChange(isOpen: boolean) {\n        setIsNavigationOpen(isOpen);\n        focusNavButtons();\n        fireNonCancelableEvent(props.onNavigationChange, { open: isOpen });\n      },\n      [props.onNavigationChange, setIsNavigationOpen, focusNavButtons]\n    );\n\n    /**\n     * The useControllable hook will set the default value and manage either\n     * the controlled or uncontrolled state of the Tools drawer. The logic\n     * for determining the default state is colocated with the Tools component.\n     *\n     * The callback that will be passed to the Navigation and MobileToolbar\n     * components to handle the click events that will change the state\n     * of the Tools drawer. It will set the Tools state with the\n     * useControllable hook and also fire the onToolsChange function to\n     * emit the state change.\n     */\n    const toolsWidth = props.toolsWidth ?? 290;\n    const hasDefaultToolsWidth = props.toolsWidth === undefined;\n\n    const [isToolsOpen = false, setIsToolsOpen] = useControllable(\n      controlledToolsOpen,\n      props.onToolsChange,\n      isMobile ? false : contentTypeDefaults.toolsOpen,\n      { componentName: 'AppLayout', controlledProp: 'toolsOpen', changeHandler: 'onToolsChange' }\n    );\n\n    const {\n      refs: toolsRefs,\n      setFocus: focusToolsButtons,\n      loseFocus: loseToolsFocus,\n    } = useFocusControl(isToolsOpen, true);\n\n    const handleToolsClick = useCallback(\n      function handleToolsChange(isOpen: boolean, skipFocusControl?: boolean) {\n        setIsToolsOpen(isOpen);\n        !skipFocusControl && focusToolsButtons();\n        fireNonCancelableEvent(props.onToolsChange, { open: isOpen });\n      },\n      [props.onToolsChange, setIsToolsOpen, focusToolsButtons]\n    );\n\n    /**\n     * On mobile viewports the navigation and tools drawers are adjusted to a fixed position\n     * that consumes 100% of the viewport height and width. The body content could potentially\n     * be scrollable underneath the drawer. In order to prevent this a CSS class needs to be\n     * added to the document body that sets overflow to hidden.\n     */\n    useEffect(\n      function handleBodyScroll() {\n        if (isMobile && (isNavigationOpen || isToolsOpen)) {\n          document.body.classList.add(styles['block-body-scroll']);\n        } else {\n          document.body.classList.remove(styles['block-body-scroll']);\n        }\n\n        // Ensure the CSS class is removed from the body on side effect cleanup\n        return function cleanup() {\n          document.body.classList.remove(styles['block-body-scroll']);\n        };\n      },\n      [isMobile, isNavigationOpen, isToolsOpen]\n    );\n\n    /**\n     * The useImperativeHandle hook in conjunction with the forwardRef function\n     * in the AppLayout component definition expose the following callable\n     * functions to component consumers when they put a ref as a property on\n     * their component implementation.\n     */\n    useImperativeHandle(\n      forwardRef,\n      function createImperativeHandle() {\n        return {\n          closeNavigationIfNecessary: function () {\n            isMobile && handleNavigationClick(false);\n          },\n          openTools: function () {\n            handleToolsClick(true);\n          },\n          focusToolsClose: () => focusToolsButtons(true),\n        };\n      },\n      [isMobile, handleNavigationClick, handleToolsClick, focusToolsButtons]\n    );\n\n    /**\n     * Query the DOM for the header and footer elements based on the selectors provided\n     * by the properties and pass the heights to the custom property definitions.\n     */\n    const headerHeight = useObservedElement(headerSelector);\n    const footerHeight = useObservedElement(footerSelector);\n\n    /**\n     * Set the default values for the minimum and maximum Split Panel width when it is\n     * in the side position. The useLayoutEffect will compute the available space in the\n     * DOM for the Split Panel given the current state. The minimum and maximum\n     * widths will potentially trigger a side effect that will put the Split Panel into\n     * a forced position on the bottom.\n     */\n    const splitPanelMinWidth = 280;\n    const [splitPanelMaxWidth, setSplitPanelMaxWidth] = useState(splitPanelMinWidth);\n\n    /**\n     * The useControllable hook will set the default value and manage either\n     * the controlled or uncontrolled state of the Split Panel. By default\n     * the Split Panel should always be closed on page load.\n     *\n     * The callback that will be passed to the SplitPanel component\n     * to handle the click events that will change the state of the SplitPanel\n     * to open or closed given the current state. It will set the isSplitPanelOpen\n     * controlled state and fire the onSplitPanelToggle event.\n     */\n    const [isSplitPanelOpen, setIsSplitPanelOpen] = useControllable(\n      props.splitPanelOpen,\n      props.onSplitPanelToggle,\n      false,\n      { componentName: 'AppLayout', controlledProp: 'splitPanelOpen', changeHandler: 'onSplitPanelToggle' }\n    );\n\n    /**\n     * The useControllable hook will manage the controlled or uncontrolled\n     * state of the splitPanelPreferences. By default the splitPanelPreferences\n     * is undefined. When set the object shape should have a single key to indicate\n     * either bottom or side position.\n     *\n     * The callback that will handle changes to the splitPanelPreferences\n     * object that will determine if the SplitPanel is rendered either on the\n     * bottom of the viewport or within the Tools container.\n     */\n    const [splitPanelPreferences, setSplitPanelPreferences] = useControllable(\n      props.splitPanelPreferences,\n      props.onSplitPanelPreferencesChange,\n      undefined,\n      {\n        componentName: 'AppLayout',\n        controlledProp: 'splitPanelPreferences',\n        changeHandler: 'onSplitPanelPreferencesChange',\n      }\n    );\n\n    const { refs: splitPanelRefs, setLastInteraction: setSplitPanelLastInteraction } = useSplitPanelFocusControl([\n      splitPanelPreferences,\n      isSplitPanelOpen,\n    ]);\n\n    const handleSplitPanelClick = useCallback(\n      function handleSplitPanelChange() {\n        setIsSplitPanelOpen(!isSplitPanelOpen);\n        setSplitPanelLastInteraction({ type: isSplitPanelOpen ? 'close' : 'open' });\n        fireNonCancelableEvent(props.onSplitPanelToggle, { open: !isSplitPanelOpen });\n      },\n      [props.onSplitPanelToggle, isSplitPanelOpen, setIsSplitPanelOpen, setSplitPanelLastInteraction]\n    );\n\n    /**\n     * The Split Panel will be in forced (bottom) position if the defined minimum width is\n     * greater than the maximum width. In other words, the maximum width is the currently\n     * available horizontal space based on all other components that are rendered. If the\n     * minimum width exceeds this value then there is not enough horizontal space and we must\n     * force it to the bottom position.\n     */\n    const [isSplitPanelForcedPosition, setSplitPanelForcedPosition] = useState(false);\n    const splitPanelPosition = getSplitPanelPosition(isSplitPanelForcedPosition, splitPanelPreferences);\n\n    useLayoutEffect(\n      function handleSplitPanelForcePosition() {\n        setSplitPanelForcedPosition(splitPanelMinWidth > splitPanelMaxWidth);\n      },\n      [splitPanelMaxWidth, splitPanelMinWidth]\n    );\n\n    /**\n     * The useControllable hook will set the default size of the SplitPanel based\n     * on the default position set in the splitPanelPreferences. The logic for the\n     * default size is contained in the SplitPanel component. The splitPanelControlledSize\n     * will be bound to the size property in the SplitPanel context for rendering.\n     *\n     * The callback that will be passed to the SplitPanel component\n     * to handle the resize events that will change the size of the SplitPanel.\n     * It will set the splitPanelControlledSize controlled state and fire the\n     * onSplitPanelResize event.\n     */\n    const [splitPanelReportedSize, setSplitPanelReportedSize] = useState(0);\n    const [splitPanelReportedHeaderHeight, setSplitPanelReportedHeaderHeight] = useState(0);\n    const [splitPanelToggle, setSplitPanelToggle] = useState<SplitPanelSideToggleProps>({\n      displayed: false,\n      ariaLabel: undefined,\n    });\n    const splitPanelDisplayed = !!(splitPanelToggle.displayed || isSplitPanelOpen);\n\n    const [splitPanelSize, setSplitPanelSize] = useControllable(\n      props.splitPanelSize,\n      props.onSplitPanelResize,\n      getSplitPanelDefaultSize(splitPanelPosition),\n      { componentName: 'AppLayout', controlledProp: 'splitPanelSize', changeHandler: 'onSplitPanelResize' }\n    );\n\n    const handleSplitPanelResize = useCallback(\n      function handleSplitPanelChange(detail: { size: number }) {\n        setSplitPanelSize(detail.size);\n        fireNonCancelableEvent(props.onSplitPanelResize, detail);\n      },\n      [props.onSplitPanelResize, setSplitPanelSize]\n    );\n\n    const handleSplitPanelPreferencesChange = useCallback(\n      function handleSplitPanelChange(detail: AppLayoutProps.SplitPanelPreferences) {\n        setSplitPanelPreferences(detail);\n        setSplitPanelLastInteraction({ type: 'position' });\n        fireNonCancelableEvent(props.onSplitPanelPreferencesChange, detail);\n      },\n      [props.onSplitPanelPreferencesChange, setSplitPanelPreferences, setSplitPanelLastInteraction]\n    );\n\n    /**\n     * The activeDrawerWidth is required in JavaScript to acccurately calculate whether a SplitPanel\n     * in the side position should be forced to the bottom based on available horiziontal space.\n     *\n     * The handleDrawersClick will either open a new drawer or close the currently open drawer by setting\n     * the activeDrawerId value. The active drawer can also be closed if a user clicks the Tools trigger\n     * button. This will skip the focus handling because the focus should be going to the Tools close\n     * button and not one of the drawers trigger buttons.\n     *\n     * The drawersTriggerCount is computed in order to determine whether the triggers should be persistent\n     * in the UI when a drawer is open. The trigger button container is suppressed when a drawer is open\n     * and their is only one trigger button.\n     *\n     * The hasDrawerViewportOverlay property is used to determine if any drawer is obscuring the entire\n     * viewport. This currently applies to Navigation, Tools, and Drawers in mobile viewports.\n     */\n    const drawers = (props as any).drawers;\n\n    const [activeDrawerId, setActiveDrawerId] = useControllable(drawers?.activeDrawerId, drawers?.onChange, null, {\n      componentName: 'AppLayout',\n      controlledProp: 'drawers.activeDrawerId',\n      changeHandler: 'onChange',\n    });\n\n    const activeDrawerWidth = 290;\n\n    const { refs: drawersRefs, setFocus: focusDrawersButtons } = useFocusControl(activeDrawerId);\n\n    const handleDrawersClick = useCallback(\n      function handleDrawersChange(id: string | null, skipFocusControl?: boolean) {\n        const newActiveDrawerId = id !== activeDrawerId ? id : null;\n\n        setActiveDrawerId(newActiveDrawerId);\n        !skipFocusControl && focusDrawersButtons();\n        fireNonCancelableEvent(drawers?.onChange, newActiveDrawerId);\n      },\n      [activeDrawerId, drawers?.onChange, focusDrawersButtons, setActiveDrawerId]\n    );\n\n    const drawersTriggerCount =\n      (drawers?.items.length ?? 0) +\n      (splitPanelDisplayed && splitPanelPosition === 'side' ? 1 : 0) +\n      (!toolsHide ? 1 : 0);\n    const hasOpenDrawer =\n      activeDrawerId || isToolsOpen || (splitPanelDisplayed && splitPanelPosition === 'side' && isSplitPanelOpen);\n    const hasDrawerViewportOverlay =\n      isMobile && (!!activeDrawerId || (!navigationHide && isNavigationOpen) || (!toolsHide && isToolsOpen));\n\n    /**\n     * The Layout element is not necessarily synonymous with the client\n     * viewport width. There can be content in the horizontal viewport\n     * that exists on either side of the AppLayout. This resize observer\n     * will set the custom property of the Layout element width that\n     * is used for various horizontal constraints such as the maximum\n     * allowed width of the Tools container.\n     *\n     * The offsetLeft of the Main will return the distance that the\n     * Main element has from the left edge of the Layout component.\n     * The offsetLeft value can vary based on the presence and state\n     * of the Navigation as well as content gaps in the grid definition.\n     * This value is used to determine the max width constraint calculation\n     * for the Tools container.\n     */\n    const [layoutContainerQuery, layoutElement] = useContainerQuery(rect => rect.width);\n    const layoutWidth = layoutContainerQuery ?? 0;\n\n    const mainElement = useRef<HTMLDivElement>(null);\n    const [mainOffsetLeft, setMainOffsetLeft] = useState(0);\n\n    useLayoutEffect(\n      function handleMainOffsetLeft() {\n        setMainOffsetLeft(mainElement?.current?.offsetLeft ?? 0);\n      },\n      [layoutWidth, isNavigationOpen, isToolsOpen, splitPanelReportedSize]\n    );\n\n    /**\n     * Because the notifications slot does not give us any direction insight into\n     * what the state of the child content is we need to have a mechanism for\n     * tracking the height of the notifications and whether or not it has content.\n     * The height of the notifications is an integer that will be used as a custom\n     * property on the Layout component to determine what the sticky offset should\n     * be if there are sticky notifications. This could be any number including\n     * zero based on how the child content renders. The hasNotificationsContent boolean\n     * is simply centralizing the logic of the notifications height being > 0 such\n     * that it is not repeated in various components (such as MobileToolbar) that need to\n     * know if the notifications slot is empty.\n     */\n    const [notificationsContainerQuery, notificationsElement] = useContainerQuery(rect => rect.height);\n    const [notificationsHeight, setNotificationsHeight] = useState(0);\n    const [hasNotificationsContent, setHasNotificationsContent] = useState(false);\n\n    useEffect(\n      function handleNotificationsContent() {\n        setNotificationsHeight(notificationsContainerQuery ?? 0);\n        setHasNotificationsContent(notificationsContainerQuery && notificationsContainerQuery > 0 ? true : false);\n      },\n      [notificationsContainerQuery]\n    );\n\n    /**\n     * Determine the offsetBottom value based on the presence of a footer element and\n     * the SplitPanel component. Ignore the SplitPanel if it is not in the bottom\n     * position. Use the size property if it is open and the header height if it is closed.\n     */\n    let offsetBottom = footerHeight;\n\n    if (splitPanelDisplayed && splitPanelPosition === 'bottom') {\n      if (isSplitPanelOpen) {\n        offsetBottom += splitPanelReportedSize;\n      } else {\n        offsetBottom += splitPanelReportedHeaderHeight;\n      }\n    }\n\n    /**\n     * Warning! This is a hack! In order to accurately calculate if there is adequate\n     * horizontal space for the Split Panel to be in the side position we need two values\n     * that are not available in JavaScript.\n     *\n     * The first is the the content gap on the right which is stored in a design token\n     * and applied in the Layout CSS:\n     *\n     * $contentGapRight: #{awsui.$space-scaled-2x-xxxl};\n     *\n     * The second is the width of the element that has the circular buttons for the\n     * Tools and Split Panel. This could be suppressed given the state of the Tools\n     * drawer returning a zero value. It would, however, be rendered if the Split Panel\n     * were to move into the side position. This is calculated in the Tools CSS and\n     * the Trigger button CSS with design tokens:\n     *\n     * padding: awsui.$space-scaled-s awsui.$space-layout-toggle-padding;\n     * width: awsui.$space-layout-toggle-diameter;\n     *\n     * These values will be defined below as static integers that are rough approximations\n     * of their computed width when rendered in the DOM, but doubled to ensure adequate\n     * spacing for the Split Panel to be in side position.\n     */\n    useLayoutEffect(\n      function handleSplitPanelMaxWidth() {\n        const contentGapRight = 80; // Approximately 40px when rendered but doubled for safety\n        const toolsFormOffsetWidth = 160; // Approximately 80px when rendered but doubled for safety\n        const toolsOffsetWidth = isToolsOpen ? toolsWidth : 0;\n        const activeDrawerOffsetWidth = activeDrawerId ? activeDrawerWidth : 0;\n\n        setSplitPanelMaxWidth(\n          layoutWidth -\n            mainOffsetLeft -\n            minContentWidth -\n            contentGapRight -\n            toolsOffsetWidth -\n            toolsFormOffsetWidth -\n            activeDrawerOffsetWidth\n        );\n      },\n      [\n        activeDrawerId,\n        activeDrawerWidth,\n        isNavigationOpen,\n        isToolsOpen,\n        layoutWidth,\n        mainOffsetLeft,\n        minContentWidth,\n        toolsWidth,\n      ]\n    );\n\n    return (\n      <AppLayoutInternalsContext.Provider\n        value={{\n          ...props,\n          activeDrawerId,\n          activeDrawerWidth,\n          contentType,\n          drawers,\n          drawersRefs,\n          drawersTriggerCount,\n          dynamicOverlapHeight,\n          headerHeight,\n          footerHeight,\n          hasDefaultToolsWidth,\n          hasDrawerViewportOverlay,\n          handleDrawersClick,\n          handleNavigationClick,\n          handleSplitPanelClick,\n          handleSplitPanelPreferencesChange,\n          handleSplitPanelResize,\n          handleToolsClick,\n          hasNotificationsContent,\n          hasOpenDrawer,\n          hasStickyBackground,\n          isMobile,\n          isNavigationOpen: isNavigationOpen ?? false,\n          isSplitPanelForcedPosition,\n          isSplitPanelOpen,\n          isToolsOpen,\n          layoutElement,\n          layoutWidth,\n          loseToolsFocus,\n          mainElement,\n          mainOffsetLeft,\n          maxContentWidth,\n          minContentWidth,\n          navigationHide,\n          navigationRefs,\n          notificationsElement,\n          notificationsHeight,\n          offsetBottom,\n          setHasStickyBackground,\n          setSplitPanelReportedSize,\n          setSplitPanelReportedHeaderHeight,\n          splitPanel,\n          splitPanelDisplayed,\n          splitPanelMaxWidth,\n          splitPanelMinWidth,\n          splitPanelPosition,\n          splitPanelPreferences,\n          splitPanelReportedSize,\n          splitPanelReportedHeaderHeight,\n          splitPanelSize,\n          splitPanelToggle,\n          setSplitPanelToggle,\n          splitPanelRefs,\n          toolsHide,\n          toolsOpen: isToolsOpen,\n          toolsWidth,\n          toolsRefs,\n        }}\n      >\n        <AppLayoutContext.Provider\n          value={{\n            stickyOffsetBottom: offsetBottom,\n            stickyOffsetTop: 0, // not used in this design. Sticky headers read a CSS-var instead\n            setHasStickyBackground,\n          }}\n        >\n          <DynamicOverlapContext.Provider value={setDynamicOverlapHeight}>{children}</DynamicOverlapContext.Provider>\n        </AppLayoutContext.Provider>\n      </AppLayoutInternalsContext.Provider>\n    );\n  }\n);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useAppLayoutInternals } from './context';\nimport styles from './styles.css.js';\n\nexport default function Background() {\n  const {\n    breadcrumbs,\n    contentHeader,\n    dynamicOverlapHeight,\n    hasNotificationsContent,\n    hasStickyBackground,\n    isMobile,\n    stickyNotifications,\n  } = useAppLayoutInternals();\n\n  if (!hasNotificationsContent && (!breadcrumbs || isMobile) && !contentHeader && dynamicOverlapHeight <= 0) {\n    return null;\n  }\n\n  return (\n    <div className={clsx(styles.background, 'awsui-context-content-header')}>\n      <div className={styles['scrolling-background']} />\n\n      {!isMobile && hasStickyBackground && (\n        <div\n          className={clsx(styles['sticky-background'], {\n            [styles['has-sticky-notifications']]: stickyNotifications,\n          })}\n        />\n      )}\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useAppLayoutInternals } from './context';\nimport styles from './styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\n\nexport default function Breadcrumbs() {\n  const { breadcrumbs, hasStickyBackground, isMobile } = useAppLayoutInternals();\n\n  if (isMobile || !breadcrumbs) {\n    return null;\n  }\n\n  return (\n    <div\n      className={clsx(\n        styles.breadcrumbs,\n        testutilStyles.breadcrumbs,\n        {\n          [styles['has-sticky-background']]: hasStickyBackground,\n        },\n        'awsui-context-content-header'\n      )}\n    >\n      {breadcrumbs}\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport Icon from '../../icon/internal';\nimport styles from './styles.css.js';\nimport { ButtonProps } from '../../button/interfaces';\nimport { IconProps } from '../../icon/interfaces';\n\nexport interface TriggerButtonProps {\n  ariaLabel?: string;\n  className?: string;\n  iconName?: IconProps.Name;\n  iconSvg?: React.ReactNode;\n  onClick: React.MouseEventHandler<HTMLButtonElement>;\n  selected?: boolean;\n}\n\nfunction TriggerButton(\n  { ariaLabel, className, iconName, iconSvg, onClick, selected = false }: TriggerButtonProps,\n  ref: React.Ref<ButtonProps.Ref>\n) {\n  return (\n    <button\n      aria-expanded={false}\n      aria-haspopup={true}\n      aria-label={ariaLabel}\n      className={clsx(\n        styles.trigger,\n        {\n          [styles.selected]: selected,\n        },\n        className\n      )}\n      onClick={onClick}\n      ref={ref as React.Ref<HTMLButtonElement>}\n      type=\"button\"\n    >\n      {iconName && !iconSvg && <Icon name={iconName} />}\n      {iconSvg}\n    </button>\n  );\n}\n\nexport default React.forwardRef(TriggerButton);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef } from 'react';\nimport clsx from 'clsx';\nimport customCssProps from '../../internal/generated/custom-css-properties';\nimport { IconProps } from '../../icon/interfaces';\nimport { InternalButton } from '../../button/internal';\nimport { NonCancelableEventHandler } from '../../internal/events';\nimport SplitPanel from './split-panel';\nimport TriggerButton from './trigger-button';\nimport { useAppLayoutInternals } from './context';\nimport splitPanelStyles from '../../split-panel/styles.css.js';\nimport styles from './styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\n\nexport interface DrawersProps {\n  activeDrawerId?: string;\n  items: ReadonlyArray<DrawersProps.Drawer>;\n  onChange?: NonCancelableEventHandler<DrawersProps.ChangeDetail>;\n  ariaLabel?: string;\n}\n\nnamespace DrawersProps {\n  export interface Drawer {\n    ariaLabels?: Labels;\n    content: React.ReactNode;\n    id: string;\n    trigger: Trigger;\n  }\n\n  export interface ChangeDetail {\n    activeDrawerId: string | null;\n  }\n\n  interface Labels {\n    closeButton?: string;\n    content?: string;\n    triggerButton?: string;\n    resizeHandle?: string;\n  }\n  interface Trigger {\n    iconName?: IconProps.Name;\n    iconSvg?: React.ReactNode;\n    iconUrl?: string;\n  }\n}\n\n/**\n * The Drawers root component is mounted in the AppLayout index file. It will only\n * render if the drawers are defined, and it will take over the mounting of and\n * rendering of the Tools and SplitPanel (side position) if they exist. If drawers\n * do not exist then the Tools and SplitPanel will be handled by the Tools component.\n */\nexport default function Drawers() {\n  const { disableBodyScroll, drawers, hasDrawerViewportOverlay, hasOpenDrawer, isNavigationOpen, navigationHide } =\n    useAppLayoutInternals();\n\n  const isUnfocusable = hasDrawerViewportOverlay && isNavigationOpen && !navigationHide;\n\n  if (!drawers) {\n    return null;\n  }\n\n  return (\n    <div\n      className={clsx(styles['drawers-container'], {\n        [styles['disable-body-scroll']]: disableBodyScroll,\n        [styles['has-open-drawer']]: hasOpenDrawer,\n        [styles.unfocusable]: isUnfocusable,\n      })}\n    >\n      <SplitPanel.Side />\n      <ActiveDrawer />\n      <DesktopTriggers />\n    </div>\n  );\n}\n\n/**\n * The ActiveDrawer component will render either the drawer content that corresponds\n * to the activeDrawerId or the Tools content if it exists and isToolsOpen is true.\n * The aria labels, click handling, and focus handling will be updated dynamically\n * based on the active drawer or tools content.\n */\nfunction ActiveDrawer() {\n  const {\n    activeDrawerId,\n    activeDrawerWidth,\n    ariaLabels,\n    drawers,\n    drawersRefs,\n    handleDrawersClick,\n    handleToolsClick,\n    hasDrawerViewportOverlay,\n    isMobile,\n    isNavigationOpen,\n    isToolsOpen,\n    navigationHide,\n    tools,\n    toolsRefs,\n  } = useAppLayoutInternals();\n\n  const activeDrawer = drawers?.items.find((item: any) => item.id === activeDrawerId) ?? null;\n\n  const computedAriaLabels = {\n    closeButton: activeDrawerId ? activeDrawer?.ariaLabels?.closeButton : ariaLabels?.toolsClose,\n    content: activeDrawerId ? activeDrawer?.ariaLabels?.content : ariaLabels?.tools,\n  };\n\n  const isHidden = !activeDrawerId && !isToolsOpen;\n  const isUnfocusable = isHidden || (hasDrawerViewportOverlay && isNavigationOpen && !navigationHide);\n\n  return (\n    <aside\n      aria-hidden={isHidden}\n      aria-label={computedAriaLabels.content}\n      className={clsx(styles.drawer, {\n        [styles['is-drawer-open']]: activeDrawerId || isToolsOpen,\n        [styles.unfocusable]: isUnfocusable,\n        [testutilStyles['active-drawer']]: activeDrawerId,\n        [testutilStyles.tools]: isToolsOpen,\n      })}\n      style={{\n        ...(!isMobile && activeDrawerWidth && { [customCssProps.activeDrawerWidth]: `${activeDrawerWidth}px` }),\n      }}\n    >\n      <div className={clsx(styles['drawer-close-button'])}>\n        <InternalButton\n          ariaLabel={computedAriaLabels.closeButton}\n          className={clsx({\n            [testutilStyles['active-drawer-close-button']]: activeDrawerId,\n            [testutilStyles['tools-close']]: isToolsOpen,\n          })}\n          formAction=\"none\"\n          iconName={isMobile ? 'close' : 'angle-right'}\n          onClick={() => (activeDrawerId ? handleDrawersClick(activeDrawerId ?? null) : handleToolsClick(false))}\n          ref={isToolsOpen ? toolsRefs.close : drawersRefs.close}\n          variant=\"icon\"\n        />\n      </div>\n\n      <div className={styles['drawer-content']}>\n        {activeDrawerId && activeDrawer?.content}\n        {isToolsOpen && tools}\n      </div>\n    </aside>\n  );\n}\n\n/**\n * The DesktopTriggers will render the trigger buttons for Tools, Drawers, and the\n * SplitPanel in non mobile viewports. Changes to the activeDrawerId need to be\n * tracked by the previousActiveDrawerId property in order to appropriately apply\n * the ref required to manage focus control.\n */\nfunction DesktopTriggers() {\n  const {\n    activeDrawerId,\n    ariaLabels,\n    drawers,\n    drawersRefs,\n    drawersTriggerCount,\n    handleDrawersClick,\n    handleSplitPanelClick,\n    handleToolsClick,\n    hasOpenDrawer,\n    isMobile,\n    isSplitPanelOpen,\n    isToolsOpen,\n    splitPanel,\n    splitPanelDisplayed,\n    splitPanelPosition,\n    splitPanelRefs,\n    splitPanelToggle,\n    tools,\n    toolsHide,\n    toolsRefs,\n  } = useAppLayoutInternals();\n\n  const hasMultipleTriggers = drawersTriggerCount > 1;\n  const hasSplitPanel = splitPanel && splitPanelDisplayed && splitPanelPosition === 'side' ? true : false;\n  const previousActiveDrawerId = useRef(activeDrawerId);\n\n  if (activeDrawerId) {\n    previousActiveDrawerId.current = activeDrawerId;\n  }\n\n  if (isMobile) {\n    return null;\n  }\n\n  return (\n    <aside\n      className={clsx(\n        styles['drawers-desktop-triggers-container'],\n        testutilStyles['drawers-desktop-triggers-container'],\n        {\n          [styles['has-multiple-triggers']]: hasMultipleTriggers,\n          [styles['has-open-drawer']]: hasOpenDrawer,\n        }\n      )}\n      aria-label={drawers.ariaLabel}\n    >\n      <div\n        className={clsx(styles['drawers-trigger-content'], {\n          [styles['has-multiple-triggers']]: hasMultipleTriggers,\n          [styles['has-open-drawer']]: hasOpenDrawer,\n        })}\n      >\n        {!toolsHide && tools && (\n          <TriggerButton\n            ariaLabel={ariaLabels?.toolsToggle}\n            className={clsx(styles['drawers-trigger'], testutilStyles['tools-toggle'])}\n            iconName=\"status-info\"\n            onClick={() => {\n              activeDrawerId && handleDrawersClick(null, true);\n              handleToolsClick(!isToolsOpen);\n            }}\n            ref={toolsRefs.toggle}\n            selected={isToolsOpen}\n          />\n        )}\n\n        {drawers.items.map((item: DrawersProps.Drawer) => (\n          <TriggerButton\n            ariaLabel={item.ariaLabels?.triggerButton}\n            className={clsx(styles['drawers-trigger'], testutilStyles['drawers-trigger'])}\n            iconName={item.trigger.iconName}\n            iconSvg={item.trigger.iconSvg}\n            key={item.id}\n            onClick={() => {\n              isToolsOpen && handleToolsClick(!isToolsOpen, true);\n              handleDrawersClick(item.id);\n            }}\n            ref={item.id === previousActiveDrawerId.current ? drawersRefs.toggle : undefined}\n            selected={item.id === activeDrawerId}\n          />\n        ))}\n\n        {hasSplitPanel && splitPanelToggle.displayed && (\n          <TriggerButton\n            ariaLabel={splitPanelToggle.ariaLabel}\n            className={clsx(styles['drawers-trigger'], splitPanelStyles['open-button'])}\n            iconName=\"view-vertical\"\n            onClick={() => handleSplitPanelClick()}\n            selected={hasSplitPanel && isSplitPanelOpen}\n            ref={splitPanelRefs.toggle}\n          />\n        )}\n      </div>\n    </aside>\n  );\n}\n\n/**\n * The MobileTriggers will be mounted inside of the AppBar component and\n * only rendered when Drawers are defined in mobile viewports. The same logic\n * will in the AppBar component will suppress the rendering of the legacy\n * trigger button for the Tools drawer.\n */\nexport function MobileTriggers() {\n  const {\n    activeDrawerId,\n    ariaLabels,\n    drawers,\n    drawersRefs,\n    handleDrawersClick,\n    handleToolsClick,\n    hasDrawerViewportOverlay,\n    isMobile,\n    isToolsOpen,\n    tools,\n    toolsHide,\n    toolsRefs,\n  } = useAppLayoutInternals();\n\n  const previousActiveDrawerId = useRef(activeDrawerId);\n\n  if (activeDrawerId) {\n    previousActiveDrawerId.current = activeDrawerId;\n  }\n\n  if (!isMobile || !drawers) {\n    return null;\n  }\n\n  return (\n    <aside\n      aria-hidden={hasDrawerViewportOverlay}\n      className={clsx(\n        styles['drawers-mobile-triggers-container'],\n        testutilStyles['drawers-mobile-triggers-container'],\n        {\n          [styles.unfocusable]: hasDrawerViewportOverlay,\n        }\n      )}\n      aria-label={drawers.ariaLabel}\n    >\n      {!toolsHide && tools && (\n        <InternalButton\n          ariaLabel={ariaLabels?.toolsToggle ?? undefined}\n          ariaExpanded={isToolsOpen}\n          className={testutilStyles['tools-toggle']}\n          disabled={hasDrawerViewportOverlay}\n          formAction=\"none\"\n          iconName=\"status-info\"\n          onClick={() => handleToolsClick(true)}\n          ref={toolsRefs.toggle}\n          variant=\"icon\"\n          __nativeAttributes={{ 'aria-haspopup': true }}\n        />\n      )}\n\n      {drawers.items.map((item: DrawersProps.Drawer) => (\n        <InternalButton\n          ariaExpanded={item.id === activeDrawerId}\n          ariaLabel={item.ariaLabels?.triggerButton}\n          className={clsx(styles['drawers-trigger'], testutilStyles['drawers-trigger'])}\n          disabled={hasDrawerViewportOverlay}\n          formAction=\"none\"\n          iconName={item.trigger.iconName}\n          iconSvg={item.trigger.iconSvg}\n          key={item.id}\n          onClick={() => handleDrawersClick(item.id)}\n          ref={item.id === previousActiveDrawerId.current ? drawersRefs.toggle : undefined}\n          variant=\"icon\"\n          __nativeAttributes={{ 'aria-haspopup': true }}\n        />\n      ))}\n    </aside>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useAppLayoutInternals } from './context';\nimport styles from './styles.css.js';\n\nexport default function Header() {\n  const { breadcrumbs, contentHeader, hasDrawerViewportOverlay, hasNotificationsContent } = useAppLayoutInternals();\n\n  if (!contentHeader) {\n    return null;\n  }\n\n  return (\n    <header\n      className={clsx(\n        styles.content,\n        {\n          [styles['has-breadcrumbs']]: breadcrumbs,\n          [styles['has-notifications-content']]: hasNotificationsContent,\n          [styles.unfocusable]: hasDrawerViewportOverlay,\n        },\n        'awsui-context-content-header'\n      )}\n    >\n      {contentHeader}\n    </header>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport customCssProps from '../../internal/generated/custom-css-properties';\nimport { useAppLayoutInternals } from './context';\nimport styles from './styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\n\ninterface LayoutProps {\n  children: React.ReactNode;\n}\n\n/**\n * The layoutElement ref will be used by the resize observers to calculate the offset from\n * the top and bottom of the viewport based on the header and footer elements. This is to\n * ensure the Layout component minimum height will fill 100% of the viewport less those\n * cumulative heights.\n */\nexport default function Layout({ children }: LayoutProps) {\n  const {\n    breadcrumbs,\n    contentHeader,\n    contentType,\n    disableBodyScroll,\n    disableContentHeaderOverlap,\n    disableContentPaddings,\n    drawersTriggerCount,\n    dynamicOverlapHeight,\n    footerHeight,\n    hasNotificationsContent,\n    hasStickyBackground,\n    hasOpenDrawer,\n    headerHeight,\n    isMobile,\n    isNavigationOpen,\n    layoutElement,\n    layoutWidth,\n    mainOffsetLeft,\n    maxContentWidth,\n    minContentWidth,\n    navigationHide,\n    notificationsHeight,\n    splitPanelPosition,\n    stickyNotifications,\n    splitPanelDisplayed,\n  } = useAppLayoutInternals();\n\n  // Determine the first content child so the gap will vertically align with the trigger buttons\n  const contentFirstChild = getContentFirstChild(breadcrumbs, contentHeader, hasNotificationsContent, isMobile);\n\n  // Content gaps on the left and right are used with the minmax function in the CSS grid column definition\n  const hasContentGapLeft = isNavigationOpen || navigationHide;\n  const hasContentGapRight = drawersTriggerCount <= 0 || hasOpenDrawer;\n\n  /**\n   * The disableContentHeaderOverlap property is absolute and will always disable the overlap\n   * if it is set to true. If there is no contentHeader then the overlap should be disabled\n   * unless there is a dynamicOverlapHeight. The dynamicOverlapHeight property is set by a\n   * component in the content slot that needs to manually control the overlap height.\n   */\n  const isOverlapDisabled = disableContentHeaderOverlap || (!contentHeader && dynamicOverlapHeight <= 0);\n\n  return (\n    <main\n      className={clsx(\n        styles.layout,\n        styles[`content-first-child-${contentFirstChild}`],\n        styles[`content-type-${contentType}`],\n        styles[`split-panel-position-${splitPanelPosition ?? 'bottom'}`],\n        {\n          [styles['disable-body-scroll']]: disableBodyScroll,\n          [testutilStyles['disable-body-scroll-root']]: disableBodyScroll,\n          [styles['disable-content-paddings']]: disableContentPaddings,\n          [styles['has-breadcrumbs']]: breadcrumbs && !isMobile,\n          [styles['has-content-gap-left']]: hasContentGapLeft,\n          [styles['has-content-gap-right']]: hasContentGapRight,\n          [styles['has-header']]: contentHeader,\n          [styles['has-max-content-width']]: maxContentWidth && maxContentWidth > 0,\n          [styles['has-split-panel']]: splitPanelDisplayed,\n          [styles['has-sticky-background']]: hasStickyBackground,\n          [styles['has-sticky-notifications']]: stickyNotifications && hasNotificationsContent,\n          [styles['is-overlap-disabled']]: isOverlapDisabled,\n        },\n        testutilStyles.root\n      )}\n      ref={layoutElement}\n      style={{\n        [customCssProps.headerHeight]: `${headerHeight}px`,\n        [customCssProps.footerHeight]: `${footerHeight}px`,\n        [customCssProps.layoutWidth]: `${layoutWidth}px`,\n        [customCssProps.mainOffsetLeft]: `${mainOffsetLeft}px`,\n        ...(maxContentWidth && { [customCssProps.maxContentWidth]: `${maxContentWidth}px` }),\n        ...(minContentWidth && { [customCssProps.minContentWidth]: `${minContentWidth}px` }),\n        [customCssProps.notificationsHeight]: `${notificationsHeight}px`,\n        ...(!isOverlapDisabled &&\n          dynamicOverlapHeight > 0 && { [customCssProps.overlapHeight]: `${dynamicOverlapHeight}px` }),\n      }}\n    >\n      {children}\n    </main>\n  );\n}\n\n/*\nThe Notifications, Breadcrumbs, Header, and Main are all rendered in the center\ncolumn of the grid layout. Any of these could be the first child to render in the \ncontent area if the previous siblings do not exist. The grid gap before the first \nchild will be different to ensure vertical alignment with the trigger buttons.\n*/\nfunction getContentFirstChild(\n  breadcrumbs: React.ReactNode,\n  contentHeader: React.ReactNode,\n  hasNotificationsContent: boolean,\n  isMobile: boolean\n) {\n  let contentFirstChild = 'main';\n\n  if (hasNotificationsContent) {\n    contentFirstChild = 'notifications';\n  } else if (breadcrumbs && !isMobile) {\n    contentFirstChild = 'breadcrumbs';\n  } else if (contentHeader) {\n    contentFirstChild = 'header';\n  }\n\n  return contentFirstChild;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useAppLayoutInternals } from './context';\nimport customCssProps from '../../internal/generated/custom-css-properties';\nimport styles from './styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\n\nexport default function Main() {\n  const {\n    content,\n    disableContentPaddings,\n    footerHeight,\n    hasDrawerViewportOverlay,\n    isNavigationOpen,\n    isSplitPanelOpen,\n    isToolsOpen,\n    mainElement,\n    offsetBottom,\n    splitPanelDisplayed,\n    splitPanelPosition,\n  } = useAppLayoutInternals();\n\n  const splitPanelHeight = offsetBottom - footerHeight;\n\n  return (\n    <div\n      className={clsx(\n        styles.container,\n        styles[`split-panel-position-${splitPanelPosition ?? 'bottom'}`],\n        {\n          [styles['disable-content-paddings']]: disableContentPaddings,\n          [styles['has-split-panel']]: splitPanelDisplayed,\n          [styles['is-navigation-open']]: isNavigationOpen,\n          [styles['is-tools-open']]: isToolsOpen,\n          [styles['is-split-panel-open']]: isSplitPanelOpen,\n          [styles.unfocusable]: hasDrawerViewportOverlay,\n        },\n        testutilStyles.content\n      )}\n      ref={mainElement}\n      style={{\n        [customCssProps.splitPanelHeight]: `${splitPanelHeight}px`,\n      }}\n    >\n      {content}\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { InternalButton } from '../../button/internal';\nimport { MobileTriggers as DrawersMobileTriggers } from './drawers';\nimport { useAppLayoutInternals } from './context';\nimport styles from './styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\n\nexport default function MobileToolbar() {\n  const {\n    ariaLabels,\n    breadcrumbs,\n    drawers,\n    handleNavigationClick,\n    handleToolsClick,\n    hasDrawerViewportOverlay,\n    isMobile,\n    isNavigationOpen,\n    isToolsOpen,\n    navigationHide,\n    navigationRefs,\n    toolsHide,\n    toolsRefs,\n  } = useAppLayoutInternals();\n\n  if (!isMobile || (navigationHide && !breadcrumbs && toolsHide && !drawers)) {\n    return null;\n  }\n\n  return (\n    <section\n      className={clsx(\n        styles['mobile-toolbar'],\n        {\n          [styles['has-breadcrumbs']]: breadcrumbs,\n          [styles.unfocusable]: hasDrawerViewportOverlay,\n          [testutilStyles['mobile-bar']]: isMobile,\n        },\n        testutilStyles['mobile-bar'],\n        'awsui-context-content-header'\n      )}\n    >\n      {!navigationHide && (\n        <nav\n          aria-hidden={isNavigationOpen}\n          className={clsx(styles['mobile-toolbar-nav'], { [testutilStyles['drawer-closed']]: !isNavigationOpen })}\n        >\n          <InternalButton\n            ariaLabel={ariaLabels?.navigationToggle ?? undefined}\n            ariaExpanded={isNavigationOpen ? undefined : false}\n            iconName=\"menu\"\n            formAction=\"none\"\n            onClick={() => handleNavigationClick(true)}\n            variant=\"icon\"\n            className={testutilStyles['navigation-toggle']}\n            ref={navigationRefs.toggle}\n            disabled={hasDrawerViewportOverlay}\n            __nativeAttributes={{ 'aria-haspopup': isNavigationOpen ? undefined : true }}\n          />\n        </nav>\n      )}\n\n      {breadcrumbs && (\n        <div className={clsx(styles['mobile-toolbar-breadcrumbs'], testutilStyles.breadcrumbs)}>{breadcrumbs}</div>\n      )}\n\n      {isMobile && !toolsHide && !drawers && (\n        <aside\n          aria-hidden={isToolsOpen}\n          aria-label={ariaLabels?.tools ?? undefined}\n          className={clsx(styles['mobile-toolbar-tools'], { [testutilStyles['drawer-closed']]: !isToolsOpen })}\n        >\n          <InternalButton\n            className={testutilStyles['tools-toggle']}\n            ariaExpanded={isToolsOpen}\n            disabled={hasDrawerViewportOverlay}\n            ariaLabel={ariaLabels?.toolsToggle ?? undefined}\n            iconName=\"status-info\"\n            formAction=\"none\"\n            onClick={() => handleToolsClick(true)}\n            variant=\"icon\"\n            ref={toolsRefs.toggle}\n            __nativeAttributes={{ 'aria-haspopup': true }}\n          />\n        </aside>\n      )}\n\n      <DrawersMobileTriggers />\n    </section>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useAppLayoutInternals } from './context';\nimport { InternalButton } from '../../button/internal';\nimport TriggerButton from './trigger-button';\nimport styles from './styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\nimport { Transition } from '../../internal/components/transition';\nimport { findUpUntil } from '../../internal/utils/dom';\nimport customCssProps from '../../internal/generated/custom-css-properties';\n\n/**\n * The Navigation component consists of the following elements:\n * the container, or root element, that sits as a direct child to the Layout grid definition;\n * the show navigation form that contains the trigger for the drawer in large viewports;\n * the navigation, or drawer, that contains the hide navigation form and the children\n * passed through the API;\n */\nexport default function Navigation() {\n  const {\n    ariaLabels,\n    disableBodyScroll,\n    handleNavigationClick,\n    hasDrawerViewportOverlay,\n    isMobile,\n    isNavigationOpen,\n    isToolsOpen,\n    navigation,\n    navigationHide,\n    navigationRefs,\n    navigationWidth,\n    toolsHide,\n  } = useAppLayoutInternals();\n\n  if (navigationHide) {\n    return null;\n  }\n\n  // Close the Navigation drawer on mobile when a user clicks a link inside.\n  const onNavigationClick = (event: React.MouseEvent) => {\n    const hasLink = findUpUntil(\n      event.target as HTMLElement,\n      node => node.tagName === 'A' && !!(node as HTMLAnchorElement).href\n    );\n    if (hasLink && isMobile) {\n      handleNavigationClick(false);\n    }\n  };\n\n  const isUnfocusable = hasDrawerViewportOverlay && (!isNavigationOpen || (isToolsOpen && !toolsHide));\n\n  return (\n    <Transition in={isNavigationOpen}>\n      {(state, transitionEventsRef) => (\n        <div\n          className={clsx(styles['navigation-container'], {\n            [styles['disable-body-scroll']]: disableBodyScroll,\n            [styles.unfocusable]: isUnfocusable,\n            [testutilStyles['drawer-closed']]: !isNavigationOpen,\n          })}\n          // Overwrite the default nav width (depends on breakpoints) only when the `navigationWidth` property is set.\n          style={{ ...(navigationWidth && { [customCssProps.navigationWidth]: `${navigationWidth}px` }) }}\n        >\n          {!isMobile && (\n            <nav\n              aria-hidden={isMobile || isNavigationOpen ? true : false}\n              aria-label={ariaLabels?.navigation ?? undefined}\n              className={clsx(styles['show-navigation'], {\n                [styles.animating]: state === 'exiting',\n                [styles['is-navigation-open']]: isNavigationOpen,\n              })}\n              ref={state === 'exiting' ? transitionEventsRef : undefined}\n            >\n              <TriggerButton\n                ariaLabel={ariaLabels?.navigationToggle}\n                iconName=\"menu\"\n                className={testutilStyles['navigation-toggle']}\n                onClick={() => handleNavigationClick(true)}\n                ref={navigationRefs.toggle}\n              />\n            </nav>\n          )}\n\n          <nav\n            aria-label={ariaLabels?.navigation ?? undefined}\n            className={clsx(\n              styles.navigation,\n              {\n                [styles.animating]: state === 'entering',\n                [styles['is-navigation-open']]: isNavigationOpen,\n              },\n              testutilStyles.navigation\n            )}\n            ref={state !== 'exiting' ? transitionEventsRef : undefined}\n            aria-hidden={!isNavigationOpen}\n            onClick={event => {\n              onNavigationClick && onNavigationClick(event);\n            }}\n          >\n            <div className={clsx(styles['animated-content'])}>\n              <div className={clsx(styles['hide-navigation'])}>\n                <InternalButton\n                  ariaLabel={ariaLabels?.navigationClose ?? undefined}\n                  iconName={isMobile ? 'close' : 'angle-left'}\n                  onClick={() => handleNavigationClick(false)}\n                  variant=\"icon\"\n                  formAction=\"none\"\n                  className={testutilStyles['navigation-close']}\n                  ref={navigationRefs.close}\n                />\n              </div>\n              {navigation}\n            </div>\n          </nav>\n        </div>\n      )}\n    </Transition>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useAppLayoutInternals } from './context';\nimport styles from './styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\n\nexport default function Notifications() {\n  const { ariaLabels, hasDrawerViewportOverlay, notifications, notificationsElement, stickyNotifications } =\n    useAppLayoutInternals();\n\n  if (!notifications) {\n    return null;\n  }\n\n  /**\n   * The notificationsElement ref is assigned to an inner div to prevent internal bottom margin\n   * from affecting the calculated height, which is used for sticky elements below.\n   */\n  return (\n    <div\n      role=\"region\"\n      aria-label={ariaLabels?.notifications ?? undefined}\n      className={clsx(\n        styles.notifications,\n        {\n          [styles['sticky-notifications']]: stickyNotifications,\n          [styles.unfocusable]: hasDrawerViewportOverlay,\n        },\n        testutilStyles.notifications,\n        'awsui-context-content-header'\n      )}\n    >\n      <div ref={notificationsElement}>{notifications}</div>\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { InternalButton } from '../../button/internal';\nimport { useAppLayoutInternals } from './context';\nimport TriggerButton from './trigger-button';\nimport styles from './styles.css.js';\nimport splitPanelStyles from '../../split-panel/styles.css.js';\nimport testutilStyles from '../test-classes/styles.css.js';\nimport { Transition } from '../../internal/components/transition';\nimport customCssProps from '../../internal/generated/custom-css-properties';\n\ninterface ToolsProps {\n  children: React.ReactNode;\n}\n\n/**\n * The Tools component consists of the following elements:\n * the container, or root element, that sits as a direct child to the Layout grid definition;\n * the split panel, which exists only if there is a split panel in side position;\n * the tools, or drawer, that contains the hide tools form and the children passed through the API;\n * the show tools form that contains the triggers for both the drawer and the\n * split panel in large viewports;\n */\nexport default function Tools({ children }: ToolsProps) {\n  const {\n    ariaLabels,\n    disableBodyScroll,\n    drawers,\n    handleSplitPanelClick,\n    handleToolsClick,\n    hasDefaultToolsWidth,\n    hasDrawerViewportOverlay,\n    isMobile,\n    isSplitPanelOpen,\n    isToolsOpen,\n    loseToolsFocus,\n    splitPanel,\n    splitPanelDisplayed,\n    splitPanelPosition,\n    splitPanelRefs,\n    splitPanelToggle,\n    tools,\n    toolsHide,\n    toolsRefs,\n    toolsWidth,\n  } = useAppLayoutInternals();\n\n  const hasSplitPanel = !!splitPanel && getSplitPanelStatus(splitPanelDisplayed, splitPanelPosition);\n  const hasToolsForm = getToolsFormStatus(hasSplitPanel, isMobile, isSplitPanelOpen, isToolsOpen, toolsHide);\n  const hasToolsFormPersistence = getToolsFormPersistence(hasSplitPanel, isSplitPanelOpen, isToolsOpen, toolsHide);\n  const isUnfocusable = hasDrawerViewportOverlay && !isToolsOpen;\n\n  /**\n   * If the drawers property is defined the Tools and SplitPanel will be mounted and rendered\n   * by the Drawers component.\n   */\n  if ((toolsHide && !hasSplitPanel) || drawers) {\n    return null;\n  }\n\n  return (\n    <Transition in={isToolsOpen ?? false}>\n      {(state, transitionEventsRef) => (\n        <div\n          className={clsx(styles['tools-container'], {\n            [styles['disable-body-scroll']]: disableBodyScroll,\n            [styles.unfocusable]: isUnfocusable,\n            [testutilStyles['drawer-closed']]: !isToolsOpen,\n          })}\n          style={{\n            [customCssProps.toolsAnimationStartingOpacity]: `${hasSplitPanel && isSplitPanelOpen ? 1 : 0}`,\n            // Overwrite the default tools width (depends on breakpoints) only when the `toolsWidth` property has been set.\n            [customCssProps.toolsWidth]: hasDefaultToolsWidth ? '' : `${toolsWidth}px`,\n          }}\n          onBlur={e => {\n            if (!e.relatedTarget || !e.currentTarget.contains(e.relatedTarget)) {\n              loseToolsFocus();\n            }\n          }}\n        >\n          {children}\n\n          {!toolsHide && (\n            <aside\n              aria-hidden={!isToolsOpen ? true : false}\n              aria-label={ariaLabels?.tools ?? undefined}\n              className={clsx(\n                styles.tools,\n                {\n                  [styles.animating]: state === 'entering',\n                  [styles['has-tools-form-persistence']]: hasToolsFormPersistence,\n                  [styles['is-tools-open']]: isToolsOpen,\n                },\n                testutilStyles.tools\n              )}\n              ref={state !== 'exiting' ? transitionEventsRef : undefined}\n            >\n              <div className={clsx(styles['animated-content'])}>\n                <div className={clsx(styles['hide-tools'])}>\n                  <InternalButton\n                    ariaLabel={ariaLabels?.toolsClose ?? undefined}\n                    iconName={isMobile ? 'close' : 'angle-right'}\n                    onClick={() => handleToolsClick(false)}\n                    variant=\"icon\"\n                    formAction=\"none\"\n                    className={testutilStyles['tools-close']}\n                    ref={toolsRefs.close}\n                  />\n                </div>\n\n                {tools}\n              </div>\n            </aside>\n          )}\n\n          {!isMobile && (\n            <aside\n              aria-hidden={!hasToolsForm ? true : false}\n              aria-label={ariaLabels?.tools ?? undefined}\n              className={clsx(styles['show-tools'], {\n                [styles.animating]: state === 'exiting',\n                [styles['has-tools-form']]: hasToolsForm,\n                [styles['has-tools-form-persistence']]: hasToolsFormPersistence,\n              })}\n              ref={state === 'exiting' ? transitionEventsRef : undefined}\n              data-testid=\"side-split-panel-drawer\"\n            >\n              {!toolsHide && (\n                <TriggerButton\n                  ariaLabel={ariaLabels?.toolsToggle}\n                  iconName=\"status-info\"\n                  onClick={() => handleToolsClick(!isToolsOpen)}\n                  selected={hasSplitPanel && isToolsOpen}\n                  className={testutilStyles['tools-toggle']}\n                  ref={toolsRefs.toggle}\n                />\n              )}\n\n              {hasSplitPanel && splitPanelToggle.displayed && (\n                <TriggerButton\n                  ariaLabel={splitPanelToggle.ariaLabel}\n                  iconName=\"view-vertical\"\n                  onClick={() => handleSplitPanelClick()}\n                  selected={hasSplitPanel && isSplitPanelOpen}\n                  className={splitPanelStyles['open-button']}\n                  ref={splitPanelRefs.toggle}\n                />\n              )}\n            </aside>\n          )}\n        </div>\n      )}\n    </Transition>\n  );\n}\n\n/**\n * Determine the default state of the Tools component. Mobile viewports should be\n * closed by default under all circumstances. If the toolsOpen prop has not been\n * set then it should be closed as well. Otherwise, default to the toolsOpen prop.\n */\nexport function getToolsDefaultState(isMobile: boolean, stateFromProps?: boolean) {\n  let isToolsOpen;\n\n  if (isMobile || stateFromProps === undefined) {\n    isToolsOpen = false;\n  } else {\n    isToolsOpen = stateFromProps;\n  }\n\n  return isToolsOpen;\n}\n\n/**\n * This simple function returns the presence of the split panel as a child of the\n * Tools component. It must exist and be in side position.\n */\nfunction getSplitPanelStatus(splitPanelDisplayed: boolean, splitPanelPosition: string) {\n  return splitPanelDisplayed && splitPanelPosition === 'side' ? true : false;\n}\n\n/**\n * By default the Tools form is styled as display: none; This behavior should\n * be unchanged in mobile viewports where the Tools form is always suppressed.\n * In large viewports, however the Tools form and its corresponding buttons\n * should be present in the UI under the below circumstances.\n */\nfunction getToolsFormStatus(\n  hasSplitPanel: boolean,\n  isMobile: boolean,\n  isSplitPanelOpen?: boolean,\n  isToolsOpen?: boolean,\n  toolsHide?: boolean\n) {\n  let hasToolsForm = false;\n\n  if (!isMobile) {\n    // Both the Split Panel and Tools button are needed\n    if (hasSplitPanel && !toolsHide) {\n      hasToolsForm = true;\n    }\n\n    // The Split Panel button is needed\n    if (hasSplitPanel && !isSplitPanelOpen && toolsHide) {\n      hasToolsForm = true;\n    }\n\n    // The Tools button is needed\n    if (!hasSplitPanel && !toolsHide && !isToolsOpen) {\n      hasToolsForm = true;\n    }\n  }\n\n  return hasToolsForm;\n}\n\n/**\n * Under two scenarios the Tools form that contains the triggers\n * for the Tools content and the Split Panel may be persistent\n * in the UI (as opposed to disappearing when one of the drawers\n * is open). This will also add a white background as opposed to the\n * default transparent background. The buttons will present and in a\n * selected / not selected state.\n */\nfunction getToolsFormPersistence(\n  hasSplitPanel: boolean,\n  isSplitPanelOpen?: boolean,\n  isToolsOpen?: boolean,\n  toolsHide?: boolean\n) {\n  let hasToolsFormPersistence = false;\n\n  // Both Tools and Split Panel exist and one or both is open\n  if (hasSplitPanel && !toolsHide && (isSplitPanelOpen || isToolsOpen)) {\n    hasToolsFormPersistence = true;\n  }\n\n  return hasToolsFormPersistence;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { AppLayoutInternalsProvider } from './context';\nimport { AppLayoutProps } from '../interfaces';\nimport Background from './background';\nimport Breadcrumbs from './breadcrumbs';\nimport Drawers from './drawers';\nimport Header from './header';\nimport Layout from './layout';\nimport Main from './main';\nimport MobileToolbar from './mobile-toolbar';\nimport Navigation from './navigation';\nimport Notifications from './notifications';\nimport SplitPanel from './split-panel';\nimport Tools from './tools';\n\nconst AppLayoutWithRef = React.forwardRef(function AppLayout(\n  props: AppLayoutProps,\n  ref: React.Ref<AppLayoutProps.Ref>\n) {\n  return (\n    <AppLayoutInternalsProvider {...props} ref={ref}>\n      <SplitPanel>\n        <Layout>\n          <Background />\n\n          <Navigation />\n\n          <MobileToolbar />\n\n          <Notifications />\n\n          <Breadcrumbs />\n\n          <Header />\n\n          <Main />\n\n          <SplitPanel.Bottom />\n\n          <Tools>\n            <SplitPanel.Side />\n          </Tools>\n\n          <Drawers />\n        </Layout>\n      </SplitPanel>\n    </AppLayoutInternalsProvider>\n  );\n});\n\nexport default AppLayoutWithRef;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useContext } from 'react';\n\nexport type CustomHandler<T> = (formatFn: (args: Record<string, string | number>) => string) => T;\n\nexport interface FormatFunction {\n  (namespace: string, component: string, key: string, provided: string): string;\n  (namespace: string, component: string, key: string, provided: string | undefined): string | undefined;\n  <T>(namespace: string, component: string, key: string, provided: T, handler?: CustomHandler<T>): T;\n}\n\nexport interface InternalI18nContextProps {\n  locale: string | null;\n  format: FormatFunction;\n}\n\nexport const InternalI18nContext = React.createContext<InternalI18nContextProps>({\n  locale: null,\n  format: <T>(_namespace: string, _component: string, _key: string, provided: T) => provided,\n});\n\nexport function useLocale(): string | null {\n  return useContext(InternalI18nContext).locale;\n}\n\nexport interface ComponentFormatFunction {\n  (key: string, provided: string): string;\n  (key: string, provided: string | undefined): string | undefined;\n  <T>(key: string, provided: T, handler?: CustomHandler<T>): T;\n}\n\nexport function useInternalI18n(componentName: string): ComponentFormatFunction {\n  const { format } = useContext(InternalI18nContext);\n  return <T>(key: string, provided: T, customHandler?: CustomHandler<T>) => {\n    return format<T>('@awsui/components-react', componentName, key, provided, customHandler);\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { applyDefaults } from './defaults';\nimport { AppLayoutProps } from './interfaces';\nimport { Notifications } from './notifications';\nimport { MobileToolbar } from './mobile-toolbar';\nimport { useFocusControl } from './utils/use-focus-control';\nimport useWindowWidth from './utils/use-window-width';\nimport useContentHeight from './utils/use-content-height';\nimport styles from './styles.css.js';\nimport testutilStyles from './test-classes/styles.css.js';\nimport { findUpUntil } from '../internal/utils/dom';\nimport { AppLayoutContext } from '../internal/context/app-layout-context';\nimport { useContainerQuery } from '../internal/hooks/container-queries';\nimport { useStableEventHandler } from '../internal/hooks/use-stable-event-handler';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport {\n  SplitPanelContextProvider,\n  SplitPanelContextProps,\n  SplitPanelSideToggleProps,\n} from '../internal/context/split-panel-context';\nimport {\n  CONSTRAINED_MAIN_PANEL_MIN_HEIGHT,\n  CONSTRAINED_PAGE_HEIGHT,\n  getSplitPanelDefaultSize,\n  MAIN_PANEL_MIN_HEIGHT,\n} from '../split-panel/utils/size-utils';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport ContentWrapper, { ContentWrapperProps } from './content-wrapper';\nimport { Drawer, DrawerTriggersBar } from './drawer';\nimport { ResizableDrawer } from './drawer/resizable-drawer';\nimport { DrawerItem, InternalDrawerProps } from './drawer/interfaces';\nimport { togglesConfig } from './toggles';\nimport { SideSplitPanelDrawer } from './split-panel-drawer';\nimport useAppLayoutOffsets from './utils/use-content-width';\nimport { isDevelopment } from '../internal/is-development';\nimport { warnOnce } from '../internal/logging';\n\nimport RefreshedAppLayout from './visual-refresh';\nimport { useInternalI18n } from '../internal/i18n/context';\nimport { useSplitPanelFocusControl } from './utils/use-split-panel-focus-control';\nimport { useDrawerFocusControl } from './utils/use-drawer-focus-control';\n\nexport { AppLayoutProps };\n\nconst AppLayout = React.forwardRef(\n  (\n    { contentType = 'default', headerSelector = '#b #h', footerSelector = '#b #f', ...rest }: AppLayoutProps,\n    ref: React.Ref<AppLayoutProps.Ref>\n  ) => {\n    const { __internalRootRef } = useBaseComponent<HTMLDivElement>('AppLayout');\n    const isRefresh = useVisualRefresh();\n\n    const i18n = useInternalI18n('app-layout');\n    const ariaLabels = {\n      navigation: i18n('ariaLabels.navigation', rest.ariaLabels?.navigation),\n      navigationClose: i18n('ariaLabels.navigationClose', rest.ariaLabels?.navigationClose),\n      navigationToggle: i18n('ariaLabels.navigationToggle', rest.ariaLabels?.navigationToggle),\n      notifications: i18n('ariaLabels.notifications', rest.ariaLabels?.notifications),\n      tools: i18n('ariaLabels.tools', rest.ariaLabels?.tools),\n      toolsClose: i18n('ariaLabels.toolsClose', rest.ariaLabels?.toolsClose),\n      toolsToggle: i18n('ariaLabels.toolsToggle', rest.ariaLabels?.toolsToggle),\n    };\n\n    // This re-builds the props including the default values\n    const props = { contentType, headerSelector, footerSelector, ...rest, ariaLabels };\n\n    const baseProps = getBaseProps(rest);\n\n    return (\n      <div ref={__internalRootRef} {...baseProps}>\n        {isRefresh ? <RefreshedAppLayout {...props} ref={ref} /> : <OldAppLayout {...props} ref={ref} />}\n      </div>\n    );\n  }\n);\n\nconst OldAppLayout = React.forwardRef(\n  (\n    {\n      navigation,\n      navigationWidth = 280,\n      navigationHide,\n      navigationOpen: controlledNavigationOpen,\n      tools,\n      toolsWidth = 290,\n      toolsHide,\n      toolsOpen: controlledToolsOpen,\n      breadcrumbs,\n      notifications,\n      stickyNotifications,\n      contentHeader,\n      disableContentHeaderOverlap,\n      content,\n      contentType = 'default',\n      disableContentPaddings,\n      disableBodyScroll,\n      maxContentWidth,\n      minContentWidth,\n      headerSelector = '#b #h',\n      footerSelector = '#b #f',\n      ariaLabels,\n      splitPanel,\n      splitPanelSize: controlledSplitPanelSize,\n      splitPanelOpen: controlledSplitPanelOpen,\n      splitPanelPreferences: controlledSplitPanelPreferences,\n      onSplitPanelPreferencesChange,\n      onSplitPanelResize,\n      onSplitPanelToggle,\n      onNavigationChange,\n      onToolsChange,\n      ...props\n    }: AppLayoutProps,\n    ref: React.Ref<AppLayoutProps.Ref>\n  ) => {\n    if (isDevelopment) {\n      if (controlledToolsOpen && toolsHide) {\n        warnOnce(\n          'AppLayout',\n          `You have enabled both the \\`toolsOpen\\` prop and the \\`toolsHide\\` prop. This is not supported. Set \\`toolsOpen\\` to \\`false\\` when you set \\`toolsHide\\` to \\`true\\`.`\n        );\n      }\n    }\n\n    const drawers = (props as InternalDrawerProps).drawers;\n    const hasDrawers = drawers && drawers.items.length > 0;\n\n    const rootRef = useRef<HTMLDivElement>(null);\n    const isMobile = useMobile();\n\n    const defaults = applyDefaults(contentType, { maxContentWidth, minContentWidth }, false);\n    const [navigationOpen = false, setNavigationOpen] = useControllable(\n      controlledNavigationOpen,\n      onNavigationChange,\n      isMobile ? false : defaults.navigationOpen,\n      { componentName: 'AppLayout', controlledProp: 'navigationOpen', changeHandler: 'onNavigationChange' }\n    );\n\n    const [toolsOpen = false, setToolsOpen] = useControllable(\n      controlledToolsOpen,\n      onToolsChange,\n      isMobile ? false : defaults.toolsOpen,\n      { componentName: 'AppLayout', controlledProp: 'toolsOpen', changeHandler: 'onToolsChange' }\n    );\n\n    const [activeDrawerId, setActiveDrawerId] = useControllable(\n      drawers?.activeDrawerId,\n      drawers?.onChange,\n      isMobile ? false : tools ? defaults.toolsOpen : '',\n      {\n        componentName: 'AppLayout',\n        controlledProp: 'activeDrawerId',\n        changeHandler: 'onChange',\n      }\n    );\n\n    const { iconName, getLabels } = togglesConfig.tools;\n    const { mainLabel, closeLabel, openLabel } = getLabels(ariaLabels);\n\n    const toolsItem = {\n      id: 'tools',\n      content: tools,\n      resizable: false,\n      ariaLabels: {\n        triggerButton: openLabel,\n        closeButton: closeLabel,\n        content: mainLabel,\n      },\n      trigger: {\n        iconName: iconName,\n      },\n    };\n\n    const getAllDrawerItems = () => {\n      if (!hasDrawers) {\n        return;\n      }\n      return tools ? [toolsItem, ...drawers.items] : drawers.items;\n    };\n\n    const selectedDrawer =\n      tools && toolsOpen\n        ? toolsItem\n        : hasDrawers\n        ? getAllDrawerItems()?.filter((drawerItem: DrawerItem) => drawerItem.id === activeDrawerId)[0]\n        : undefined;\n\n    const { refs: navigationRefs, setFocus: focusNavButtons } = useFocusControl(navigationOpen);\n    const {\n      refs: toolsRefs,\n      setFocus: focusToolsButtons,\n      loseFocus: loseToolsFocus,\n    } = useFocusControl(toolsOpen || selectedDrawer !== undefined, true);\n    const {\n      refs: drawerRefs,\n      setFocus: focusDrawersButtons,\n      loseFocus: loseDrawersFocus,\n      setLastInteraction: setDrawerLastInteraction,\n    } = useDrawerFocusControl([selectedDrawer?.resizable], toolsOpen || selectedDrawer !== undefined, true);\n\n    const onNavigationToggle = useCallback(\n      (open: boolean) => {\n        setNavigationOpen(open);\n        focusNavButtons();\n        fireNonCancelableEvent(onNavigationChange, { open });\n      },\n      [setNavigationOpen, onNavigationChange, focusNavButtons]\n    );\n    const onToolsToggle = useCallback(\n      (open: boolean) => {\n        setToolsOpen(open);\n        focusToolsButtons();\n        fireNonCancelableEvent(onToolsChange, { open });\n      },\n      [setToolsOpen, onToolsChange, focusToolsButtons]\n    );\n\n    const onNavigationClick = (event: React.MouseEvent) => {\n      const hasLink = findUpUntil(\n        event.target as HTMLElement,\n        node => node.tagName === 'A' && !!(node as HTMLAnchorElement).href\n      );\n      if (hasLink) {\n        onNavigationToggle(false);\n      }\n    };\n\n    const navigationVisible = !navigationHide && navigationOpen;\n    const toolsVisible = !toolsHide && toolsOpen;\n\n    const { contentHeightStyle, headerHeight, footerHeight } = useContentHeight(\n      headerSelector,\n      footerSelector,\n      disableBodyScroll\n    );\n    const [isSplitpanelForcedPosition, setIsSplitpanelForcedPosition] = useState(false);\n    const [isResizeInvalid, setIsResizeInvalid] = useState(false);\n\n    const [notificationsHeight, notificationsRef] = useContainerQuery(rect => rect.height);\n    const anyPanelOpen = navigationVisible || toolsVisible;\n    const hasRenderedNotifications = notificationsHeight ? notificationsHeight > 0 : false;\n    const stickyNotificationsHeight = stickyNotifications ? notificationsHeight : null;\n\n    const [splitPanelPreferences, setSplitPanelPreferences] = useControllable(\n      controlledSplitPanelPreferences,\n      onSplitPanelPreferencesChange,\n      undefined,\n      {\n        componentName: 'AppLayout',\n        controlledProp: 'splitPanelPreferences',\n        changeHandler: 'onSplitPanelPreferencesChange',\n      }\n    );\n    const [splitPanelOpen = false, setSplitPanelOpen] = useControllable(\n      controlledSplitPanelOpen,\n      onSplitPanelToggle,\n      false,\n      {\n        componentName: 'AppLayout',\n        controlledProp: 'splitPanelOpen',\n        changeHandler: 'onSplitPanelToggle',\n      }\n    );\n\n    const drawerItems = useMemo(() => drawers?.items || [], [drawers?.items]);\n\n    const getDrawerItemSizes = useCallback(() => {\n      const sizes: { [id: string]: number } = {};\n      if (!drawerItems) {\n        return {};\n      }\n\n      for (const item of drawerItems) {\n        if (item.defaultSize) {\n          sizes[item.id] = item.defaultSize || toolsWidth;\n        }\n      }\n      return sizes;\n    }, [drawerItems, toolsWidth]);\n\n    const [drawerSizes, setDrawerSizes] = useState(() => getDrawerItemSizes());\n\n    useEffect(() => {\n      // Ensure we only set new drawer items by performing a shallow merge\n      // of the latest drawer item sizes, and previous drawer item sizes.\n      setDrawerSizes(prev => ({ ...getDrawerItemSizes(), ...prev }));\n    }, [getDrawerItemSizes]);\n\n    const drawerSize =\n      selectedDrawer?.id && drawerSizes[selectedDrawer?.id] ? drawerSizes[selectedDrawer?.id] : toolsWidth;\n\n    const splitPanelPosition = splitPanelPreferences?.position || 'bottom';\n    const [splitPanelReportedToggle, setSplitPanelReportedToggle] = useState<SplitPanelSideToggleProps>({\n      displayed: false,\n      ariaLabel: undefined,\n    });\n    const splitPanelDisplayed = !!(splitPanel && (splitPanelReportedToggle.displayed || splitPanelOpen));\n\n    const closedDrawerWidth = 40;\n    const effectiveNavigationWidth = navigationHide ? 0 : navigationOpen ? navigationWidth : closedDrawerWidth;\n\n    const getEffectiveToolsWidth = () => {\n      if (toolsHide && (!splitPanelDisplayed || splitPanelPreferences?.position !== 'side') && !drawers) {\n        return 0;\n      }\n\n      if (selectedDrawer?.resizable) {\n        return drawerSize;\n      }\n\n      if (toolsOpen || activeDrawerId) {\n        return toolsWidth;\n      }\n\n      return closedDrawerWidth;\n    };\n\n    const effectiveToolsWidth = getEffectiveToolsWidth();\n\n    const defaultSplitPanelSize = getSplitPanelDefaultSize(splitPanelPosition);\n    const [splitPanelSize = defaultSplitPanelSize, setSplitPanelSize] = useControllable(\n      controlledSplitPanelSize,\n      onSplitPanelResize,\n      defaultSplitPanelSize,\n      {\n        componentName: 'AppLayout',\n        controlledProp: 'splitPanelSize',\n        changeHandler: 'onSplitPanelResize',\n      }\n    );\n\n    const mainContentRef = useRef<HTMLDivElement>(null);\n    const legacyScrollRootRef = useRef<HTMLElement>(null);\n\n    const { refs: splitPanelRefs, setLastInteraction: setSplitPanelLastInteraction } = useSplitPanelFocusControl([\n      splitPanelPreferences,\n      splitPanelOpen,\n    ]);\n\n    const onSplitPanelPreferencesSet = useCallback(\n      (detail: { position: 'side' | 'bottom' }) => {\n        setSplitPanelPreferences(detail);\n        setSplitPanelLastInteraction({ type: 'position' });\n        fireNonCancelableEvent(onSplitPanelPreferencesChange, detail);\n      },\n      [setSplitPanelPreferences, onSplitPanelPreferencesChange, setSplitPanelLastInteraction]\n    );\n    const onSplitPanelSizeSet = useCallback(\n      (detail: { size: number }) => {\n        setSplitPanelSize(detail.size);\n        fireNonCancelableEvent(onSplitPanelResize, detail);\n      },\n      [setSplitPanelSize, onSplitPanelResize]\n    );\n\n    const onSplitPanelToggleHandler = useCallback(() => {\n      setSplitPanelOpen(!splitPanelOpen);\n      setSplitPanelLastInteraction({ type: splitPanelOpen ? 'close' : 'open' });\n      fireNonCancelableEvent(onSplitPanelToggle, { open: !splitPanelOpen });\n    }, [setSplitPanelOpen, splitPanelOpen, onSplitPanelToggle, setSplitPanelLastInteraction]);\n\n    const getSplitPanelMaxWidth = useStableEventHandler(() => {\n      if (!mainContentRef.current || !defaults.minContentWidth) {\n        return NaN;\n      }\n\n      const width = parseInt(getComputedStyle(mainContentRef.current).width);\n      // when disableContentPaddings is true there is less available space,\n      // so we subtract space-scaled-2x-xxxl * 2 for left and right padding\n      const contentPadding = disableContentPaddings ? 80 : 0;\n      const spaceAvailable = width - defaults.minContentWidth - contentPadding;\n\n      const spaceTaken = finalSplitPanePosition === 'side' ? splitPanelSize : 0;\n      return Math.max(0, spaceTaken + spaceAvailable);\n    });\n\n    const getDrawerMaxWidth = useStableEventHandler(() => {\n      if (!mainContentRef.current || !defaults.minContentWidth) {\n        return NaN;\n      }\n\n      // Either use the computed width of the drawer or the drawerSize as defined.\n      const width = parseInt(getComputedStyle(mainContentRef.current).width || `${drawerSize}`);\n\n      // when disableContentPaddings is true there is less available space,\n      // so we subtract space-scaled-2x-xxxl * 2 for left and right padding\n      const contentPadding = disableContentPaddings ? 80 : 0;\n      const spaceAvailable = width - defaults.minContentWidth - contentPadding;\n      const spaceTaken = drawerSize;\n\n      return Math.max(0, spaceTaken + spaceAvailable);\n    });\n\n    const getSplitPanelMaxHeight = useStableEventHandler(() => {\n      if (typeof document === 'undefined') {\n        return 0; // render the split panel in its minimum possible size\n      } else if (disableBodyScroll && legacyScrollRootRef.current) {\n        const availableHeight = legacyScrollRootRef.current.clientHeight;\n        return availableHeight < CONSTRAINED_PAGE_HEIGHT ? availableHeight : availableHeight - MAIN_PANEL_MIN_HEIGHT;\n      } else {\n        const availableHeight = document.documentElement.clientHeight - headerHeight - footerHeight;\n        return availableHeight < CONSTRAINED_PAGE_HEIGHT\n          ? availableHeight - CONSTRAINED_MAIN_PANEL_MIN_HEIGHT\n          : availableHeight - MAIN_PANEL_MIN_HEIGHT;\n      }\n    });\n\n    const finalSplitPanePosition = isSplitpanelForcedPosition ? 'bottom' : splitPanelPosition;\n\n    const splitPaneAvailableOnTheSide = splitPanelDisplayed && finalSplitPanePosition === 'side';\n    const splitPanelOpenOnTheSide = splitPaneAvailableOnTheSide && splitPanelOpen;\n\n    const toggleButtonsBarWidth = 0;\n\n    const windowWidth = useWindowWidth();\n    const { left: leftOffset, right: rightOffset } = useAppLayoutOffsets(rootRef.current);\n    const contentWidthWithSplitPanel =\n      windowWidth -\n      leftOffset -\n      rightOffset -\n      effectiveToolsWidth -\n      effectiveNavigationWidth -\n      (disableContentPaddings ? 0 : toggleButtonsBarWidth);\n\n    useEffect(() => {\n      const contentWidth = contentWidthWithSplitPanel - splitPanelSize;\n\n      setIsSplitpanelForcedPosition(isMobile || (defaults.minContentWidth || 0) > contentWidth);\n      setIsResizeInvalid(isMobile || (defaults.minContentWidth || 0) > contentWidthWithSplitPanel);\n      // This is a workaround to avoid a forced position due to splitPanelSize, which is\n      // user controlled variable.\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [contentWidthWithSplitPanel, drawerSize, defaults.minContentWidth, isMobile]);\n\n    const navigationClosedWidth = navigationHide || isMobile ? 0 : closedDrawerWidth;\n    const toolsClosedWidth = toolsHide || isMobile || (!hasDrawers && toolsHide) ? 0 : closedDrawerWidth;\n\n    const contentMaxWidthStyle = !isMobile ? { maxWidth: defaults.maxContentWidth } : undefined;\n\n    const [splitPanelReportedSize, setSplitPanelReportedSize] = useState(0);\n    const [splitPanelReportedHeaderHeight, setSplitPanelReportedHeaderHeight] = useState(0);\n\n    const getSplitPanelRightOffset = () => {\n      if (isMobile) {\n        return 0;\n      }\n\n      if (hasDrawers) {\n        if (activeDrawerId) {\n          if (!isResizeInvalid && drawerSize) {\n            return drawerSize + closedDrawerWidth;\n          }\n\n          return toolsWidth + closedDrawerWidth;\n        }\n        return closedDrawerWidth;\n      }\n\n      if (!toolsHide && toolsOpen) {\n        return toolsWidth;\n      }\n      return toolsClosedWidth;\n    };\n\n    const splitPanelContext: SplitPanelContextProps = {\n      topOffset: headerHeight + (finalSplitPanePosition === 'bottom' ? stickyNotificationsHeight || 0 : 0),\n      bottomOffset: footerHeight,\n      leftOffset:\n        leftOffset + (isMobile ? 0 : !navigationHide && navigationOpen ? navigationWidth : navigationClosedWidth),\n      rightOffset: rightOffset + getSplitPanelRightOffset(),\n      position: finalSplitPanePosition,\n      size: splitPanelSize,\n      getMaxWidth: getSplitPanelMaxWidth,\n      getMaxHeight: getSplitPanelMaxHeight,\n      disableContentPaddings,\n      contentWidthStyles: contentMaxWidthStyle,\n      isOpen: splitPanelOpen,\n      isMobile,\n      isForcedPosition: isSplitpanelForcedPosition,\n      onResize: onSplitPanelSizeSet,\n      onToggle: onSplitPanelToggleHandler,\n      onPreferencesChange: onSplitPanelPreferencesSet,\n      setSplitPanelToggle: setSplitPanelReportedToggle,\n      reportSize: setSplitPanelReportedSize,\n      reportHeaderHeight: setSplitPanelReportedHeaderHeight,\n      refs: splitPanelRefs,\n    };\n    const splitPanelWrapped = splitPanel && (\n      <SplitPanelContextProvider value={splitPanelContext}>{splitPanel}</SplitPanelContextProvider>\n    );\n\n    const contentWrapperProps: ContentWrapperProps = {\n      contentType,\n      navigationPadding: navigationHide || !!navigationOpen,\n      contentWidthStyles: !isMobile\n        ? { minWidth: defaults.minContentWidth, maxWidth: defaults.maxContentWidth }\n        : undefined,\n      toolsPadding:\n        // tools padding is displayed in one of the three cases\n        // 1. Nothing on the that screen edge (no tools panel and no split panel)\n        toolsHide ||\n        (hasDrawers && !activeDrawerId && (!splitPanelDisplayed || finalSplitPanePosition !== 'side')) ||\n        // 2. Tools panel is present and open\n        toolsVisible ||\n        // 3. Split panel is open in side position\n        splitPanelOpenOnTheSide,\n      isMobile,\n    };\n\n    useImperativeHandle(\n      ref,\n      () => ({\n        openTools: () => onToolsToggle(true),\n        closeNavigationIfNecessary: () => {\n          if (isMobile) {\n            onNavigationToggle(false);\n          }\n        },\n        focusToolsClose: () => focusToolsButtons(true),\n      }),\n      [isMobile, onNavigationToggle, onToolsToggle, focusToolsButtons]\n    );\n\n    const splitPanelBottomOffset =\n      (!splitPanelDisplayed || finalSplitPanePosition !== 'bottom'\n        ? undefined\n        : splitPanelOpen\n        ? splitPanelReportedSize\n        : splitPanelReportedHeaderHeight) ?? undefined;\n\n    const [mobileBarHeight, mobileBarRef] = useContainerQuery(rect => rect.height);\n\n    return (\n      <div\n        className={clsx(styles.root, testutilStyles.root, disableBodyScroll && styles['root-no-scroll'])}\n        ref={rootRef}\n      >\n        <div className={styles['layout-wrapper']} style={contentHeightStyle}>\n          {isMobile && (!toolsHide || !navigationHide || breadcrumbs) && (\n            <MobileToolbar\n              anyPanelOpen={anyPanelOpen}\n              toggleRefs={{ navigation: navigationRefs.toggle, tools: toolsRefs.toggle }}\n              topOffset={headerHeight}\n              ariaLabels={ariaLabels}\n              navigationHide={navigationHide}\n              toolsHide={toolsHide}\n              onNavigationOpen={() => onNavigationToggle(true)}\n              onToolsOpen={() => onToolsToggle(true)}\n              unfocusable={anyPanelOpen}\n              mobileBarRef={mobileBarRef}\n              drawers={\n                drawers\n                  ? {\n                      items: tools && !toolsHide ? [toolsItem, ...drawers.items] : drawers.items,\n                      activeDrawerId: selectedDrawer?.id,\n                      onChange: changeDetail => {\n                        if (selectedDrawer?.id !== changeDetail.activeDrawerId) {\n                          onToolsToggle(changeDetail.activeDrawerId === 'tools');\n                          focusDrawersButtons();\n                          setActiveDrawerId(changeDetail.activeDrawerId);\n                          setDrawerLastInteraction({ type: 'open' });\n                          fireNonCancelableEvent(drawers.onChange, changeDetail.activeDrawerId);\n                        }\n                      },\n                      ariaLabel: drawers.ariaLabel,\n                    }\n                  : undefined\n              }\n            >\n              {breadcrumbs}\n            </MobileToolbar>\n          )}\n          <div className={clsx(styles.layout, disableBodyScroll && styles['layout-no-scroll'])}>\n            {!navigationHide && (\n              <Drawer\n                contentClassName={testutilStyles.navigation}\n                toggleClassName={testutilStyles['navigation-toggle']}\n                closeClassName={testutilStyles['navigation-close']}\n                ariaLabels={ariaLabels}\n                bottomOffset={footerHeight}\n                topOffset={headerHeight}\n                isMobile={isMobile}\n                isOpen={navigationOpen}\n                onClick={isMobile ? onNavigationClick : undefined}\n                onToggle={onNavigationToggle}\n                toggleRefs={navigationRefs}\n                type=\"navigation\"\n                width={navigationWidth}\n              >\n                {navigation}\n              </Drawer>\n            )}\n            <main\n              ref={legacyScrollRootRef}\n              className={clsx(styles['layout-main'], {\n                [styles['layout-main-scrollable']]: disableBodyScroll,\n                [testutilStyles['disable-body-scroll-root']]: disableBodyScroll,\n                [styles.unfocusable]: isMobile && anyPanelOpen,\n              })}\n            >\n              <div\n                style={{\n                  marginBottom: splitPanelBottomOffset,\n                }}\n              >\n                {notifications && (\n                  <Notifications\n                    disableContentPaddings={disableContentPaddings}\n                    testUtilsClassName={testutilStyles.notifications}\n                    labels={ariaLabels}\n                    topOffset={disableBodyScroll ? 0 : headerHeight}\n                    sticky={!isMobile && stickyNotifications}\n                    ref={notificationsRef}\n                  >\n                    {notifications}\n                  </Notifications>\n                )}\n                {((!isMobile && breadcrumbs) || contentHeader) && (\n                  <ContentWrapper {...contentWrapperProps}>\n                    {!isMobile && breadcrumbs && (\n                      <div className={clsx(testutilStyles.breadcrumbs, styles['breadcrumbs-desktop'])}>\n                        {breadcrumbs}\n                      </div>\n                    )}\n                    {contentHeader && (\n                      <div\n                        className={clsx(\n                          styles['content-header-wrapper'],\n                          !hasRenderedNotifications &&\n                            (isMobile || !breadcrumbs) &&\n                            styles['content-extra-top-padding'],\n                          !hasRenderedNotifications && !breadcrumbs && styles['content-header-wrapper-first-child'],\n                          !disableContentHeaderOverlap && styles['content-header-wrapper-overlapped']\n                        )}\n                      >\n                        {contentHeader}\n                      </div>\n                    )}\n                  </ContentWrapper>\n                )}\n                <ContentWrapper\n                  {...contentWrapperProps}\n                  ref={mainContentRef}\n                  disablePaddings={disableContentPaddings}\n                  // eslint-disable-next-line react/forbid-component-props\n                  className={clsx(\n                    !disableContentPaddings && styles['content-wrapper'],\n                    !disableContentPaddings &&\n                      (isMobile || !breadcrumbs) &&\n                      !contentHeader &&\n                      styles['content-extra-top-padding'],\n                    testutilStyles.content,\n                    !disableContentHeaderOverlap && contentHeader && styles['content-overlapped'],\n                    !hasRenderedNotifications &&\n                      !breadcrumbs &&\n                      !isMobile &&\n                      !contentHeader &&\n                      styles['content-wrapper-first-child']\n                  )}\n                >\n                  <AppLayoutContext.Provider\n                    value={{\n                      stickyOffsetTop:\n                        // We don't support the table header being sticky in case the deprecated disableBodyScroll is enabled,\n                        // therefore we ensure the table header scrolls out of view by offseting a large enough value (9999px)\n                        (disableBodyScroll ? (isMobile ? -9999 : 0) : headerHeight) +\n                        (isMobile ? 0 : stickyNotificationsHeight !== null ? stickyNotificationsHeight : 0),\n                      stickyOffsetBottom: footerHeight + (splitPanelBottomOffset || 0),\n                      mobileBarHeight: mobileBarHeight ?? 0,\n                    }}\n                  >\n                    {content}\n                  </AppLayoutContext.Provider>\n                </ContentWrapper>\n              </div>\n              {finalSplitPanePosition === 'bottom' && splitPanelWrapped}\n            </main>\n\n            {finalSplitPanePosition === 'side' && (\n              <SideSplitPanelDrawer\n                topOffset={headerHeight}\n                bottomOffset={footerHeight}\n                displayed={splitPanelDisplayed}\n                width={splitPanelOpen && splitPanel ? splitPanelSize : undefined}\n              >\n                {splitPanelWrapped}\n              </SideSplitPanelDrawer>\n            )}\n\n            {((hasDrawers && selectedDrawer?.id) || (!hasDrawers && !toolsHide)) &&\n              (hasDrawers ? (\n                <ResizableDrawer\n                  contentClassName={\n                    selectedDrawer?.id === 'tools' ? testutilStyles.tools : testutilStyles['active-drawer']\n                  }\n                  toggleClassName={testutilStyles['tools-toggle']}\n                  closeClassName={\n                    selectedDrawer?.id === 'tools'\n                      ? testutilStyles['tools-close']\n                      : testutilStyles['active-drawer-close-button']\n                  }\n                  ariaLabels={ariaLabels}\n                  drawersAriaLabels={selectedDrawer?.ariaLabels}\n                  width={!isResizeInvalid ? drawerSize : toolsWidth}\n                  bottomOffset={footerHeight}\n                  topOffset={headerHeight}\n                  isMobile={isMobile}\n                  onToggle={onToolsToggle}\n                  isOpen={toolsOpen || activeDrawerId !== undefined}\n                  toggleRefs={toolsRefs}\n                  type=\"tools\"\n                  onLoseFocus={hasDrawers ? loseDrawersFocus : loseToolsFocus}\n                  activeDrawer={selectedDrawer}\n                  drawers={{\n                    items: tools && !toolsHide ? [toolsItem, ...drawers.items] : drawers.items,\n                    activeDrawerId: selectedDrawer?.id,\n                    onChange: changeDetail => {\n                      onToolsToggle(false);\n                      setDrawerLastInteraction({ type: 'close' });\n                      setActiveDrawerId(changeDetail.activeDrawerId);\n                      fireNonCancelableEvent(drawers.onChange, changeDetail.activeDrawerId);\n                    },\n                  }}\n                  size={!isResizeInvalid ? drawerSize : toolsWidth}\n                  onResize={changeDetail => {\n                    fireNonCancelableEvent(drawers.onResize, changeDetail);\n                    const drawerItem = drawerItems.find(({ id }) => id === changeDetail.id);\n                    if (drawerItem?.onResize) {\n                      fireNonCancelableEvent(drawerItem.onResize, changeDetail);\n                    }\n                    setDrawerSizes({ ...drawerSizes, [changeDetail.id]: changeDetail.size });\n                  }}\n                  refs={drawerRefs}\n                  getMaxWidth={getDrawerMaxWidth}\n                >\n                  {selectedDrawer?.content}\n                </ResizableDrawer>\n              ) : (\n                <Drawer\n                  contentClassName={testutilStyles.tools}\n                  toggleClassName={testutilStyles['tools-toggle']}\n                  closeClassName={testutilStyles['tools-close']}\n                  ariaLabels={ariaLabels}\n                  width={effectiveToolsWidth}\n                  bottomOffset={footerHeight}\n                  topOffset={headerHeight}\n                  isMobile={isMobile}\n                  onToggle={onToolsToggle}\n                  isOpen={toolsOpen}\n                  toggleRefs={toolsRefs}\n                  type=\"tools\"\n                  onLoseFocus={loseToolsFocus}\n                >\n                  {tools}\n                </Drawer>\n              ))}\n            {hasDrawers && (\n              <DrawerTriggersBar\n                contentClassName={testutilStyles['drawers-desktop-triggers-container']}\n                toggleClassName={testutilStyles['drawers-trigger']}\n                bottomOffset={footerHeight}\n                topOffset={headerHeight}\n                isMobile={isMobile}\n                drawers={{\n                  items: tools && !toolsHide ? [toolsItem, ...drawers.items] : drawers.items,\n                  activeDrawerId: selectedDrawer?.id,\n                  onChange: changeDetail => {\n                    if (selectedDrawer?.id !== changeDetail.activeDrawerId) {\n                      onToolsToggle(changeDetail.activeDrawerId === 'tools');\n                      focusDrawersButtons();\n                      setActiveDrawerId(changeDetail.activeDrawerId);\n                      setDrawerLastInteraction({ type: 'open' });\n                      fireNonCancelableEvent(drawers.onChange, changeDetail.activeDrawerId);\n                    }\n                  },\n                  ariaLabel: drawers.ariaLabel,\n                }}\n              />\n            )}\n          </div>\n        </div>\n      </div>\n    );\n  }\n);\n\napplyDisplayName(AppLayout, 'AppLayout');\nexport default AppLayout;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { DependencyList, RefObject, useEffect, useRef, useCallback } from 'react';\nimport { ButtonProps } from '../../button/interfaces';\n\nexport type DrawerLastInteraction = { type: 'open' } | { type: 'close' };\n\nexport interface DrawerFocusControlRefs {\n  toggle: RefObject<ButtonProps.Ref>;\n  close: RefObject<ButtonProps.Ref>;\n  slider: RefObject<HTMLDivElement>;\n}\n\ninterface FocusControlState {\n  refs: DrawerFocusControlRefs;\n  setFocus: (force?: boolean) => void;\n  loseFocus: () => void;\n  setLastInteraction: (interaction: DrawerLastInteraction) => void;\n}\n\nexport function useDrawerFocusControl(\n  dependencies: DependencyList,\n  isOpen: boolean,\n  restoreFocus = false\n): FocusControlState {\n  const refs = {\n    toggle: useRef<ButtonProps.Ref>(null),\n    close: useRef<ButtonProps.Ref>(null),\n    slider: useRef<HTMLDivElement>(null),\n  };\n  const previousFocusedElement = useRef<HTMLElement>();\n  const shouldFocus = useRef(false);\n  const lastInteraction = useRef<DrawerLastInteraction | null>(null);\n\n  useEffect(() => {\n    switch (lastInteraction.current?.type) {\n      case 'open':\n        refs.slider.current?.focus();\n        break;\n      case 'close':\n        refs.toggle.current?.focus();\n        break;\n    }\n    lastInteraction.current = null;\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, dependencies);\n\n  const doFocus = () => {\n    if (!shouldFocus.current) {\n      return;\n    }\n    if (isOpen) {\n      previousFocusedElement.current =\n        document.activeElement !== document.body ? (document.activeElement as HTMLElement) : undefined;\n      refs.close.current?.focus();\n    } else {\n      if (restoreFocus && previousFocusedElement.current && document.contains(previousFocusedElement.current)) {\n        previousFocusedElement.current.focus();\n        previousFocusedElement.current = undefined;\n      } else {\n        refs.toggle.current?.focus();\n      }\n    }\n    shouldFocus.current = false;\n  };\n\n  // We explictly want this effect to run when only `isOpen` changes\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  useEffect(doFocus, [isOpen]);\n\n  const loseFocus = useCallback(() => {\n    previousFocusedElement.current = undefined;\n  }, []);\n\n  return {\n    refs,\n    setFocus: force => {\n      shouldFocus.current = true;\n      if (force && isOpen) {\n        doFocus();\n      }\n    },\n    loseFocus,\n    setLastInteraction: (interaction: DrawerLastInteraction) => (lastInteraction.current = interaction),\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useEffect, useState } from 'react';\nimport { useObservedElement } from './use-observed-element';\n\nexport default function useContentHeight(headerSelector: string, footerSelector: string, disableBodyScroll?: boolean) {\n  const headerHeight = useObservedElement(headerSelector);\n  const footerHeight = useObservedElement(footerSelector);\n  const [headerFooterHeight, setHeaderFooterHeight] = useState(0);\n\n  // Delay applying changes in header/footer height, as applying them immediately can cause\n  // ResizeOberver warnings due to the algorithm thinking that the change might have side-effects\n  // further up the tree, therefore blocking notifications to prevent loops\n  useEffect(() => {\n    const id = requestAnimationFrame(() => setHeaderFooterHeight(headerHeight + footerHeight));\n    return () => cancelAnimationFrame(id);\n  }, [headerHeight, footerHeight]);\n\n  const heightStyleValue = `calc(100vh - ${headerFooterHeight}px)`;\n\n  return {\n    headerHeight,\n    footerHeight,\n    contentHeightStyle: {\n      [disableBodyScroll ? 'height' : 'minHeight']: heightStyleValue,\n    },\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useEffect, useState } from 'react';\n\nexport default function useWindowWidth() {\n  const [width, setWidth] = useState(() => (typeof window !== 'undefined' ? window.innerWidth : 0));\n  useEffect(() => {\n    const handler = () => setWidth(window.innerWidth);\n    window.addEventListener('resize', handler);\n    return () => window.removeEventListener('resize', handler);\n  }, []);\n  return width;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useCallback, useEffect, useState } from 'react';\nimport { useResizeObserver } from '../../internal/hooks/container-queries';\n\nexport default function useAppLayoutOffsets(element: HTMLDivElement | null): { left: number; right: number } {\n  const [offsets, setOffsets] = useState({ left: 0, right: 0 });\n\n  const updatePosition = useCallback(() => {\n    if (!element) {\n      return;\n    }\n    const { left, right } = element.getBoundingClientRect();\n    const bodyWidth = document.body.clientWidth;\n\n    setOffsets({ left, right: bodyWidth - right });\n  }, [element]);\n\n  useEffect(() => {\n    window.addEventListener('resize', updatePosition);\n    return () => window.removeEventListener('resize', updatePosition);\n  }, [updatePosition]);\n\n  const getElement = useCallback(() => element, [element]);\n  useResizeObserver(getElement, updatePosition);\n\n  return offsets;\n}\n","function replaceClassName(origClass, classToRemove) {\n  return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n  if (element.classList) {\n    element.classList.remove(className);\n  } else if (typeof element.className === 'string') {\n    element.className = replaceClassName(element.className, className);\n  } else {\n    element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n  }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return addOneClass(node, c);\n  });\n};\n\nvar removeClass = function removeClass(node, classes) {\n  return node && classes && classes.split(' ').forEach(function (c) {\n    return removeOneClass(node, c);\n  });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n *         <div>\n *           {\"I'll receive my-node-* classes\"}\n *         </div>\n *       </CSSTransition>\n *       <button type=\"button\" onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n *   opacity: 0;\n * }\n * .my-node-enter-active {\n *   opacity: 1;\n *   transition: opacity 200ms;\n * }\n * .my-node-exit {\n *   opacity: 1;\n * }\n * .my-node-exit-active {\n *   opacity: 0;\n *   transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(CSSTransition, _React$Component);\n\n  function CSSTransition() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n    _this.appliedClasses = {\n      appear: {},\n      enter: {},\n      exit: {}\n    };\n\n    _this.onEnter = function (maybeNode, maybeAppearing) {\n      var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n          node = _this$resolveArgument[0],\n          appearing = _this$resolveArgument[1];\n\n      _this.removeClasses(node, 'exit');\n\n      _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n      if (_this.props.onEnter) {\n        _this.props.onEnter(maybeNode, maybeAppearing);\n      }\n    };\n\n    _this.onEntering = function (maybeNode, maybeAppearing) {\n      var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n          node = _this$resolveArgument2[0],\n          appearing = _this$resolveArgument2[1];\n\n      var type = appearing ? 'appear' : 'enter';\n\n      _this.addClass(node, type, 'active');\n\n      if (_this.props.onEntering) {\n        _this.props.onEntering(maybeNode, maybeAppearing);\n      }\n    };\n\n    _this.onEntered = function (maybeNode, maybeAppearing) {\n      var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n          node = _this$resolveArgument3[0],\n          appearing = _this$resolveArgument3[1];\n\n      var type = appearing ? 'appear' : 'enter';\n\n      _this.removeClasses(node, type);\n\n      _this.addClass(node, type, 'done');\n\n      if (_this.props.onEntered) {\n        _this.props.onEntered(maybeNode, maybeAppearing);\n      }\n    };\n\n    _this.onExit = function (maybeNode) {\n      var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n          node = _this$resolveArgument4[0];\n\n      _this.removeClasses(node, 'appear');\n\n      _this.removeClasses(node, 'enter');\n\n      _this.addClass(node, 'exit', 'base');\n\n      if (_this.props.onExit) {\n        _this.props.onExit(maybeNode);\n      }\n    };\n\n    _this.onExiting = function (maybeNode) {\n      var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n          node = _this$resolveArgument5[0];\n\n      _this.addClass(node, 'exit', 'active');\n\n      if (_this.props.onExiting) {\n        _this.props.onExiting(maybeNode);\n      }\n    };\n\n    _this.onExited = function (maybeNode) {\n      var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n          node = _this$resolveArgument6[0];\n\n      _this.removeClasses(node, 'exit');\n\n      _this.addClass(node, 'exit', 'done');\n\n      if (_this.props.onExited) {\n        _this.props.onExited(maybeNode);\n      }\n    };\n\n    _this.resolveArguments = function (maybeNode, maybeAppearing) {\n      return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n      : [maybeNode, maybeAppearing];\n    };\n\n    _this.getClassNames = function (type) {\n      var classNames = _this.props.classNames;\n      var isStringClassNames = typeof classNames === 'string';\n      var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n      var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n      var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n      var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n      return {\n        baseClassName: baseClassName,\n        activeClassName: activeClassName,\n        doneClassName: doneClassName\n      };\n    };\n\n    return _this;\n  }\n\n  var _proto = CSSTransition.prototype;\n\n  _proto.addClass = function addClass(node, type, phase) {\n    var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n    var _this$getClassNames = this.getClassNames('enter'),\n        doneClassName = _this$getClassNames.doneClassName;\n\n    if (type === 'appear' && phase === 'done' && doneClassName) {\n      className += \" \" + doneClassName;\n    } // This is to force a repaint,\n    // which is necessary in order to transition styles when adding a class name.\n\n\n    if (phase === 'active') {\n      if (node) forceReflow(node);\n    }\n\n    if (className) {\n      this.appliedClasses[type][phase] = className;\n\n      _addClass(node, className);\n    }\n  };\n\n  _proto.removeClasses = function removeClasses(node, type) {\n    var _this$appliedClasses$ = this.appliedClasses[type],\n        baseClassName = _this$appliedClasses$.base,\n        activeClassName = _this$appliedClasses$.active,\n        doneClassName = _this$appliedClasses$.done;\n    this.appliedClasses[type] = {};\n\n    if (baseClassName) {\n      removeClass(node, baseClassName);\n    }\n\n    if (activeClassName) {\n      removeClass(node, activeClassName);\n    }\n\n    if (doneClassName) {\n      removeClass(node, doneClassName);\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        _ = _this$props.classNames,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n    return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n      onEnter: this.onEnter,\n      onEntered: this.onEntered,\n      onEntering: this.onEntering,\n      onExit: this.onExit,\n      onExiting: this.onExiting,\n      onExited: this.onExited\n    }));\n  };\n\n  return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n  classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n  /**\n   * The animation classNames applied to the component as it appears, enters,\n   * exits or has finished the transition. A single name can be provided, which\n   * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n   *\n   * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n   * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n   * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n   *\n   * A few details to note about how these classes are applied:\n   *\n   * 1. They are _joined_ with the ones that are already defined on the child\n   *    component, so if you want to add some base styles, you can use\n   *    `className` without worrying that it will be overridden.\n   *\n   * 2. If the transition component mounts with `in={false}`, no classes are\n   *    applied yet. You might be expecting `*-exit-done`, but if you think\n   *    about it, a component cannot finish exiting if it hasn't entered yet.\n   *\n   * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n   *    allows you to define different behavior for when appearing is done and\n   *    when regular entering is done, using selectors like\n   *    `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n   *    an epic entrance animation when element first appears in the DOM using\n   *    [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n   *    simply use `fade-enter-done` for defining both cases.\n   *\n   * Each individual classNames can also be specified independently like:\n   *\n   * ```js\n   * classNames={{\n   *  appear: 'my-appear',\n   *  appearActive: 'my-active-appear',\n   *  appearDone: 'my-done-appear',\n   *  enter: 'my-enter',\n   *  enterActive: 'my-active-enter',\n   *  enterDone: 'my-done-enter',\n   *  exit: 'my-exit',\n   *  exitActive: 'my-active-exit',\n   *  exitDone: 'my-done-exit',\n   * }}\n   * ```\n   *\n   * If you want to set these classes using CSS Modules:\n   *\n   * ```js\n   * import styles from './styles.css';\n   * ```\n   *\n   * you might want to use camelCase in your CSS file, that way could simply\n   * spread them instead of listing them one by one:\n   *\n   * ```js\n   * classNames={{ ...styles }}\n   * ```\n   *\n   * @type {string | {\n   *  appear?: string,\n   *  appearActive?: string,\n   *  appearDone?: string,\n   *  enter?: string,\n   *  enterActive?: string,\n   *  enterDone?: string,\n   *  exit?: string,\n   *  exitActive?: string,\n   *  exitDone?: string,\n   * }}\n   */\n  classNames: classNamesShape,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n   * applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter-active' or\n   * 'appear-active' class is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'enter' or\n   * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' class is\n   * applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * A `<Transition>` callback fired immediately after the 'exit' classes\n   * are **removed** and the `exit-done` class is added to the DOM node.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement)\n   */\n  onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n  if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n  if (element.classList) return !!className && element.classList.contains(className);\n  return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef } from 'react';\n\nlet counter = 0;\nconst useIdFallback = () => {\n  const idRef = useRef<string | null>(null);\n  if (!idRef.current) {\n    idRef.current = `${counter++}-${Date.now()}-${Math.round(Math.random() * 10000)}`;\n  }\n  return idRef.current;\n};\n\nconst useId: typeof useIdFallback = (React as any).useId ?? useIdFallback;\n\nexport function useUniqueId(prefix?: string) {\n  return `${prefix ? prefix : ''}` + useId();\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"content-enter\": \"awsui_content-enter_gwq0h_ckd2c_97\",\n  \"awsui-motion-fade-in\": \"awsui_awsui-motion-fade-in_gwq0h_ckd2c_1\",\n  \"trigger-expanded\": \"awsui_trigger-expanded_gwq0h_ckd2c_119\",\n  \"icon\": \"awsui_icon_gwq0h_ckd2c_133\",\n  \"root\": \"awsui_root_gwq0h_ckd2c_151\",\n  \"expand-button\": \"awsui_expand-button_gwq0h_ckd2c_168\",\n  \"expanded\": \"awsui_expanded_gwq0h_ckd2c_175\",\n  \"icon-container\": \"awsui_icon-container_gwq0h_ckd2c_179\",\n  \"icon-container-container\": \"awsui_icon-container-container_gwq0h_ckd2c_184\",\n  \"wrapper\": \"awsui_wrapper_gwq0h_ckd2c_188\",\n  \"wrapper-default\": \"awsui_wrapper-default_gwq0h_ckd2c_196\",\n  \"wrapper-footer\": \"awsui_wrapper-footer_gwq0h_ckd2c_199\",\n  \"wrapper-navigation\": \"awsui_wrapper-navigation_gwq0h_ckd2c_205\",\n  \"wrapper-container\": \"awsui_wrapper-container_gwq0h_ckd2c_219\",\n  \"wrapper-expanded\": \"awsui_wrapper-expanded_gwq0h_ckd2c_225\",\n  \"header\": \"awsui_header_gwq0h_ckd2c_229\",\n  \"header-wrapper\": \"awsui_header-wrapper_gwq0h_ckd2c_232\",\n  \"header-button\": \"awsui_header-button_gwq0h_ckd2c_239\",\n  \"header-container-button\": \"awsui_header-container-button_gwq0h_ckd2c_243\",\n  \"with-interactive-elements\": \"awsui_with-interactive-elements_gwq0h_ckd2c_261\",\n  \"header-container\": \"awsui_header-container_gwq0h_ckd2c_243\",\n  \"header-navigation\": \"awsui_header-navigation_gwq0h_ckd2c_273\",\n  \"content\": \"awsui_content_gwq0h_ckd2c_97\",\n  \"content-default\": \"awsui_content-default_gwq0h_ckd2c_309\",\n  \"content-footer\": \"awsui_content-footer_gwq0h_ckd2c_312\",\n  \"content-expanded\": \"awsui_content-expanded_gwq0h_ckd2c_315\",\n  \"focusable\": \"awsui_focusable_gwq0h_ckd2c_319\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport interface Dimensions {\n  height: number;\n  width: number;\n  top: number;\n  left: number;\n}\n\nexport const getOverflowParents = (element: HTMLElement): HTMLElement[] => {\n  const parents = [];\n  let node: HTMLElement | null = element;\n\n  while ((node = node.parentElement) && node !== document.body) {\n    getComputedStyle(node).overflow !== 'visible' && parents.push(node);\n  }\n  return parents;\n};\n\nexport const getOverflowParentDimensions = (\n  element: HTMLElement,\n  excludeClosestParent = false,\n  expandToViewport = false,\n  canExpandOutsideViewport = false\n): Dimensions[] => {\n  const parents = expandToViewport\n    ? []\n    : getOverflowParents(element).map(el => {\n        const { height, width, top, left } = el.getBoundingClientRect();\n        return {\n          // Treat the whole scrollable area as the available height\n          // if we're allowed to expand past the viewport.\n          height: canExpandOutsideViewport ? el.scrollHeight : height,\n          width,\n          top,\n          left,\n        };\n      });\n\n  if (canExpandOutsideViewport && !expandToViewport) {\n    const documentDimensions = document.documentElement.getBoundingClientRect();\n    parents.push({\n      width: Math.max(documentDimensions.width, document.documentElement.clientWidth),\n      height: Math.max(documentDimensions.height, document.documentElement.clientHeight),\n      top: documentDimensions.top,\n      left: documentDimensions.left,\n    });\n  } else {\n    parents.push({\n      height: window.innerHeight,\n      width: window.innerWidth,\n      top: 0,\n      left: 0,\n    });\n  }\n\n  if (excludeClosestParent && !expandToViewport) {\n    parents.shift();\n  }\n\n  return parents;\n};\n\ntype ScrollIntoViewOptions = Parameters<HTMLElement['scrollIntoView']>[0];\n\n/**\n * Calls `scrollIntoView` on the provided element with sensible defaults. If\n * the element does not existed or does not support the `scrollIntoView`\n * method, it will do nothing. This wrapper is created to support environments\n * where the native function is not available like JSDom (feature request:\n * https://github.com/jsdom/jsdom/issues/1422).\n *\n * @param element to be scrolled into view\n * @param options native options for `scrollIntoView`\n */\nexport function scrollElementIntoView(\n  element: HTMLElement | undefined,\n  options: ScrollIntoViewOptions = { block: 'nearest', inline: 'nearest' }\n) {\n  element?.scrollIntoView?.(options);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { RefObject, useState, useLayoutEffect, useCallback, useEffect, createContext } from 'react';\nimport { useAppLayoutContext } from '../internal/context/app-layout-context';\nimport { findUpUntil, supportsStickyPosition } from '../internal/utils/dom';\nimport { getOverflowParents } from '../internal/utils/scrollable-containers';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport customCssProps from '../internal/generated/custom-css-properties';\nimport { useMobile } from '../internal/hooks/use-mobile';\ninterface StickyHeaderContextProps {\n  isStuck: boolean;\n}\n\ninterface ComputeOffsetProps {\n  isMobile: boolean;\n  isVisualRefresh: boolean;\n  customCssProps: Record<string, string>;\n  __stickyOffset?: number;\n  __mobileStickyOffset?: number;\n  mobileBarHeight?: number;\n  stickyOffsetTop: number;\n  hasInnerOverflowParents: boolean;\n}\n\nexport function computeOffset({\n  isMobile,\n  isVisualRefresh,\n  customCssProps,\n  __stickyOffset,\n  __mobileStickyOffset,\n  mobileBarHeight = 0,\n  stickyOffsetTop,\n  hasInnerOverflowParents,\n}: ComputeOffsetProps) {\n  const effectiveStickyOffset = __stickyOffset ?? (hasInnerOverflowParents ? 0 : stickyOffsetTop);\n  /**\n   * The AppLayout refactor removed the need for passing the sticky offset in px all the time through the\n   * AppLayoutDomContext provider because that information already exists on the DOM in a custom property\n   * on the Layout subcomponent. Thus, if the Container header is sticky, we are in Visual Refresh and use\n   * body scroll then we will use that property. When a component is used outside AppLayout, we fall back\n   * to the default offset calculated in AppLayoutDomContext.\n   */\n  let computedOffset = `${effectiveStickyOffset}px`;\n  if (isMobile) {\n    // This mobile offset is only relevant for full page tables in the mobile viewport.\n    // It is obtained by the sum of stickyOffsetTop (AppLayout header height), mobileBarHeight (AppLayout mobile bar height) and\n    // __stickyOffset (value of the stickyHeaderVerticalOffset, set by users), from which we subtract __mobileStickyOffset (which is the table tools header height).\n\n    // Classic offset is calculated using the AppLayout context\n    const classicOffset = `${\n      stickyOffsetTop + mobileBarHeight + (__stickyOffset ?? 0) - (__mobileStickyOffset ?? 0)\n    }px`;\n\n    // VR offset is calculated using CSS custom properties\n    const visualRefreshOffset = `calc(var(${customCssProps.offsetTop}, 0px) + var(${\n      customCssProps.mobileBarHeight\n    }, 0px) + ${(__stickyOffset ?? 0) - (__mobileStickyOffset ?? 0)}px)`;\n\n    computedOffset = isVisualRefresh ? visualRefreshOffset : classicOffset;\n  } else if (isVisualRefresh && !hasInnerOverflowParents) {\n    computedOffset = `var(${customCssProps.offsetTopWithNotifications}, ${computedOffset})`;\n  }\n  return computedOffset;\n}\n\nexport const StickyHeaderContext = createContext<StickyHeaderContextProps>({\n  isStuck: false,\n});\n\nexport const useStickyHeader = (\n  rootRef: RefObject<HTMLDivElement>,\n  headerRef: RefObject<HTMLDivElement>,\n  __stickyHeader?: boolean,\n  __stickyOffset?: number,\n  __mobileStickyOffset?: number,\n  __disableMobile = true\n) => {\n  const isMobile = useMobile();\n  // We reach into AppLayoutContext in case sticky header needs to be offset down by the height\n  // of other sticky elements positioned on top of the view.\n  const { stickyOffsetTop, mobileBarHeight } = useAppLayoutContext();\n  const disableSticky = isMobile && __disableMobile;\n  const isSticky = supportsStickyPosition() && !disableSticky && !!__stickyHeader;\n  const isVisualRefresh = useVisualRefresh();\n\n  // If it has overflow parents inside the app layout, we shouldn't apply a sticky offset.\n  const [hasInnerOverflowParents, setHasInnerOverflowParents] = useState(false);\n  const [isStuck, setIsStuck] = useState(false);\n  useLayoutEffect(() => {\n    if (rootRef.current) {\n      const overflowParents = getOverflowParents(rootRef.current);\n      const mainElement = findUpUntil(rootRef.current, elem => elem.tagName === 'MAIN');\n      // In both versions of the app layout, the scrolling element for disableBodyScroll\n      // is the <main>. If the closest overflow parent is also the closest <main> and we have\n      // offset values, it's safe to assume that it's the app layout scroll root and we\n      // should stop there.\n      setHasInnerOverflowParents(overflowParents.length > 0 && overflowParents[0] !== mainElement);\n    }\n  }, [rootRef]);\n\n  const computedOffset = computeOffset({\n    isMobile,\n    isVisualRefresh,\n    customCssProps,\n    __stickyOffset,\n    __mobileStickyOffset,\n    mobileBarHeight,\n    stickyOffsetTop,\n    hasInnerOverflowParents,\n  });\n\n  const stickyStyles = isSticky\n    ? {\n        style: {\n          top: computedOffset,\n        },\n      }\n    : {};\n\n  // \"stuck\" state, when the header has moved from its original posititon has a\n  // box-shadow, applied here by a \"header-stuck\" className\n  const checkIfStuck = useCallback(() => {\n    if (rootRef.current && headerRef.current) {\n      const rootTop = rootRef.current.getBoundingClientRect().top;\n      const headerTop = headerRef.current.getBoundingClientRect().top;\n      if (rootTop < headerTop) {\n        setIsStuck(true);\n      } else {\n        setIsStuck(false);\n      }\n    }\n  }, [rootRef, headerRef]);\n  useEffect(() => {\n    if (isSticky) {\n      window.addEventListener('scroll', checkIfStuck, true);\n      window.addEventListener('resize', checkIfStuck);\n      return () => {\n        window.removeEventListener('scroll', checkIfStuck, true);\n        window.removeEventListener('resize', checkIfStuck);\n      };\n    }\n  }, [isSticky, checkIfStuck]);\n  return {\n    isSticky,\n    isStuck,\n    stickyStyles,\n  };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useContext, useLayoutEffect } from 'react';\n\nimport { DynamicOverlapContext } from '../../context/dynamic-overlap-context';\nimport { useContainerQuery } from '../container-queries';\n\nexport interface UseDynamicOverlapProps {\n  /**\n   * Disables hook if not needed. By default, `false`.\n   */\n  disabled?: boolean;\n}\n\n/**\n * Observes the height of an element referenced by the returning ref and sets the value as overlapping\n * height for the surrounding AppLayout component.\n * @param props.disabled disables hook if not applicable\n * @returns ref to be measured as overlapping height\n */\nexport function useDynamicOverlap(props?: UseDynamicOverlapProps) {\n  const disabled = props?.disabled ?? false;\n  const setDynamicOverlapHeight = useContext(DynamicOverlapContext);\n  const [overlapHeight, overlapElementRef] = useContainerQuery(rect => rect.height);\n\n  useLayoutEffect(\n    function handleDynamicOverlapHeight() {\n      if (!disabled) {\n        setDynamicOverlapHeight(overlapHeight ?? 0);\n      }\n\n      return () => {\n        if (!disabled) {\n          setDynamicOverlapHeight(0);\n        }\n      };\n    },\n    [disabled, overlapHeight, setDynamicOverlapHeight]\n  );\n\n  return overlapElementRef;\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_14iqq_9mpy1_97\",\n  \"fit-height\": \"awsui_fit-height_14iqq_9mpy1_111\",\n  \"variant-default\": \"awsui_variant-default_14iqq_9mpy1_116\",\n  \"variant-stacked\": \"awsui_variant-stacked_14iqq_9mpy1_116\",\n  \"sticky-enabled\": \"awsui_sticky-enabled_14iqq_9mpy1_169\",\n  \"header\": \"awsui_header_14iqq_9mpy1_176\",\n  \"header-sticky-disabled\": \"awsui_header-sticky-disabled_14iqq_9mpy1_181\",\n  \"header-sticky-enabled\": \"awsui_header-sticky-enabled_14iqq_9mpy1_185\",\n  \"header-stuck\": \"awsui_header-stuck_14iqq_9mpy1_191\",\n  \"header-variant-cards\": \"awsui_header-variant-cards_14iqq_9mpy1_197\",\n  \"header-dynamic-height\": \"awsui_header-dynamic-height_14iqq_9mpy1_200\",\n  \"with-paddings\": \"awsui_with-paddings_14iqq_9mpy1_206\",\n  \"with-hidden-content\": \"awsui_with-hidden-content_14iqq_9mpy1_209\",\n  \"header-variant-full-page\": \"awsui_header-variant-full-page_14iqq_9mpy1_259\",\n  \"dark-header\": \"awsui_dark-header_14iqq_9mpy1_277\",\n  \"content\": \"awsui_content_14iqq_9mpy1_282\",\n  \"footer\": \"awsui_footer_14iqq_9mpy1_293\",\n  \"with-divider\": \"awsui_with-divider_14iqq_9mpy1_296\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useEffect, useRef } from 'react';\nimport { ContainerProps } from './interfaces';\nimport { getBaseProps } from '../internal/base-component';\nimport { useAppLayoutContext } from '../internal/context/app-layout-context';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { StickyHeaderContext, useStickyHeader } from './use-sticky-header';\nimport { useDynamicOverlap } from '../internal/hooks/use-dynamic-overlap';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport styles from './styles.css.js';\nimport { useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\n\nexport interface InternalContainerProps extends Omit<ContainerProps, 'variant'>, InternalBaseComponentProps {\n  __stickyHeader?: boolean;\n  __stickyOffset?: number;\n  __mobileStickyOffset?: number;\n  __disableFooterDivider?: boolean;\n  __disableFooterPaddings?: boolean;\n  __hiddenContent?: boolean;\n  __headerRef?: React.RefObject<HTMLDivElement>;\n  __headerId?: string;\n  __darkHeader?: boolean;\n  __disableStickyMobile?: boolean;\n  /**\n   * Additional internal variant:\n   * * `embedded` - Use this variant within a parent container (such as a modal,\n   *                expandable section, container or split panel).\n   * * `full-page` – Only for internal use in table, cards and other components\n   */\n  variant?: ContainerProps['variant'] | 'embedded' | 'full-page' | 'cards';\n}\n\nexport default function InternalContainer({\n  header,\n  footer,\n  children,\n  variant = 'default',\n  disableHeaderPaddings = false,\n  disableContentPaddings = false,\n  fitHeight,\n  __stickyOffset,\n  __mobileStickyOffset,\n  __stickyHeader = false,\n  __internalRootRef = null,\n  __disableFooterDivider = false,\n  __disableFooterPaddings = false,\n  __hiddenContent = false,\n  __headerRef,\n  __headerId,\n  __darkHeader = false,\n  __disableStickyMobile = true,\n  ...restProps\n}: InternalContainerProps) {\n  const isMobile = useMobile();\n  const baseProps = getBaseProps(restProps);\n  const rootRef = useRef<HTMLDivElement>(null);\n  const headerRef = useRef<HTMLDivElement>(null);\n  const { isSticky, isStuck, stickyStyles } = useStickyHeader(\n    rootRef,\n    headerRef,\n    __stickyHeader,\n    __stickyOffset,\n    __mobileStickyOffset,\n    __disableStickyMobile\n  );\n  const { setHasStickyBackground } = useAppLayoutContext();\n  const isRefresh = useVisualRefresh();\n  const { subStepRef, funnelSubStepProps } = useFunnelSubStep();\n\n  const hasDynamicHeight = isRefresh && variant === 'full-page';\n  const overlapElement = useDynamicOverlap({ disabled: !hasDynamicHeight || !__darkHeader });\n\n  const mergedRef = useMergeRefs(rootRef, subStepRef, __internalRootRef);\n  const headerMergedRef = useMergeRefs(headerRef, overlapElement, __headerRef);\n  const headerIdProp = __headerId ? { id: __headerId } : {};\n\n  /**\n   * The visual refresh AppLayout component needs to know if a child component\n   * has a high contrast sticky header. This is to make sure the background element\n   * stays in the same vertical position as the header content.\n   */\n  useEffect(() => {\n    const shouldUpdateStickyBackground = isSticky && variant === 'full-page' && setHasStickyBackground;\n    if (shouldUpdateStickyBackground) {\n      setHasStickyBackground(true);\n    }\n\n    return () => {\n      if (shouldUpdateStickyBackground) {\n        setHasStickyBackground(false);\n      }\n    };\n  }, [isSticky, setHasStickyBackground, variant]);\n\n  // The container is only sticky on mobile if it is the header for the table.\n  // In this case we don't want the container to have sticky styles, as only the table header row will show as stuck on scroll.\n  const shouldHaveStickyStyles = isSticky && !isMobile;\n\n  return (\n    <div\n      {...baseProps}\n      {...funnelSubStepProps}\n      className={clsx(\n        baseProps.className,\n        styles.root,\n        styles[`variant-${variant}`],\n        fitHeight && styles['fit-height'],\n        shouldHaveStickyStyles && [styles['sticky-enabled']]\n      )}\n      ref={mergedRef}\n    >\n      {header && (\n        <StickyHeaderContext.Provider value={{ isStuck }}>\n          <div\n            className={clsx(styles.header, styles[`header-variant-${variant}`], {\n              [styles['header-sticky-disabled']]: __stickyHeader && !isSticky,\n              [styles['header-sticky-enabled']]: isSticky,\n              [styles['header-dynamic-height']]: hasDynamicHeight,\n              [styles['header-stuck']]: isStuck,\n              [styles['with-paddings']]: !disableHeaderPaddings,\n              [styles['with-hidden-content']]: !children || __hiddenContent,\n            })}\n            {...headerIdProp}\n            {...stickyStyles}\n            ref={headerMergedRef}\n          >\n            {__darkHeader ? (\n              <div className={clsx(styles['dark-header'], 'awsui-context-content-header')}>{header}</div>\n            ) : (\n              header\n            )}\n          </div>\n        </StickyHeaderContext.Provider>\n      )}\n      <div\n        className={clsx(styles.content, {\n          [styles['with-paddings']]: !disableContentPaddings,\n        })}\n      >\n        {children}\n      </div>\n      {footer && (\n        <div\n          className={clsx(styles.footer, {\n            [styles['with-divider']]: !__disableFooterDivider,\n            [styles['with-paddings']]: !__disableFooterPaddings,\n          })}\n        >\n          {footer}\n        </div>\n      )}\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport InternalContainer from '../container/internal';\nimport React from 'react';\nimport { ExpandableSectionProps } from './interfaces';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\n\ninterface ExpandableSectionContainerProps extends InternalBaseComponentProps {\n  className?: string;\n  header: React.ReactNode;\n  children?: React.ReactNode;\n  variant: ExpandableSectionProps.Variant;\n  expanded: boolean | undefined;\n  disableContentPaddings: boolean | undefined;\n}\n\nexport const ExpandableSectionContainer = ({\n  className,\n  children,\n  header,\n  variant,\n  expanded,\n  disableContentPaddings,\n  __internalRootRef,\n  ...rest\n}: ExpandableSectionContainerProps) => {\n  if (variant === 'container') {\n    return (\n      <InternalContainer\n        {...rest}\n        className={className}\n        header={header}\n        variant=\"default\"\n        disableContentPaddings={disableContentPaddings || !expanded}\n        disableHeaderPaddings={true}\n        __hiddenContent={!expanded}\n        __internalRootRef={__internalRootRef}\n      >\n        {children}\n      </InternalContainer>\n    );\n  }\n\n  return (\n    <div className={className} {...rest} ref={__internalRootRef}>\n      {header}\n      {children}\n    </div>\n  );\n};\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_2qdw9_10tsf_93\",\n  \"root-no-actions\": \"awsui_root-no-actions_2qdw9_10tsf_110\",\n  \"root-variant-h1\": \"awsui_root-variant-h1_2qdw9_10tsf_110\",\n  \"root-variant-h1-refresh\": \"awsui_root-variant-h1-refresh_2qdw9_10tsf_113\",\n  \"root-variant-h2\": \"awsui_root-variant-h2_2qdw9_10tsf_116\",\n  \"root-has-description\": \"awsui_root-has-description_2qdw9_10tsf_116\",\n  \"root-variant-h2-refresh\": \"awsui_root-variant-h2-refresh_2qdw9_10tsf_119\",\n  \"root-variant-h3\": \"awsui_root-variant-h3_2qdw9_10tsf_122\",\n  \"root-variant-h3-refresh\": \"awsui_root-variant-h3-refresh_2qdw9_10tsf_125\",\n  \"root-no-wrap\": \"awsui_root-no-wrap_2qdw9_10tsf_128\",\n  \"main\": \"awsui_main_2qdw9_10tsf_132\",\n  \"main-variant-h1\": \"awsui_main-variant-h1_2qdw9_10tsf_139\",\n  \"main-variant-h1-refresh\": \"awsui_main-variant-h1-refresh_2qdw9_10tsf_142\",\n  \"main-variant-h2\": \"awsui_main-variant-h2_2qdw9_10tsf_148\",\n  \"main-variant-h3\": \"awsui_main-variant-h3_2qdw9_10tsf_148\",\n  \"main-variant-h2-refresh\": \"awsui_main-variant-h2-refresh_2qdw9_10tsf_154\",\n  \"actions\": \"awsui_actions_2qdw9_10tsf_161\",\n  \"actions-variant-h1\": \"awsui_actions-variant-h1_2qdw9_10tsf_165\",\n  \"actions-variant-h1-refresh\": \"awsui_actions-variant-h1-refresh_2qdw9_10tsf_168\",\n  \"actions-variant-h2\": \"awsui_actions-variant-h2_2qdw9_10tsf_171\",\n  \"actions-variant-h3\": \"awsui_actions-variant-h3_2qdw9_10tsf_171\",\n  \"actions-variant-h2-refresh\": \"awsui_actions-variant-h2-refresh_2qdw9_10tsf_177\",\n  \"actions-variant-h3-refresh\": \"awsui_actions-variant-h3-refresh_2qdw9_10tsf_180\",\n  \"title\": \"awsui_title_2qdw9_10tsf_184\",\n  \"title-variant-h1\": \"awsui_title-variant-h1_2qdw9_10tsf_190\",\n  \"title-variant-h2\": \"awsui_title-variant-h2_2qdw9_10tsf_193\",\n  \"title-variant-h3\": \"awsui_title-variant-h3_2qdw9_10tsf_193\",\n  \"title-variant-h2-refresh\": \"awsui_title-variant-h2-refresh_2qdw9_10tsf_199\",\n  \"info\": \"awsui_info_2qdw9_10tsf_206\",\n  \"description\": \"awsui_description_2qdw9_10tsf_210\",\n  \"description-variant-h1\": \"awsui_description-variant-h1_2qdw9_10tsf_215\",\n  \"description-variant-h1-refresh\": \"awsui_description-variant-h1-refresh_2qdw9_10tsf_220\",\n  \"description-variant-h2\": \"awsui_description-variant-h2_2qdw9_10tsf_223\",\n  \"description-variant-h3\": \"awsui_description-variant-h3_2qdw9_10tsf_228\",\n  \"description-variant-h3-refresh\": \"awsui_description-variant-h3-refresh_2qdw9_10tsf_234\",\n  \"heading\": \"awsui_heading_2qdw9_10tsf_238\",\n  \"heading-variant-h1\": \"awsui_heading-variant-h1_2qdw9_10tsf_247\",\n  \"heading-variant-h2\": \"awsui_heading-variant-h2_2qdw9_10tsf_252\",\n  \"heading-variant-h3\": \"awsui_heading-variant-h3_2qdw9_10tsf_257\",\n  \"heading-text\": \"awsui_heading-text_2qdw9_10tsf_263\",\n  \"heading-text-variant-h1\": \"awsui_heading-text-variant-h1_2qdw9_10tsf_266\",\n  \"heading-text-variant-h2\": \"awsui_heading-text-variant-h2_2qdw9_10tsf_274\",\n  \"heading-text-variant-h3\": \"awsui_heading-text-variant-h3_2qdw9_10tsf_282\",\n  \"counter\": \"awsui_counter_2qdw9_10tsf_291\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { createContext } from 'react';\n\nexport const InfoLinkLabelContext = createContext<string | undefined>(undefined);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useContext } from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport { StickyHeaderContext } from '../container/use-sticky-header';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { HeaderProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { SomeRequired } from '../internal/types';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { InfoLinkLabelContext } from '../internal/context/info-link-label-context';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { DATA_ATTR_FUNNEL_KEY, FUNNEL_KEY_SUBSTEP_NAME } from '../internal/analytics/selectors';\n\ninterface InternalHeaderProps extends SomeRequired<HeaderProps, 'variant'>, InternalBaseComponentProps {\n  __disableActionsWrapping?: boolean;\n}\n\nexport default function InternalHeader({\n  variant,\n  headingTagOverride,\n  children,\n  actions,\n  counter,\n  description,\n  info,\n  __internalRootRef = null,\n  __disableActionsWrapping,\n  ...restProps\n}: InternalHeaderProps) {\n  const isMobile = useMobile();\n  const HeadingTag = headingTagOverride ?? (variant === 'awsui-h1-sticky' ? 'h1' : variant);\n  const { isStuck } = useContext(StickyHeaderContext);\n  const baseProps = getBaseProps(restProps);\n  const isRefresh = useVisualRefresh();\n  const headingId = useUniqueId('heading');\n  // If is mobile there is no need to have the dynamic variant because it's scrolled out of view\n  const dynamicVariant = !isMobile && isStuck ? 'h2' : 'h1';\n  const variantOverride = variant === 'awsui-h1-sticky' ? (isRefresh ? dynamicVariant : 'h2') : variant;\n\n  return (\n    <div\n      {...baseProps}\n      className={clsx(\n        styles.root,\n        baseProps.className,\n        styles[`root-variant-${variantOverride}`],\n        isRefresh && styles[`root-variant-${variantOverride}-refresh`],\n        !actions && [styles[`root-no-actions`]],\n        description && [styles[`root-has-description`]],\n        __disableActionsWrapping && [styles['root-no-wrap']]\n      )}\n      ref={__internalRootRef}\n    >\n      <div\n        className={clsx(\n          styles.main,\n          styles[`main-variant-${variantOverride}`],\n          isRefresh && styles[`main-variant-${variantOverride}-refresh`]\n        )}\n      >\n        <div\n          className={clsx(\n            styles.title,\n            styles[`title-variant-${variantOverride}`],\n            isRefresh && styles[`title-variant-${variantOverride}-refresh`]\n          )}\n        >\n          <HeadingTag className={clsx(styles.heading, styles[`heading-variant-${variantOverride}`])}>\n            <span\n              {...{ [DATA_ATTR_FUNNEL_KEY]: FUNNEL_KEY_SUBSTEP_NAME }}\n              className={clsx(styles['heading-text'], styles[`heading-text-variant-${variantOverride}`])}\n              id={headingId}\n            >\n              {children}\n            </span>\n            {counter !== undefined && <span className={styles.counter}> {counter}</span>}\n          </HeadingTag>\n          <InfoLinkLabelContext.Provider value={headingId}>\n            {info && <span className={styles.info}>{info}</span>}\n          </InfoLinkLabelContext.Provider>\n        </div>\n        {description && (\n          <p\n            className={clsx(\n              styles.description,\n              styles[`description-variant-${variantOverride}`],\n              isRefresh && styles[`description-variant-${variantOverride}-refresh`]\n            )}\n          >\n            {description}\n          </p>\n        )}\n      </div>\n      {actions && (\n        <div\n          className={clsx(\n            styles.actions,\n            styles[`actions-variant-${variantOverride}`],\n            isRefresh && styles[`actions-variant-${variantOverride}-refresh`]\n          )}\n        >\n          {actions}\n        </div>\n      )}\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ExpandableSectionProps } from './interfaces';\nimport React, { KeyboardEventHandler, MouseEventHandler, ReactNode } from 'react';\nimport InternalIcon from '../icon/internal';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport InternalHeader from '../header/internal';\nimport ScreenreaderOnly from '../internal/components/screenreader-only';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { isDevelopment } from '../internal/is-development';\nimport { warnOnce } from '../internal/logging';\n\nexport const componentName = 'ExpandableSection';\n\ninterface ExpandableDefaultHeaderProps {\n  id: string;\n  className?: string;\n  children?: ReactNode;\n  expanded: boolean;\n  ariaControls: string;\n  ariaLabel?: string;\n  onKeyUp: KeyboardEventHandler;\n  onKeyDown: KeyboardEventHandler;\n  onClick: MouseEventHandler;\n  icon: JSX.Element;\n  variant: ExpandableSectionProps.Variant;\n}\n\ninterface ExpandableNavigationHeaderProps extends Omit<ExpandableDefaultHeaderProps, 'onKeyUp' | 'onKeyDown'> {\n  ariaLabelledBy?: string;\n}\n\ninterface ExpandableHeaderTextWrapperProps extends ExpandableDefaultHeaderProps {\n  headerDescription?: ReactNode;\n  headerCounter?: string;\n  headerInfo?: ReactNode;\n  headerActions?: ReactNode;\n  headingTagOverride?: ExpandableSectionProps.HeadingTag;\n}\n\ninterface ExpandableSectionHeaderProps extends Omit<ExpandableDefaultHeaderProps, 'children' | 'icon'> {\n  variant: ExpandableSectionProps.Variant;\n  header?: ReactNode;\n  headerText?: ReactNode;\n  headerDescription?: ReactNode;\n  headerCounter?: string;\n  headerInfo?: ReactNode;\n  headerActions?: ReactNode;\n  headingTagOverride?: ExpandableSectionProps.HeadingTag;\n  ariaLabelledBy?: string;\n}\n\nconst ExpandableDefaultHeader = ({\n  id,\n  className,\n  onClick,\n  ariaLabel,\n  ariaControls,\n  expanded,\n  children,\n  icon,\n  onKeyUp,\n  onKeyDown,\n  variant,\n}: ExpandableDefaultHeaderProps) => {\n  return (\n    <div\n      id={id}\n      role=\"button\"\n      className={clsx(className, styles['expand-button'])}\n      tabIndex={0}\n      onKeyUp={onKeyUp}\n      onKeyDown={onKeyDown}\n      onClick={onClick}\n      aria-label={ariaLabel}\n      aria-controls={ariaControls}\n      aria-expanded={expanded}\n    >\n      <div className={clsx(styles['icon-container'], styles[`icon-container-${variant}`])}>{icon}</div>\n      {children}\n    </div>\n  );\n};\n\nconst ExpandableNavigationHeader = ({\n  id,\n  className,\n  onClick,\n  ariaLabelledBy,\n  ariaLabel,\n  ariaControls,\n  expanded,\n  children,\n  icon,\n}: ExpandableNavigationHeaderProps) => {\n  return (\n    <div id={id} className={className} onClick={onClick}>\n      <button\n        className={clsx(styles['icon-container'], styles['expand-button'])}\n        aria-labelledby={ariaLabelledBy}\n        aria-label={ariaLabel}\n        aria-controls={ariaControls}\n        aria-expanded={expanded}\n        type=\"button\"\n      >\n        {icon}\n      </button>\n      {children}\n    </div>\n  );\n};\n\nconst ExpandableHeaderTextWrapper = ({\n  id,\n  className,\n  onClick,\n  ariaLabel,\n  ariaControls,\n  expanded,\n  children,\n  icon,\n  headerDescription,\n  headerCounter,\n  headerInfo,\n  headerActions,\n  variant,\n  headingTagOverride,\n  onKeyUp,\n  onKeyDown,\n}: ExpandableHeaderTextWrapperProps) => {\n  const screenreaderContentId = useUniqueId('expandable-section-header-content-');\n  const isContainer = variant === 'container';\n  const HeadingTag = headingTagOverride || 'div';\n  const hasInteractiveElements = isContainer && (headerInfo || headerActions);\n  const listeners = { onClick, onKeyDown, onKeyUp };\n  const wrapperListeners = hasInteractiveElements ? undefined : listeners;\n  const headerButtonListeners = hasInteractiveElements ? listeners : undefined;\n  const headerButton = (\n    <span\n      className={clsx(\n        styles['expand-button'],\n        isContainer ? styles['header-container-button'] : styles['header-button']\n      )}\n      role=\"button\"\n      tabIndex={0}\n      aria-label={ariaLabel}\n      // Do not use aria-labelledby={id} but ScreenreaderOnly because safari+VO does not read headerText in this case.\n      aria-labelledby={ariaLabel || !isContainer ? undefined : screenreaderContentId}\n      aria-controls={ariaControls}\n      aria-expanded={expanded}\n      {...headerButtonListeners}\n    >\n      <span className={clsx(styles['icon-container'], styles[`icon-container-${variant}`])}>{icon}</span>\n      <span>{children}</span>\n    </span>\n  );\n\n  return (\n    <div\n      id={id}\n      className={clsx(className, hasInteractiveElements && styles['with-interactive-elements'])}\n      {...wrapperListeners}\n    >\n      {isContainer ? (\n        <InternalHeader\n          variant=\"h2\"\n          description={headerDescription}\n          counter={headerCounter}\n          info={headerInfo}\n          actions={headerActions}\n          headingTagOverride={headingTagOverride}\n        >\n          {headerButton}\n        </InternalHeader>\n      ) : (\n        <HeadingTag className={styles['header-wrapper']}>{headerButton}</HeadingTag>\n      )}\n      {isContainer && (\n        <ScreenreaderOnly id={screenreaderContentId}>\n          {children} {headerCounter} {headerDescription}\n        </ScreenreaderOnly>\n      )}\n    </div>\n  );\n};\n\nexport const ExpandableSectionHeader = ({\n  id,\n  className,\n  variant,\n  header,\n  headerText,\n  headerDescription,\n  headerCounter,\n  headerInfo,\n  headerActions,\n  headingTagOverride,\n  expanded,\n  ariaControls,\n  ariaLabel,\n  ariaLabelledBy,\n  onKeyUp,\n  onKeyDown,\n  onClick,\n}: ExpandableSectionHeaderProps) => {\n  const icon = (\n    <InternalIcon\n      size={variant === 'container' ? 'medium' : 'normal'}\n      className={clsx(styles.icon, expanded && styles.expanded)}\n      name=\"caret-down-filled\"\n    />\n  );\n  const defaultHeaderProps = {\n    id: id,\n    icon: icon,\n    expanded: expanded,\n    ariaControls: ariaControls,\n    ariaLabel: ariaLabel,\n    onClick: onClick,\n    variant,\n  };\n\n  if ((headerDescription || headerCounter || headerInfo || headerActions) && variant !== 'container' && isDevelopment) {\n    warnOnce(\n      componentName,\n      'The `headerCounter`, `headerDescription`, `headerInfo` and `headerActions` props are only supported for the \"container\" variant.'\n    );\n  }\n\n  const wrapperClassName = clsx(styles.wrapper, styles[`wrapper-${variant}`], expanded && styles['wrapper-expanded']);\n  if (variant === 'navigation') {\n    return (\n      <ExpandableNavigationHeader\n        className={clsx(className, wrapperClassName)}\n        ariaLabelledBy={ariaLabelledBy}\n        {...defaultHeaderProps}\n      >\n        {headerText ?? header}\n      </ExpandableNavigationHeader>\n    );\n  }\n\n  if (headerText) {\n    return (\n      <ExpandableHeaderTextWrapper\n        className={clsx(className, wrapperClassName, expanded && styles.expanded)}\n        headerDescription={headerDescription}\n        headerCounter={headerCounter}\n        headerInfo={headerInfo}\n        headerActions={headerActions}\n        headingTagOverride={headingTagOverride}\n        onKeyUp={onKeyUp}\n        onKeyDown={onKeyDown}\n        {...defaultHeaderProps}\n      >\n        {headerText}\n      </ExpandableHeaderTextWrapper>\n    );\n  }\n\n  if (variant === 'container' && header && isDevelopment) {\n    warnOnce(componentName, 'Use `headerText` instead of `header` to provide the button within the heading for a11y.');\n  }\n\n  return (\n    <ExpandableDefaultHeader\n      className={clsx(className, wrapperClassName, styles.focusable, expanded && styles.expanded)}\n      onKeyUp={onKeyUp}\n      onKeyDown={onKeyDown}\n      {...defaultHeaderProps}\n    >\n      {header}\n    </ExpandableDefaultHeader>\n  );\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { KeyboardEvent, useCallback, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport clsx from 'clsx';\n\nimport { getBaseProps } from '../internal/base-component';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { KeyCode } from '../internal/keycode';\nimport { fireNonCancelableEvent } from '../internal/events';\n\nimport { ExpandableSectionProps } from './interfaces';\n\nimport styles from './styles.css.js';\nimport { ExpandableSectionContainer } from './expandable-section-container';\nimport { ExpandableSectionHeader } from './expandable-section-header';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\n\ntype InternalExpandableSectionProps = ExpandableSectionProps & InternalBaseComponentProps;\n\nexport default function InternalExpandableSection({\n  expanded: controlledExpanded,\n  defaultExpanded,\n  onChange,\n  variant = 'default',\n  children,\n  header,\n  headerText,\n  headerCounter,\n  headerDescription,\n  headerInfo,\n  headerActions,\n  headingTagOverride,\n  disableContentPaddings,\n  headerAriaLabel,\n  __internalRootRef,\n  ...props\n}: InternalExpandableSectionProps) {\n  const ref = useRef<HTMLDivElement>(null);\n  const controlId = useUniqueId();\n  const triggerControlId = `${controlId}-trigger`;\n\n  const baseProps = getBaseProps(props);\n  const [expanded, setExpanded] = useControllable(controlledExpanded, onChange, defaultExpanded, {\n    componentName: 'ExpandableSection',\n    controlledProp: 'expanded',\n    changeHandler: 'onChange',\n  });\n\n  const onExpandChange = useCallback(\n    (expanded: boolean) => {\n      setExpanded(expanded);\n      fireNonCancelableEvent(onChange, { expanded });\n    },\n    [onChange, setExpanded]\n  );\n\n  const onClick = useCallback(() => {\n    onExpandChange(!expanded);\n  }, [onExpandChange, expanded]);\n\n  const onKeyUp = useCallback(\n    (event: KeyboardEvent<Element>) => {\n      const interactionKeys = [KeyCode.enter, KeyCode.space];\n\n      if (interactionKeys.indexOf(event.keyCode) !== -1) {\n        onExpandChange(!expanded);\n      }\n    },\n    [onExpandChange, expanded]\n  );\n\n  const onKeyDown = useCallback((event: KeyboardEvent<Element>) => {\n    if (event.keyCode === KeyCode.space) {\n      // Prevent the page from scrolling when toggling the component with the space bar.\n      event.preventDefault();\n    }\n  }, []);\n\n  const triggerProps = {\n    ariaControls: controlId,\n    ariaLabel: headerAriaLabel,\n    ariaLabelledBy: headerAriaLabel ? undefined : triggerControlId,\n    onKeyUp,\n    onKeyDown,\n    onClick,\n  };\n\n  return (\n    <ExpandableSectionContainer\n      {...baseProps}\n      expanded={expanded}\n      className={clsx(baseProps.className, styles.root)}\n      variant={variant}\n      disableContentPaddings={disableContentPaddings}\n      header={\n        <ExpandableSectionHeader\n          id={triggerControlId}\n          className={clsx(styles.header, styles[`header-${variant}`])}\n          variant={variant}\n          expanded={!!expanded}\n          header={header}\n          headerText={headerText}\n          headerDescription={headerDescription}\n          headerCounter={headerCounter}\n          headerInfo={headerInfo}\n          headerActions={headerActions}\n          headingTagOverride={headingTagOverride}\n          {...triggerProps}\n        />\n      }\n      __internalRootRef={__internalRootRef}\n    >\n      <CSSTransition in={expanded} timeout={30} classNames={{ enter: styles['content-enter'] }} nodeRef={ref}>\n        <div\n          id={controlId}\n          ref={ref}\n          className={clsx(styles.content, styles[`content-${variant}`], expanded && styles['content-expanded'])}\n          role=\"group\"\n          aria-label={triggerProps.ariaLabel}\n          aria-labelledby={triggerProps.ariaLabelledBy}\n        >\n          {children}\n        </div>\n      </CSSTransition>\n    </ExpandableSectionContainer>\n  );\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_18wu0_op4vh_93\",\n  \"box\": \"awsui_box_18wu0_op4vh_207\",\n  \"p-variant\": \"awsui_p-variant_18wu0_op4vh_207\",\n  \"color-default\": \"awsui_color-default_18wu0_op4vh_207\",\n  \"b-variant\": \"awsui_b-variant_18wu0_op4vh_207\",\n  \"strong-variant\": \"awsui_strong-variant_18wu0_op4vh_207\",\n  \"code-variant\": \"awsui_code-variant_18wu0_op4vh_207\",\n  \"pre-variant\": \"awsui_pre-variant_18wu0_op4vh_207\",\n  \"samp-variant\": \"awsui_samp-variant_18wu0_op4vh_207\",\n  \"h1-variant\": \"awsui_h1-variant_18wu0_op4vh_211\",\n  \"h2-variant\": \"awsui_h2-variant_18wu0_op4vh_211\",\n  \"h3-variant\": \"awsui_h3-variant_18wu0_op4vh_211\",\n  \"h4-variant\": \"awsui_h4-variant_18wu0_op4vh_211\",\n  \"h5-variant\": \"awsui_h5-variant_18wu0_op4vh_211\",\n  \"small-variant\": \"awsui_small-variant_18wu0_op4vh_215\",\n  \"a-variant\": \"awsui_a-variant_18wu0_op4vh_219\",\n  \"font-size-default\": \"awsui_font-size-default_18wu0_op4vh_223\",\n  \"font-weight-default\": \"awsui_font-weight-default_18wu0_op4vh_263\",\n  \"key-label-variant\": \"awsui_key-label-variant_18wu0_op4vh_303\",\n  \"value-large-variant\": \"awsui_value-large-variant_18wu0_op4vh_310\",\n  \"font-weight-heavy\": \"awsui_font-weight-heavy_18wu0_op4vh_317\",\n  \"color-inverted\": \"awsui_color-inverted_18wu0_op4vh_322\",\n  \"color-text-label\": \"awsui_color-text-label_18wu0_op4vh_325\",\n  \"color-text-body-secondary\": \"awsui_color-text-body-secondary_18wu0_op4vh_328\",\n  \"color-text-status-error\": \"awsui_color-text-status-error_18wu0_op4vh_331\",\n  \"color-text-status-success\": \"awsui_color-text-status-success_18wu0_op4vh_334\",\n  \"color-text-status-info\": \"awsui_color-text-status-info_18wu0_op4vh_337\",\n  \"color-text-status-inactive\": \"awsui_color-text-status-inactive_18wu0_op4vh_340\",\n  \"color-inherit\": \"awsui_color-inherit_18wu0_op4vh_343\",\n  \"font-size-body-s\": \"awsui_font-size-body-s_18wu0_op4vh_346\",\n  \"font-size-body-m\": \"awsui_font-size-body-m_18wu0_op4vh_351\",\n  \"font-size-heading-xs\": \"awsui_font-size-heading-xs_18wu0_op4vh_355\",\n  \"font-size-heading-s\": \"awsui_font-size-heading-s_18wu0_op4vh_359\",\n  \"font-size-heading-m\": \"awsui_font-size-heading-m_18wu0_op4vh_364\",\n  \"font-size-heading-l\": \"awsui_font-size-heading-l_18wu0_op4vh_369\",\n  \"font-size-heading-xl\": \"awsui_font-size-heading-xl_18wu0_op4vh_374\",\n  \"font-size-display-l\": \"awsui_font-size-display-l_18wu0_op4vh_379\",\n  \"font-weight-light\": \"awsui_font-weight-light_18wu0_op4vh_384\",\n  \"font-weight-normal\": \"awsui_font-weight-normal_18wu0_op4vh_387\",\n  \"font-weight-bold\": \"awsui_font-weight-bold_18wu0_op4vh_390\",\n  \"t-left\": \"awsui_t-left_18wu0_op4vh_397\",\n  \"t-right\": \"awsui_t-right_18wu0_op4vh_401\",\n  \"t-center\": \"awsui_t-center_18wu0_op4vh_405\",\n  \"p-n\": \"awsui_p-n_18wu0_op4vh_506\",\n  \"p-top-n\": \"awsui_p-top-n_18wu0_op4vh_510\",\n  \"p-vertical-n\": \"awsui_p-vertical-n_18wu0_op4vh_511\",\n  \"p-right-n\": \"awsui_p-right-n_18wu0_op4vh_515\",\n  \"p-horizontal-n\": \"awsui_p-horizontal-n_18wu0_op4vh_516\",\n  \"p-bottom-n\": \"awsui_p-bottom-n_18wu0_op4vh_520\",\n  \"p-left-n\": \"awsui_p-left-n_18wu0_op4vh_525\",\n  \"p-xxxs\": \"awsui_p-xxxs_18wu0_op4vh_530\",\n  \"p-top-xxxs\": \"awsui_p-top-xxxs_18wu0_op4vh_534\",\n  \"p-vertical-xxxs\": \"awsui_p-vertical-xxxs_18wu0_op4vh_535\",\n  \"p-right-xxxs\": \"awsui_p-right-xxxs_18wu0_op4vh_539\",\n  \"p-horizontal-xxxs\": \"awsui_p-horizontal-xxxs_18wu0_op4vh_540\",\n  \"p-bottom-xxxs\": \"awsui_p-bottom-xxxs_18wu0_op4vh_544\",\n  \"p-left-xxxs\": \"awsui_p-left-xxxs_18wu0_op4vh_549\",\n  \"p-xxs\": \"awsui_p-xxs_18wu0_op4vh_554\",\n  \"p-top-xxs\": \"awsui_p-top-xxs_18wu0_op4vh_558\",\n  \"p-vertical-xxs\": \"awsui_p-vertical-xxs_18wu0_op4vh_559\",\n  \"p-right-xxs\": \"awsui_p-right-xxs_18wu0_op4vh_563\",\n  \"p-horizontal-xxs\": \"awsui_p-horizontal-xxs_18wu0_op4vh_564\",\n  \"p-bottom-xxs\": \"awsui_p-bottom-xxs_18wu0_op4vh_568\",\n  \"p-left-xxs\": \"awsui_p-left-xxs_18wu0_op4vh_573\",\n  \"p-xs\": \"awsui_p-xs_18wu0_op4vh_578\",\n  \"p-top-xs\": \"awsui_p-top-xs_18wu0_op4vh_582\",\n  \"p-vertical-xs\": \"awsui_p-vertical-xs_18wu0_op4vh_583\",\n  \"p-right-xs\": \"awsui_p-right-xs_18wu0_op4vh_587\",\n  \"p-horizontal-xs\": \"awsui_p-horizontal-xs_18wu0_op4vh_588\",\n  \"p-bottom-xs\": \"awsui_p-bottom-xs_18wu0_op4vh_592\",\n  \"p-left-xs\": \"awsui_p-left-xs_18wu0_op4vh_597\",\n  \"p-s\": \"awsui_p-s_18wu0_op4vh_602\",\n  \"p-top-s\": \"awsui_p-top-s_18wu0_op4vh_606\",\n  \"p-vertical-s\": \"awsui_p-vertical-s_18wu0_op4vh_607\",\n  \"p-right-s\": \"awsui_p-right-s_18wu0_op4vh_611\",\n  \"p-horizontal-s\": \"awsui_p-horizontal-s_18wu0_op4vh_612\",\n  \"p-bottom-s\": \"awsui_p-bottom-s_18wu0_op4vh_616\",\n  \"p-left-s\": \"awsui_p-left-s_18wu0_op4vh_621\",\n  \"p-m\": \"awsui_p-m_18wu0_op4vh_626\",\n  \"p-top-m\": \"awsui_p-top-m_18wu0_op4vh_630\",\n  \"p-vertical-m\": \"awsui_p-vertical-m_18wu0_op4vh_631\",\n  \"p-right-m\": \"awsui_p-right-m_18wu0_op4vh_635\",\n  \"p-horizontal-m\": \"awsui_p-horizontal-m_18wu0_op4vh_636\",\n  \"p-bottom-m\": \"awsui_p-bottom-m_18wu0_op4vh_640\",\n  \"p-left-m\": \"awsui_p-left-m_18wu0_op4vh_645\",\n  \"p-l\": \"awsui_p-l_18wu0_op4vh_525\",\n  \"p-top-l\": \"awsui_p-top-l_18wu0_op4vh_654\",\n  \"p-vertical-l\": \"awsui_p-vertical-l_18wu0_op4vh_655\",\n  \"p-right-l\": \"awsui_p-right-l_18wu0_op4vh_659\",\n  \"p-horizontal-l\": \"awsui_p-horizontal-l_18wu0_op4vh_660\",\n  \"p-bottom-l\": \"awsui_p-bottom-l_18wu0_op4vh_664\",\n  \"p-left-l\": \"awsui_p-left-l_18wu0_op4vh_669\",\n  \"p-xl\": \"awsui_p-xl_18wu0_op4vh_674\",\n  \"p-top-xl\": \"awsui_p-top-xl_18wu0_op4vh_678\",\n  \"p-vertical-xl\": \"awsui_p-vertical-xl_18wu0_op4vh_679\",\n  \"p-right-xl\": \"awsui_p-right-xl_18wu0_op4vh_683\",\n  \"p-horizontal-xl\": \"awsui_p-horizontal-xl_18wu0_op4vh_684\",\n  \"p-bottom-xl\": \"awsui_p-bottom-xl_18wu0_op4vh_688\",\n  \"p-left-xl\": \"awsui_p-left-xl_18wu0_op4vh_693\",\n  \"p-xxl\": \"awsui_p-xxl_18wu0_op4vh_698\",\n  \"p-top-xxl\": \"awsui_p-top-xxl_18wu0_op4vh_702\",\n  \"p-vertical-xxl\": \"awsui_p-vertical-xxl_18wu0_op4vh_703\",\n  \"p-right-xxl\": \"awsui_p-right-xxl_18wu0_op4vh_707\",\n  \"p-horizontal-xxl\": \"awsui_p-horizontal-xxl_18wu0_op4vh_708\",\n  \"p-bottom-xxl\": \"awsui_p-bottom-xxl_18wu0_op4vh_712\",\n  \"p-left-xxl\": \"awsui_p-left-xxl_18wu0_op4vh_717\",\n  \"p-xxxl\": \"awsui_p-xxxl_18wu0_op4vh_722\",\n  \"p-top-xxxl\": \"awsui_p-top-xxxl_18wu0_op4vh_726\",\n  \"p-vertical-xxxl\": \"awsui_p-vertical-xxxl_18wu0_op4vh_727\",\n  \"p-right-xxxl\": \"awsui_p-right-xxxl_18wu0_op4vh_731\",\n  \"p-horizontal-xxxl\": \"awsui_p-horizontal-xxxl_18wu0_op4vh_732\",\n  \"p-bottom-xxxl\": \"awsui_p-bottom-xxxl_18wu0_op4vh_736\",\n  \"p-left-xxxl\": \"awsui_p-left-xxxl_18wu0_op4vh_741\",\n  \"m-n\": \"awsui_m-n_18wu0_op4vh_746\",\n  \"m-top-n\": \"awsui_m-top-n_18wu0_op4vh_750\",\n  \"m-vertical-n\": \"awsui_m-vertical-n_18wu0_op4vh_751\",\n  \"m-right-n\": \"awsui_m-right-n_18wu0_op4vh_755\",\n  \"m-horizontal-n\": \"awsui_m-horizontal-n_18wu0_op4vh_756\",\n  \"m-bottom-n\": \"awsui_m-bottom-n_18wu0_op4vh_760\",\n  \"m-left-n\": \"awsui_m-left-n_18wu0_op4vh_765\",\n  \"m-xxxs\": \"awsui_m-xxxs_18wu0_op4vh_770\",\n  \"m-top-xxxs\": \"awsui_m-top-xxxs_18wu0_op4vh_774\",\n  \"m-vertical-xxxs\": \"awsui_m-vertical-xxxs_18wu0_op4vh_775\",\n  \"m-right-xxxs\": \"awsui_m-right-xxxs_18wu0_op4vh_779\",\n  \"m-horizontal-xxxs\": \"awsui_m-horizontal-xxxs_18wu0_op4vh_780\",\n  \"m-bottom-xxxs\": \"awsui_m-bottom-xxxs_18wu0_op4vh_784\",\n  \"m-left-xxxs\": \"awsui_m-left-xxxs_18wu0_op4vh_789\",\n  \"m-xxs\": \"awsui_m-xxs_18wu0_op4vh_794\",\n  \"m-top-xxs\": \"awsui_m-top-xxs_18wu0_op4vh_798\",\n  \"m-vertical-xxs\": \"awsui_m-vertical-xxs_18wu0_op4vh_799\",\n  \"m-right-xxs\": \"awsui_m-right-xxs_18wu0_op4vh_803\",\n  \"m-horizontal-xxs\": \"awsui_m-horizontal-xxs_18wu0_op4vh_804\",\n  \"m-bottom-xxs\": \"awsui_m-bottom-xxs_18wu0_op4vh_808\",\n  \"m-left-xxs\": \"awsui_m-left-xxs_18wu0_op4vh_813\",\n  \"m-xs\": \"awsui_m-xs_18wu0_op4vh_818\",\n  \"m-top-xs\": \"awsui_m-top-xs_18wu0_op4vh_822\",\n  \"m-vertical-xs\": \"awsui_m-vertical-xs_18wu0_op4vh_823\",\n  \"m-right-xs\": \"awsui_m-right-xs_18wu0_op4vh_827\",\n  \"m-horizontal-xs\": \"awsui_m-horizontal-xs_18wu0_op4vh_828\",\n  \"m-bottom-xs\": \"awsui_m-bottom-xs_18wu0_op4vh_832\",\n  \"m-left-xs\": \"awsui_m-left-xs_18wu0_op4vh_837\",\n  \"m-s\": \"awsui_m-s_18wu0_op4vh_842\",\n  \"m-top-s\": \"awsui_m-top-s_18wu0_op4vh_846\",\n  \"m-vertical-s\": \"awsui_m-vertical-s_18wu0_op4vh_847\",\n  \"m-right-s\": \"awsui_m-right-s_18wu0_op4vh_851\",\n  \"m-horizontal-s\": \"awsui_m-horizontal-s_18wu0_op4vh_852\",\n  \"m-bottom-s\": \"awsui_m-bottom-s_18wu0_op4vh_856\",\n  \"m-left-s\": \"awsui_m-left-s_18wu0_op4vh_861\",\n  \"m-m\": \"awsui_m-m_18wu0_op4vh_866\",\n  \"m-top-m\": \"awsui_m-top-m_18wu0_op4vh_870\",\n  \"m-vertical-m\": \"awsui_m-vertical-m_18wu0_op4vh_871\",\n  \"m-right-m\": \"awsui_m-right-m_18wu0_op4vh_875\",\n  \"m-horizontal-m\": \"awsui_m-horizontal-m_18wu0_op4vh_876\",\n  \"m-bottom-m\": \"awsui_m-bottom-m_18wu0_op4vh_880\",\n  \"m-left-m\": \"awsui_m-left-m_18wu0_op4vh_885\",\n  \"m-l\": \"awsui_m-l_18wu0_op4vh_765\",\n  \"m-top-l\": \"awsui_m-top-l_18wu0_op4vh_894\",\n  \"m-vertical-l\": \"awsui_m-vertical-l_18wu0_op4vh_895\",\n  \"m-right-l\": \"awsui_m-right-l_18wu0_op4vh_899\",\n  \"m-horizontal-l\": \"awsui_m-horizontal-l_18wu0_op4vh_900\",\n  \"m-bottom-l\": \"awsui_m-bottom-l_18wu0_op4vh_904\",\n  \"m-left-l\": \"awsui_m-left-l_18wu0_op4vh_909\",\n  \"m-xl\": \"awsui_m-xl_18wu0_op4vh_914\",\n  \"m-top-xl\": \"awsui_m-top-xl_18wu0_op4vh_918\",\n  \"m-vertical-xl\": \"awsui_m-vertical-xl_18wu0_op4vh_919\",\n  \"m-right-xl\": \"awsui_m-right-xl_18wu0_op4vh_923\",\n  \"m-horizontal-xl\": \"awsui_m-horizontal-xl_18wu0_op4vh_924\",\n  \"m-bottom-xl\": \"awsui_m-bottom-xl_18wu0_op4vh_928\",\n  \"m-left-xl\": \"awsui_m-left-xl_18wu0_op4vh_933\",\n  \"m-xxl\": \"awsui_m-xxl_18wu0_op4vh_938\",\n  \"m-top-xxl\": \"awsui_m-top-xxl_18wu0_op4vh_942\",\n  \"m-vertical-xxl\": \"awsui_m-vertical-xxl_18wu0_op4vh_943\",\n  \"m-right-xxl\": \"awsui_m-right-xxl_18wu0_op4vh_947\",\n  \"m-horizontal-xxl\": \"awsui_m-horizontal-xxl_18wu0_op4vh_948\",\n  \"m-bottom-xxl\": \"awsui_m-bottom-xxl_18wu0_op4vh_952\",\n  \"m-left-xxl\": \"awsui_m-left-xxl_18wu0_op4vh_957\",\n  \"m-xxxl\": \"awsui_m-xxxl_18wu0_op4vh_962\",\n  \"m-top-xxxl\": \"awsui_m-top-xxxl_18wu0_op4vh_966\",\n  \"m-vertical-xxxl\": \"awsui_m-vertical-xxxl_18wu0_op4vh_967\",\n  \"m-right-xxxl\": \"awsui_m-right-xxxl_18wu0_op4vh_971\",\n  \"m-horizontal-xxxl\": \"awsui_m-horizontal-xxxl_18wu0_op4vh_972\",\n  \"m-bottom-xxxl\": \"awsui_m-bottom-xxxl_18wu0_op4vh_976\",\n  \"m-left-xxxl\": \"awsui_m-left-xxxl_18wu0_op4vh_981\",\n  \"d-block\": \"awsui_d-block_18wu0_op4vh_986\",\n  \"d-inline\": \"awsui_d-inline_18wu0_op4vh_989\",\n  \"d-inline-block\": \"awsui_d-inline-block_18wu0_op4vh_992\",\n  \"d-none\": \"awsui_d-none_18wu0_op4vh_995\",\n  \"f-left\": \"awsui_f-left_18wu0_op4vh_999\",\n  \"f-right\": \"awsui_f-right_18wu0_op4vh_1003\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { BoxProps } from './interfaces';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\n\ntype InternalBoxProps = BoxProps & InternalBaseComponentProps;\n\nexport default function InternalBox({\n  variant = 'div',\n  tagOverride,\n  margin = {},\n  padding = {},\n  display,\n  textAlign,\n  float,\n  fontSize,\n  fontWeight,\n  color,\n  children,\n  __internalRootRef = null,\n  ...props\n}: InternalBoxProps) {\n  const baseProps = getBaseProps(props);\n  const marginsClassNamesSuffices = getClassNamesSuffixes(margin);\n  const paddingsClassNamesSuffices = getClassNamesSuffixes(padding);\n  // This can be any arbitrary string if passed into tagOverride.\n  // We appease the compiler with an incorrect type.\n  const Tag = getTag(variant, tagOverride) as 'div';\n\n  const className = clsx(\n    baseProps.className,\n    styles.root,\n    styles.box,\n    styles[`${variant.replace(/^awsui-/, '')}-variant`],\n    marginsClassNamesSuffices.map(suffix => styles[`m-${suffix}`]),\n    paddingsClassNamesSuffices.map(suffix => styles[`p-${suffix}`]),\n    styles[`d-${display}`],\n    styles[`f-${float}`],\n    styles[`color-${color || 'default'}`],\n    styles[`font-size-${fontSize || 'default'}`],\n    styles[`font-weight-${fontWeight || 'default'}`],\n    styles[`t-${textAlign}`]\n  );\n\n  return (\n    <Tag {...baseProps} className={className} ref={__internalRootRef}>\n      {children}\n    </Tag>\n  );\n}\n\nconst getClassNamesSuffixes = (value: BoxProps.SpacingSize | BoxProps.Spacing) => {\n  if (typeof value === 'string') {\n    return [value];\n  }\n  const sides = ['top', 'right', 'bottom', 'left', 'horizontal', 'vertical'] as const;\n  return sides.filter(side => !!value[side]).map(side => `${side}-${value[side]}`);\n};\n\nconst getTag = (variant: BoxProps.Variant, tagOverride: BoxProps['tagOverride']) => {\n  if (tagOverride) {\n    return tagOverride;\n  }\n\n  if (variant === 'awsui-value-large') {\n    return 'span';\n  }\n\n  if (variant === 'awsui-key-label') {\n    return 'div';\n  }\n\n  return variant;\n};\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_l0dv0_bmtvo_93\",\n  \"header\": \"awsui_header_l0dv0_bmtvo_109\",\n  \"header-link\": \"awsui_header-link_l0dv0_bmtvo_120\",\n  \"header-link--has-logo\": \"awsui_header-link--has-logo_l0dv0_bmtvo_130\",\n  \"header-link-text\": \"awsui_header-link-text_l0dv0_bmtvo_130\",\n  \"header-logo\": \"awsui_header-logo_l0dv0_bmtvo_134\",\n  \"header-logo--stretched\": \"awsui_header-logo--stretched_l0dv0_bmtvo_140\",\n  \"list-container\": \"awsui_list-container_l0dv0_bmtvo_145\",\n  \"list\": \"awsui_list_l0dv0_bmtvo_145\",\n  \"list-variant-root\": \"awsui_list-variant-root_l0dv0_bmtvo_155\",\n  \"list-variant-root--last\": \"awsui_list-variant-root--last_l0dv0_bmtvo_159\",\n  \"list-variant-expandable-link-group\": \"awsui_list-variant-expandable-link-group_l0dv0_bmtvo_163\",\n  \"list-item\": \"awsui_list-item_l0dv0_bmtvo_167\",\n  \"section\": \"awsui_section_l0dv0_bmtvo_173\",\n  \"expandable-link-group\": \"awsui_expandable-link-group_l0dv0_bmtvo_174\",\n  \"section--no-ident\": \"awsui_section--no-ident_l0dv0_bmtvo_177\",\n  \"expandable-link-group--no-ident\": \"awsui_expandable-link-group--no-ident_l0dv0_bmtvo_178\",\n  \"list-variant-section-group\": \"awsui_list-variant-section-group_l0dv0_bmtvo_191\",\n  \"section-group\": \"awsui_section-group_l0dv0_bmtvo_196\",\n  \"section-group-title\": \"awsui_section-group-title_l0dv0_bmtvo_206\",\n  \"link\": \"awsui_link_l0dv0_bmtvo_210\",\n  \"link-active\": \"awsui_link-active_l0dv0_bmtvo_219\",\n  \"info\": \"awsui_info_l0dv0_bmtvo_253\",\n  \"external-icon\": \"awsui_external-icon_l0dv0_bmtvo_257\",\n  \"divider\": \"awsui_divider_l0dv0_bmtvo_261\",\n  \"divider-default\": \"awsui_divider-default_l0dv0_bmtvo_266\",\n  \"divider-header\": \"awsui_divider-header_l0dv0_bmtvo_270\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { SideNavigationProps } from './interfaces';\nimport { warnOnce } from '../internal/logging';\n\ntype ExpandableItem = SideNavigationProps.Section | SideNavigationProps.ExpandableLinkGroup;\n\nexport function hasActiveLink(items: ReadonlyArray<SideNavigationProps.Item>, activeHref: string): boolean {\n  for (const item of items) {\n    if (\n      (item.type === 'link' || item.type === 'link-group' || item.type === 'expandable-link-group') &&\n      item.href === activeHref\n    ) {\n      return true;\n    }\n    if (\n      (item.type === 'section' || item.type === 'link-group' || item.type === 'expandable-link-group') &&\n      hasActiveLink(item.items, activeHref)\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport function generateExpandableItemsMapping(\n  items: ReadonlyArray<SideNavigationProps.Item>,\n  mapping: WeakMap<SideNavigationProps.Item, ReadonlyArray<ExpandableItem>> = new WeakMap(),\n  expandableParents: ReadonlyArray<ExpandableItem> = []\n): WeakMap<SideNavigationProps.Item, ReadonlyArray<ExpandableItem>> {\n  items.forEach(item => {\n    const nextLevelParents = expandableParents.slice();\n    if (item.type === 'section' || item.type === 'expandable-link-group') {\n      mapping.set(item, expandableParents);\n      nextLevelParents.unshift(item);\n    }\n    if (item.type === 'section' || item.type === 'link-group' || item.type === 'expandable-link-group') {\n      generateExpandableItemsMapping(item.items, mapping, nextLevelParents);\n    }\n  });\n  return mapping;\n}\n\nexport function checkDuplicateHrefs(items: ReadonlyArray<SideNavigationProps.Item>) {\n  const hrefs = new Set();\n  const queue = items.slice();\n  while (queue.length > 0) {\n    // We just checked that there's items in the queue.\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n    const item = queue.shift()!;\n\n    // Check duplicated hrefs\n    if ('href' in item) {\n      if (hrefs.has(item.href)) {\n        warnOnce('SideNavigation', `duplicate href in \"${item.text}\": ${item.href}`);\n      }\n      hrefs.add(item.href);\n    }\n\n    if ('items' in item) {\n      queue.push(...item.items);\n    }\n  }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useState, useEffect, useMemo, ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { ExpandableSectionProps } from '../expandable-section/interfaces';\nimport InternalExpandableSection from '../expandable-section/internal';\nimport InternalIcon from '../icon/internal';\nimport InternalBox from '../box/internal';\nimport { SideNavigationProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { NonCancelableCustomEvent, isPlainLeftClick } from '../internal/events';\nimport { hasActiveLink } from './util';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\n\ninterface BaseItemComponentProps {\n  activeHref?: string;\n  fireChange: (item: SideNavigationProps.Section | SideNavigationProps.ExpandableLinkGroup, expanded: boolean) => void;\n  fireFollow: (\n    item:\n      | SideNavigationProps.Link\n      | SideNavigationProps.Header\n      | SideNavigationProps.LinkGroup\n      | SideNavigationProps.ExpandableLinkGroup,\n    event: React.SyntheticEvent | Event\n  ) => void;\n}\n\nexport interface HeaderProps extends BaseItemComponentProps {\n  definition: SideNavigationProps.Header;\n}\n\nexport function Header({ definition, activeHref, fireFollow }: HeaderProps) {\n  checkSafeUrl('SideNavigation', definition.href);\n  const onClick = useCallback(\n    (event: React.MouseEvent) => {\n      if (isPlainLeftClick(event)) {\n        fireFollow(definition, event);\n      }\n    },\n    [fireFollow, definition]\n  );\n\n  return (\n    <>\n      <h2 className={styles.header}>\n        <a\n          href={definition.href}\n          className={clsx(styles['header-link'], { [styles['header-link--has-logo']]: !!definition.logo })}\n          aria-current={definition.href === activeHref ? 'page' : undefined}\n          onClick={onClick}\n        >\n          {definition.logo && (\n            <img\n              className={clsx(styles['header-logo'], {\n                [styles['header-logo--stretched']]: !definition.text,\n              })}\n              {...definition.logo}\n            />\n          )}\n          <span className={styles['header-link-text']}>{definition.text}</span>\n        </a>\n      </h2>\n      <Divider isPresentational={true} variant=\"header\" />\n    </>\n  );\n}\n\nexport interface NavigationItemsListProps extends BaseItemComponentProps {\n  items: ReadonlyArray<SideNavigationProps.Item>;\n  variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n}\n\ninterface Item {\n  element?: ReactNode;\n  listVariant?: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n  items?: Array<Item>;\n}\n\nexport function NavigationItemsList({ items, variant, activeHref, fireChange, fireFollow }: NavigationItemsListProps) {\n  const lists: Array<Item> = [];\n  let currentListIndex = 0;\n  lists[currentListIndex] = {\n    listVariant: variant,\n    items: [],\n  };\n\n  items.forEach((item, index) => {\n    const itemid = index + 1;\n    switch (item.type) {\n      case 'divider': {\n        const dividerIndex = lists.length;\n        lists[dividerIndex] = {\n          element: (\n            <div data-itemid={`item-${itemid}`}>\n              <Divider variant=\"default\" />\n            </div>\n          ),\n        };\n        currentListIndex = lists.length;\n        lists[currentListIndex] = {\n          listVariant: variant,\n          items: [],\n        };\n        return;\n      }\n      case 'link': {\n        lists[currentListIndex].items?.push({\n          element: (\n            <li key={index} data-itemid={`item-${itemid}`} className={styles['list-item']}>\n              <Link definition={item} activeHref={activeHref} fireChange={fireChange} fireFollow={fireFollow} />\n            </li>\n          ),\n        });\n        return;\n      }\n      case 'section': {\n        lists[currentListIndex].items?.push({\n          element: (\n            <li key={index} data-itemid={`item-${itemid}`} className={styles['list-item']}>\n              <Section\n                definition={item}\n                activeHref={activeHref}\n                variant={variant}\n                fireChange={fireChange}\n                fireFollow={fireFollow}\n              />\n            </li>\n          ),\n        });\n        return;\n      }\n      case 'section-group': {\n        lists[currentListIndex].items?.push({\n          element: (\n            <li key={index} data-itemid={`item-${itemid}`} className={styles['list-item']}>\n              <SectionGroup definition={item} activeHref={activeHref} fireChange={fireChange} fireFollow={fireFollow} />\n            </li>\n          ),\n        });\n        return;\n      }\n      case 'link-group': {\n        lists[currentListIndex].items?.push({\n          element: (\n            <li key={index} data-itemid={`item-${itemid}`} className={styles['list-item']}>\n              <LinkGroup definition={item} activeHref={activeHref} fireChange={fireChange} fireFollow={fireFollow} />\n            </li>\n          ),\n        });\n        return;\n      }\n      case 'expandable-link-group': {\n        lists[currentListIndex].items?.push({\n          element: (\n            <li key={index} data-itemid={`item-${itemid}`} className={styles['list-item']}>\n              <ExpandableLinkGroup\n                definition={item}\n                activeHref={activeHref}\n                fireChange={fireChange}\n                fireFollow={fireFollow}\n                variant={variant}\n              />\n            </li>\n          ),\n        });\n        return;\n      }\n    }\n  });\n\n  const lastListIndex = lists.length - 1;\n\n  return (\n    <>\n      {lists.map((list, index) => {\n        if (!list.items || list.items.length === 0) {\n          return (\n            <div\n              key={`hr-${index}`}\n              className={clsx(styles.list, styles[`list-variant-${variant}`], {\n                [styles['list-variant-root--last']]: list.listVariant === 'root' && index === lastListIndex,\n              })}\n            >\n              {list.element}\n            </div>\n          );\n        } else {\n          return (\n            <ul\n              key={`list-${index}`}\n              className={clsx(styles.list, styles[`list-variant-${list.listVariant}`], {\n                [styles['list-variant-root--last']]: list.listVariant === 'root' && index === lastListIndex,\n              })}\n            >\n              {list.items.map(item => item.element)}\n            </ul>\n          );\n        }\n      })}\n    </>\n  );\n}\n\ninterface DividerProps {\n  variant: 'default' | 'header';\n  isPresentational?: boolean;\n}\n\nfunction Divider({ variant = 'default', isPresentational = false }: DividerProps) {\n  return (\n    <hr\n      className={clsx(styles.divider, styles[`divider-${variant}`])}\n      role={isPresentational ? 'presentation' : undefined}\n    />\n  );\n}\n\ninterface LinkProps extends BaseItemComponentProps {\n  definition: SideNavigationProps.Link;\n  expanded?: boolean;\n}\n\nfunction Link({ definition, expanded, activeHref, fireFollow }: LinkProps) {\n  checkSafeUrl('SideNavigation', definition.href);\n  const isActive = definition.href === activeHref;\n\n  const onClick = useCallback(\n    (event: React.MouseEvent) => {\n      // Prevent the click event from toggling outer expandable sections.\n      event.stopPropagation();\n\n      if (isPlainLeftClick(event)) {\n        fireFollow(definition, event);\n      }\n    },\n    [fireFollow, definition]\n  );\n\n  return (\n    <>\n      <a\n        href={definition.href}\n        className={clsx(styles.link, { [styles['link-active']]: isActive })}\n        target={definition.external ? '_blank' : undefined}\n        rel={definition.external ? 'noopener noreferrer' : undefined}\n        aria-expanded={expanded}\n        aria-current={definition.href === activeHref ? 'page' : undefined}\n        onClick={onClick}\n      >\n        {definition.text}\n        {definition.external && (\n          <span\n            aria-label={definition.externalIconAriaLabel}\n            role={definition.externalIconAriaLabel ? 'img' : undefined}\n          >\n            <InternalIcon name=\"external\" className={styles['external-icon']} />\n          </span>\n        )}\n      </a>\n      {definition.info && <span className={styles.info}>{definition.info}</span>}\n    </>\n  );\n}\n\ninterface SectionProps extends BaseItemComponentProps {\n  definition: SideNavigationProps.Section;\n  variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n}\n\nfunction Section({ definition, activeHref, fireFollow, fireChange, variant }: SectionProps) {\n  const [expanded, setExpanded] = useState<boolean>(definition.defaultExpanded ?? true);\n\n  const onExpandedChange = useCallback(\n    (e: NonCancelableCustomEvent<ExpandableSectionProps.ChangeDetail>) => {\n      fireChange(definition, e.detail.expanded);\n      setExpanded(e.detail.expanded);\n    },\n    [definition, fireChange]\n  );\n\n  useEffect(() => {\n    setExpanded(definition.defaultExpanded ?? true);\n  }, [definition]);\n\n  return (\n    <InternalExpandableSection\n      variant=\"footer\"\n      expanded={expanded}\n      onChange={onExpandedChange}\n      className={clsx(styles.section, variant === 'section-group' && styles['section--no-ident'])}\n      headerText={definition.text}\n    >\n      <NavigationItemsList\n        variant=\"section\"\n        items={definition.items}\n        fireFollow={fireFollow}\n        fireChange={fireChange}\n        activeHref={activeHref}\n      />\n    </InternalExpandableSection>\n  );\n}\n\ninterface SectionGroupProps extends BaseItemComponentProps {\n  definition: SideNavigationProps.SectionGroup;\n}\n\nfunction SectionGroup({ definition, activeHref, fireFollow, fireChange }: SectionGroupProps) {\n  return (\n    <div className={styles['section-group']}>\n      <InternalBox className={styles['section-group-title']} variant=\"h3\">\n        {definition.title}\n      </InternalBox>\n      <NavigationItemsList\n        variant=\"section-group\"\n        items={definition.items}\n        fireFollow={fireFollow}\n        fireChange={fireChange}\n        activeHref={activeHref}\n      />\n    </div>\n  );\n}\n\ninterface LinkGroupProps extends BaseItemComponentProps {\n  definition: SideNavigationProps.LinkGroup;\n}\n\nfunction LinkGroup({ definition, activeHref, fireFollow, fireChange }: LinkGroupProps) {\n  checkSafeUrl('SideNavigation', definition.href);\n\n  return (\n    <>\n      <Link\n        definition={{ type: 'link', href: definition.href, text: definition.text, info: definition.info }}\n        fireFollow={(_, event) => fireFollow(definition, event)}\n        fireChange={fireChange}\n        activeHref={activeHref}\n      />\n      <NavigationItemsList\n        variant=\"link-group\"\n        items={definition.items}\n        fireFollow={fireFollow}\n        fireChange={fireChange}\n        activeHref={activeHref}\n      />\n    </>\n  );\n}\n\ninterface ExpandableLinkGroupProps extends BaseItemComponentProps {\n  definition: SideNavigationProps.ExpandableLinkGroup;\n  variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n}\n\nfunction ExpandableLinkGroup({ definition, fireFollow, fireChange, activeHref, variant }: ExpandableLinkGroupProps) {\n  // Check whether the definition contains an active link and memoize it to avoid\n  // rechecking every time.\n  const containsActiveLink = useMemo(() => {\n    return activeHref ? hasActiveLink(definition.items, activeHref) : false;\n  }, [activeHref, definition.items]);\n\n  const [expanded, setExpanded] = useState<boolean>(() => {\n    return definition.defaultExpanded ?? (definition.href === activeHref || containsActiveLink);\n  });\n\n  const [userExpanded, setUserExpanded] = useState<boolean | undefined>();\n\n  // Reset user expansion status when the items property is updated.\n  useEffect(() => setUserExpanded(undefined), [definition]);\n\n  // By default, the expandable section is open when there's an active link inside.\n  useEffect(() => {\n    setExpanded(definition.href === activeHref || containsActiveLink);\n  }, [definition.href, containsActiveLink, activeHref]);\n\n  // If the definition object itself is updated, reset the expansion state to default.\n  useEffect(() => {\n    if (definition.defaultExpanded !== undefined) {\n      setExpanded(definition.defaultExpanded);\n    }\n  }, [definition]);\n\n  const onExpandedChange = useCallback(\n    (e: NonCancelableCustomEvent<ExpandableSectionProps.ChangeDetail>) => {\n      fireChange(definition, e.detail.expanded);\n      setUserExpanded(e.detail.expanded);\n    },\n    [definition, fireChange]\n  );\n\n  const onHeaderFollow: LinkProps['fireFollow'] = (_, event) => {\n    fireFollow(definition, event);\n    setUserExpanded(true);\n    if (!expanded) {\n      fireChange(definition, true);\n    }\n  };\n\n  return (\n    <InternalExpandableSection\n      className={clsx(\n        styles['expandable-link-group'],\n        variant === 'section-group' && styles['expandable-link-group--no-ident']\n      )}\n      variant=\"navigation\"\n      expanded={userExpanded ?? expanded}\n      onChange={onExpandedChange}\n      headerText={\n        <Link\n          definition={{ type: 'link', href: definition.href, text: definition.text }}\n          expanded={userExpanded ?? expanded}\n          fireFollow={onHeaderFollow}\n          fireChange={fireChange}\n          activeHref={activeHref}\n        />\n      }\n    >\n      <NavigationItemsList\n        variant=\"expandable-link-group\"\n        items={definition.items}\n        fireFollow={fireFollow}\n        fireChange={fireChange}\n        activeHref={activeHref}\n      />\n    </InternalExpandableSection>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useMemo, useCallback, useEffect } from 'react';\nimport clsx from 'clsx';\nimport { getBaseProps } from '../internal/base-component';\nimport { fireNonCancelableEvent, fireCancelableEvent } from '../internal/events';\nimport { SideNavigationProps } from './interfaces';\nimport { Header, NavigationItemsList } from './internal';\nimport { generateExpandableItemsMapping, checkDuplicateHrefs } from './util';\nimport styles from './styles.css.js';\nimport { isDevelopment } from '../internal/is-development';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { SideNavigationProps };\n\nexport default function SideNavigation({\n  header,\n  activeHref,\n  items = [],\n  onFollow,\n  onChange,\n  ...props\n}: SideNavigationProps) {\n  const { __internalRootRef } = useBaseComponent('SideNavigation');\n  const baseProps = getBaseProps(props);\n  const parentMap = useMemo(() => generateExpandableItemsMapping(items), [items]);\n\n  if (isDevelopment) {\n    // This code should be wiped in production anyway.\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    useEffect(() => checkDuplicateHrefs(items), [items]);\n  }\n\n  const onChangeHandler = useCallback(\n    (item: SideNavigationProps.Section | SideNavigationProps.ExpandableLinkGroup, expanded: boolean) => {\n      // generateExpandableItemsMapping walks through the entire tree, so we're certain about getting a value.\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      fireNonCancelableEvent(onChange, { item, expanded: expanded, expandableParents: parentMap.get(item)! });\n    },\n    [onChange, parentMap]\n  );\n\n  const onFollowHandler = useCallback(\n    (\n      item:\n        | SideNavigationProps.Link\n        | SideNavigationProps.Header\n        | SideNavigationProps.LinkGroup\n        | SideNavigationProps.ExpandableLinkGroup,\n      sourceEvent: React.SyntheticEvent | Event\n    ) => {\n      fireCancelableEvent(onFollow, item, sourceEvent);\n    },\n    [onFollow]\n  );\n\n  return (\n    <div {...baseProps} className={clsx(styles.root, baseProps.className)} ref={__internalRootRef}>\n      {header && (\n        <Header definition={header} activeHref={activeHref} fireChange={onChangeHandler} fireFollow={onFollowHandler} />\n      )}\n      {items && (\n        <div className={styles['list-container']}>\n          <NavigationItemsList\n            variant=\"root\"\n            items={items}\n            fireFollow={onFollowHandler}\n            fireChange={onChangeHandler}\n            activeHref={activeHref}\n          />\n        </div>\n      )}\n    </div>\n  );\n}\n\napplyDisplayName(SideNavigation, 'SideNavigation');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport InternalIcon from './internal';\nimport { IconProps } from './interfaces';\n\nexport { IconProps };\n\nexport default function Icon({ size = 'normal', variant = 'normal', ...props }: IconProps) {\n  const baseComponentProps = useBaseComponent('Icon');\n  return <InternalIcon size={size} variant={variant} {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(Icon, 'Icon');\n","function isAbsolute(pathname) {\n  return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n  for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n    list[i] = list[k];\n  }\n\n  list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n  if (from === undefined) from = '';\n\n  var toParts = (to && to.split('/')) || [];\n  var fromParts = (from && from.split('/')) || [];\n\n  var isToAbs = to && isAbsolute(to);\n  var isFromAbs = from && isAbsolute(from);\n  var mustEndAbs = isToAbs || isFromAbs;\n\n  if (to && isAbsolute(to)) {\n    // to is absolute\n    fromParts = toParts;\n  } else if (toParts.length) {\n    // to is relative, drop the filename\n    fromParts.pop();\n    fromParts = fromParts.concat(toParts);\n  }\n\n  if (!fromParts.length) return '/';\n\n  var hasTrailingSlash;\n  if (fromParts.length) {\n    var last = fromParts[fromParts.length - 1];\n    hasTrailingSlash = last === '.' || last === '..' || last === '';\n  } else {\n    hasTrailingSlash = false;\n  }\n\n  var up = 0;\n  for (var i = fromParts.length; i >= 0; i--) {\n    var part = fromParts[i];\n\n    if (part === '.') {\n      spliceOne(fromParts, i);\n    } else if (part === '..') {\n      spliceOne(fromParts, i);\n      up++;\n    } else if (up) {\n      spliceOne(fromParts, i);\n      up--;\n    }\n  }\n\n  if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n  if (\n    mustEndAbs &&\n    fromParts[0] !== '' &&\n    (!fromParts[0] || !isAbsolute(fromParts[0]))\n  )\n    fromParts.unshift('');\n\n  var result = fromParts.join('/');\n\n  if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n  return result;\n}\n\nexport default resolvePathname;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    var provided = typeof message === 'function' ? message() : message;\n    var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n    throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n  return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n  return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n  return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n  return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n  var pathname = path || '/';\n  var search = '';\n  var hash = '';\n  var hashIndex = pathname.indexOf('#');\n\n  if (hashIndex !== -1) {\n    hash = pathname.substr(hashIndex);\n    pathname = pathname.substr(0, hashIndex);\n  }\n\n  var searchIndex = pathname.indexOf('?');\n\n  if (searchIndex !== -1) {\n    search = pathname.substr(searchIndex);\n    pathname = pathname.substr(0, searchIndex);\n  }\n\n  return {\n    pathname: pathname,\n    search: search === '?' ? '' : search,\n    hash: hash === '#' ? '' : hash\n  };\n}\nfunction createPath(location) {\n  var pathname = location.pathname,\n      search = location.search,\n      hash = location.hash;\n  var path = pathname || '/';\n  if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n  if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n  return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n  var location;\n\n  if (typeof path === 'string') {\n    // Two-arg form: push(path, state)\n    location = parsePath(path);\n    location.state = state;\n  } else {\n    // One-arg form: push(location)\n    location = _extends({}, path);\n    if (location.pathname === undefined) location.pathname = '';\n\n    if (location.search) {\n      if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n    } else {\n      location.search = '';\n    }\n\n    if (location.hash) {\n      if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n    } else {\n      location.hash = '';\n    }\n\n    if (state !== undefined && location.state === undefined) location.state = state;\n  }\n\n  try {\n    location.pathname = decodeURI(location.pathname);\n  } catch (e) {\n    if (e instanceof URIError) {\n      throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n    } else {\n      throw e;\n    }\n  }\n\n  if (key) location.key = key;\n\n  if (currentLocation) {\n    // Resolve incomplete/relative pathname relative to current location.\n    if (!location.pathname) {\n      location.pathname = currentLocation.pathname;\n    } else if (location.pathname.charAt(0) !== '/') {\n      location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n    }\n  } else {\n    // When there is no prior location and pathname is empty, set it to /\n    if (!location.pathname) {\n      location.pathname = '/';\n    }\n  }\n\n  return location;\n}\nfunction locationsAreEqual(a, b) {\n  return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n  var prompt = null;\n\n  function setPrompt(nextPrompt) {\n    process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n    prompt = nextPrompt;\n    return function () {\n      if (prompt === nextPrompt) prompt = null;\n    };\n  }\n\n  function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n    // TODO: If another transition starts while we're still confirming\n    // the previous one, we may end up in a weird state. Figure out the\n    // best way to handle this.\n    if (prompt != null) {\n      var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n      if (typeof result === 'string') {\n        if (typeof getUserConfirmation === 'function') {\n          getUserConfirmation(result, callback);\n        } else {\n          process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n          callback(true);\n        }\n      } else {\n        // Return false from a transition hook to cancel the transition.\n        callback(result !== false);\n      }\n    } else {\n      callback(true);\n    }\n  }\n\n  var listeners = [];\n\n  function appendListener(fn) {\n    var isActive = true;\n\n    function listener() {\n      if (isActive) fn.apply(void 0, arguments);\n    }\n\n    listeners.push(listener);\n    return function () {\n      isActive = false;\n      listeners = listeners.filter(function (item) {\n        return item !== listener;\n      });\n    };\n  }\n\n  function notifyListeners() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    listeners.forEach(function (listener) {\n      return listener.apply(void 0, args);\n    });\n  }\n\n  return {\n    setPrompt: setPrompt,\n    confirmTransitionTo: confirmTransitionTo,\n    appendListener: appendListener,\n    notifyListeners: notifyListeners\n  };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n  callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n  var ua = window.navigator.userAgent;\n  if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n  return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n  return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n  return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n  return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n  try {\n    return window.history.state || {};\n  } catch (e) {\n    // IE 11 sometimes throws when accessing window.history.state\n    // See https://github.com/ReactTraining/history/pull/289\n    return {};\n  }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canUseHistory = supportsHistory();\n  var needsHashChangeListener = !supportsPopStateOnHashChange();\n  var _props = props,\n      _props$forceRefresh = _props.forceRefresh,\n      forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n  function getDOMLocation(historyState) {\n    var _ref = historyState || {},\n        key = _ref.key,\n        state = _ref.state;\n\n    var _window$location = window.location,\n        pathname = _window$location.pathname,\n        search = _window$location.search,\n        hash = _window$location.hash;\n    var path = pathname + search + hash;\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path, state, key);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function handlePopState(event) {\n    // Ignore extraneous popstate events in WebKit.\n    if (isExtraneousPopstateEvent(event)) return;\n    handlePop(getDOMLocation(event.state));\n  }\n\n  function handleHashChange() {\n    handlePop(getDOMLocation(getHistoryState()));\n  }\n\n  var forceNextPop = false;\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of keys we've seen in sessionStorage.\n    // Instead, we just default to 0 for keys we don't know.\n\n    var toIndex = allKeys.indexOf(toLocation.key);\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allKeys.indexOf(fromLocation.key);\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  }\n\n  var initialLocation = getDOMLocation(getHistoryState());\n  var allKeys = [initialLocation.key]; // Public interface\n\n  function createHref(location) {\n    return basename + createPath(location);\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.pushState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.href = href;\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          var nextKeys = allKeys.slice(0, prevIndex + 1);\n          nextKeys.push(location.key);\n          allKeys = nextKeys;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n        window.location.href = href;\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var href = createHref(location);\n      var key = location.key,\n          state = location.state;\n\n      if (canUseHistory) {\n        globalHistory.replaceState({\n          key: key,\n          state: state\n        }, null, href);\n\n        if (forceRefresh) {\n          window.location.replace(href);\n        } else {\n          var prevIndex = allKeys.indexOf(history.location.key);\n          if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n          setState({\n            action: action,\n            location: location\n          });\n        }\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n        window.location.replace(href);\n      }\n    });\n  }\n\n  function go(n) {\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(PopStateEvent, handlePopState);\n      if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n  hashbang: {\n    encodePath: function encodePath(path) {\n      return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n    },\n    decodePath: function decodePath(path) {\n      return path.charAt(0) === '!' ? path.substr(1) : path;\n    }\n  },\n  noslash: {\n    encodePath: stripLeadingSlash,\n    decodePath: addLeadingSlash\n  },\n  slash: {\n    encodePath: addLeadingSlash,\n    decodePath: addLeadingSlash\n  }\n};\n\nfunction stripHash(url) {\n  var hashIndex = url.indexOf('#');\n  return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var hashIndex = href.indexOf('#');\n  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n  window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n  window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n  var globalHistory = window.history;\n  var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n  var _props = props,\n      _props$getUserConfirm = _props.getUserConfirmation,\n      getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n      _props$hashType = _props.hashType,\n      hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n  var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n  var _HashPathCoders$hashT = HashPathCoders[hashType],\n      encodePath = _HashPathCoders$hashT.encodePath,\n      decodePath = _HashPathCoders$hashT.decodePath;\n\n  function getDOMLocation() {\n    var path = decodePath(getHashPath());\n    process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n    if (basename) path = stripBasename(path, basename);\n    return createLocation(path);\n  }\n\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = globalHistory.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  var forceNextPop = false;\n  var ignorePath = null;\n\n  function locationsAreEqual$$1(a, b) {\n    return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n  }\n\n  function handleHashChange() {\n    var path = getHashPath();\n    var encodedPath = encodePath(path);\n\n    if (path !== encodedPath) {\n      // Ensure we always have a properly-encoded hash.\n      replaceHashPath(encodedPath);\n    } else {\n      var location = getDOMLocation();\n      var prevLocation = history.location;\n      if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n      if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n      ignorePath = null;\n      handlePop(location);\n    }\n  }\n\n  function handlePop(location) {\n    if (forceNextPop) {\n      forceNextPop = false;\n      setState();\n    } else {\n      var action = 'POP';\n      transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n        if (ok) {\n          setState({\n            action: action,\n            location: location\n          });\n        } else {\n          revertPop(location);\n        }\n      });\n    }\n  }\n\n  function revertPop(fromLocation) {\n    var toLocation = history.location; // TODO: We could probably make this more reliable by\n    // keeping a list of paths we've seen in sessionStorage.\n    // Instead, we just default to 0 for paths we don't know.\n\n    var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n    if (toIndex === -1) toIndex = 0;\n    var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n    if (fromIndex === -1) fromIndex = 0;\n    var delta = toIndex - fromIndex;\n\n    if (delta) {\n      forceNextPop = true;\n      go(delta);\n    }\n  } // Ensure the hash is encoded properly before doing anything else.\n\n\n  var path = getHashPath();\n  var encodedPath = encodePath(path);\n  if (path !== encodedPath) replaceHashPath(encodedPath);\n  var initialLocation = getDOMLocation();\n  var allPaths = [createPath(initialLocation)]; // Public interface\n\n  function createHref(location) {\n    var baseTag = document.querySelector('base');\n    var href = '';\n\n    if (baseTag && baseTag.getAttribute('href')) {\n      href = stripHash(window.location.href);\n    }\n\n    return href + '#' + encodePath(basename + createPath(location));\n  }\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a PUSH, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        pushHashPath(encodedPath);\n        var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n        var nextPaths = allPaths.slice(0, prevIndex + 1);\n        nextPaths.push(path);\n        allPaths = nextPaths;\n        setState({\n          action: action,\n          location: location\n        });\n      } else {\n        process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n        setState();\n      }\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, undefined, undefined, history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var path = createPath(location);\n      var encodedPath = encodePath(basename + path);\n      var hashChanged = getHashPath() !== encodedPath;\n\n      if (hashChanged) {\n        // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n        // rather setState here and ignore the hashchange. The caveat here\n        // is that other hash histories in the page will consider it a POP.\n        ignorePath = path;\n        replaceHashPath(encodedPath);\n      }\n\n      var prevIndex = allPaths.indexOf(createPath(history.location));\n      if (prevIndex !== -1) allPaths[prevIndex] = path;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n    globalHistory.go(n);\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  var listenerCount = 0;\n\n  function checkDOMListeners(delta) {\n    listenerCount += delta;\n\n    if (listenerCount === 1 && delta === 1) {\n      window.addEventListener(HashChangeEvent$1, handleHashChange);\n    } else if (listenerCount === 0) {\n      window.removeEventListener(HashChangeEvent$1, handleHashChange);\n    }\n  }\n\n  var isBlocked = false;\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    var unblock = transitionManager.setPrompt(prompt);\n\n    if (!isBlocked) {\n      checkDOMListeners(1);\n      isBlocked = true;\n    }\n\n    return function () {\n      if (isBlocked) {\n        isBlocked = false;\n        checkDOMListeners(-1);\n      }\n\n      return unblock();\n    };\n  }\n\n  function listen(listener) {\n    var unlisten = transitionManager.appendListener(listener);\n    checkDOMListeners(1);\n    return function () {\n      checkDOMListeners(-1);\n      unlisten();\n    };\n  }\n\n  var history = {\n    length: globalHistory.length,\n    action: 'POP',\n    location: initialLocation,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n  return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n  if (props === void 0) {\n    props = {};\n  }\n\n  var _props = props,\n      getUserConfirmation = _props.getUserConfirmation,\n      _props$initialEntries = _props.initialEntries,\n      initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n      _props$initialIndex = _props.initialIndex,\n      initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n      _props$keyLength = _props.keyLength,\n      keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n  var transitionManager = createTransitionManager();\n\n  function setState(nextState) {\n    _extends(history, nextState);\n\n    history.length = history.entries.length;\n    transitionManager.notifyListeners(history.location, history.action);\n  }\n\n  function createKey() {\n    return Math.random().toString(36).substr(2, keyLength);\n  }\n\n  var index = clamp(initialIndex, 0, initialEntries.length - 1);\n  var entries = initialEntries.map(function (entry) {\n    return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n  }); // Public interface\n\n  var createHref = createPath;\n\n  function push(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'PUSH';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      var prevIndex = history.index;\n      var nextIndex = prevIndex + 1;\n      var nextEntries = history.entries.slice(0);\n\n      if (nextEntries.length > nextIndex) {\n        nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n      } else {\n        nextEntries.push(location);\n      }\n\n      setState({\n        action: action,\n        location: location,\n        index: nextIndex,\n        entries: nextEntries\n      });\n    });\n  }\n\n  function replace(path, state) {\n    process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n    var action = 'REPLACE';\n    var location = createLocation(path, state, createKey(), history.location);\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (!ok) return;\n      history.entries[history.index] = location;\n      setState({\n        action: action,\n        location: location\n      });\n    });\n  }\n\n  function go(n) {\n    var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n    var action = 'POP';\n    var location = history.entries[nextIndex];\n    transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n      if (ok) {\n        setState({\n          action: action,\n          location: location,\n          index: nextIndex\n        });\n      } else {\n        // Mimic the behavior of DOM histories by\n        // causing a render after a cancelled POP.\n        setState();\n      }\n    });\n  }\n\n  function goBack() {\n    go(-1);\n  }\n\n  function goForward() {\n    go(1);\n  }\n\n  function canGo(n) {\n    var nextIndex = history.index + n;\n    return nextIndex >= 0 && nextIndex < history.entries.length;\n  }\n\n  function block(prompt) {\n    if (prompt === void 0) {\n      prompt = false;\n    }\n\n    return transitionManager.setPrompt(prompt);\n  }\n\n  function listen(listener) {\n    return transitionManager.appendListener(listener);\n  }\n\n  var history = {\n    length: entries.length,\n    action: 'POP',\n    location: entries[index],\n    index: index,\n    entries: entries,\n    createHref: createHref,\n    push: push,\n    replace: replace,\n    go: go,\n    goBack: goBack,\n    goForward: goForward,\n    canGo: canGo,\n    block: block,\n    listen: listen\n  };\n  return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n  typeof globalThis !== \"undefined\" // 'global proper'\n    ? // eslint-disable-next-line no-undef\n      globalThis\n    : typeof window !== \"undefined\"\n    ? window // Browser\n    : typeof global !== \"undefined\"\n    ? global // node.js\n    : {};\n\nfunction getUniqueId() {\n  let key = \"__global_unique_id__\";\n  return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n  if (x === y) {\n    return x !== 0 || 1 / x === 1 / y;\n  } else {\n    // eslint-disable-next-line no-self-compare\n    return x !== x && y !== y;\n  }\n}\n\nfunction createEventEmitter(value) {\n  let handlers = [];\n  return {\n    on(handler) {\n      handlers.push(handler);\n    },\n\n    off(handler) {\n      handlers = handlers.filter(h => h !== handler);\n    },\n\n    get() {\n      return value;\n    },\n\n    set(newValue, changedBits) {\n      value = newValue;\n      handlers.forEach(handler => handler(value, changedBits));\n    }\n  };\n}\n\nfunction onlyChild(children) {\n  return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n  const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n  class Provider extends React.Component {\n    emitter = createEventEmitter(this.props.value);\n\n    static childContextTypes = {\n      [contextProp]: PropTypes.object.isRequired\n    };\n\n    getChildContext() {\n      return {\n        [contextProp]: this.emitter\n      };\n    }\n\n    componentWillReceiveProps(nextProps) {\n      if (this.props.value !== nextProps.value) {\n        let oldValue = this.props.value;\n        let newValue = nextProps.value;\n        let changedBits;\n\n        if (objectIs(oldValue, newValue)) {\n          changedBits = 0; // No change\n        } else {\n          changedBits =\n            typeof calculateChangedBits === \"function\"\n              ? calculateChangedBits(oldValue, newValue)\n              : MAX_SIGNED_31_BIT_INT;\n          if (process.env.NODE_ENV !== \"production\") {\n            warning(\n              (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n              \"calculateChangedBits: Expected the return value to be a \" +\n                \"31-bit integer. Instead received: \" +\n                changedBits\n            );\n          }\n\n          changedBits |= 0;\n\n          if (changedBits !== 0) {\n            this.emitter.set(nextProps.value, changedBits);\n          }\n        }\n      }\n    }\n\n    render() {\n      return this.props.children;\n    }\n  }\n\n  class Consumer extends React.Component {\n    static contextTypes = {\n      [contextProp]: PropTypes.object\n    };\n\n    observedBits;\n\n    state = {\n      value: this.getValue()\n    };\n\n    componentWillReceiveProps(nextProps) {\n      let { observedBits } = nextProps;\n      this.observedBits =\n        observedBits === undefined || observedBits === null\n          ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n          : observedBits;\n    }\n\n    componentDidMount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].on(this.onUpdate);\n      }\n      let { observedBits } = this.props;\n      this.observedBits =\n        observedBits === undefined || observedBits === null\n          ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n          : observedBits;\n    }\n\n    componentWillUnmount() {\n      if (this.context[contextProp]) {\n        this.context[contextProp].off(this.onUpdate);\n      }\n    }\n\n    getValue() {\n      if (this.context[contextProp]) {\n        return this.context[contextProp].get();\n      } else {\n        return defaultValue;\n      }\n    }\n\n    onUpdate = (newValue, changedBits) => {\n      const observedBits = this.observedBits | 0;\n      if ((observedBits & changedBits) !== 0) {\n        this.setState({ value: this.getValue() });\n      }\n    };\n\n    render() {\n      return onlyChild(this.props.children)(this.state.value);\n    }\n  }\n\n  return {\n    Provider,\n    Consumer\n  };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon <StringEpsilon@gmail.com>\n// Copyright (c) 2017-2019 James Kyle <me@thejameskyle.com>\n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n  const context = createContext();\n  context.displayName = name;\n\n  return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n  static computeRootMatch(pathname) {\n    return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n  }\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      location: props.history.location\n    };\n\n    // This is a bit of a hack. We have to start listening for location\n    // changes here in the constructor in case there are any <Redirect>s\n    // on the initial render. If there are, they will replace/push when\n    // they mount and since cDM fires in children before parents, we may\n    // get a new location before the <Router> is mounted.\n    this._isMounted = false;\n    this._pendingLocation = null;\n\n    if (!props.staticContext) {\n      this.unlisten = props.history.listen(location => {\n        this._pendingLocation = location;\n      });\n    }\n  }\n\n  componentDidMount() {\n    this._isMounted = true;\n\n    if (this.unlisten) {\n      // Any pre-mount location changes have been captured at\n      // this point, so unregister the listener.\n      this.unlisten();\n    }\n    if (!this.props.staticContext) {\n      this.unlisten = this.props.history.listen(location => {\n        if (this._isMounted) {\n          this.setState({ location });\n        }\n      });\n    }\n    if (this._pendingLocation) {\n      this.setState({ location: this._pendingLocation });\n    }\n  }\n\n  componentWillUnmount() {\n    if (this.unlisten) {\n      this.unlisten();\n      this._isMounted = false;\n      this._pendingLocation = null;\n    }\n  }\n\n  render() {\n    return (\n      <RouterContext.Provider\n        value={{\n          history: this.props.history,\n          location: this.state.location,\n          match: Router.computeRootMatch(this.state.location.pathname),\n          staticContext: this.props.staticContext\n        }}\n      >\n        <HistoryContext.Provider\n          children={this.props.children || null}\n          value={this.props.history}\n        />\n      </RouterContext.Provider>\n    );\n  }\n}\n\nif (__DEV__) {\n  Router.propTypes = {\n    children: PropTypes.node,\n    history: PropTypes.object.isRequired,\n    staticContext: PropTypes.object\n  };\n\n  Router.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      prevProps.history === this.props.history,\n      \"You cannot change <Router history>\"\n    );\n  };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  MemoryRouter.propTypes = {\n    initialEntries: PropTypes.array,\n    initialIndex: PropTypes.number,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number,\n    children: PropTypes.node\n  };\n\n  MemoryRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n    );\n  };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n  componentDidMount() {\n    if (this.props.onMount) this.props.onMount.call(this, this);\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n  }\n\n  componentWillUnmount() {\n    if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n  }\n\n  render() {\n    return null;\n  }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n  const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n  const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n  if (pathCache[path]) return pathCache[path];\n\n  const keys = [];\n  const regexp = pathToRegexp(path, keys, options);\n  const result = { regexp, keys };\n\n  if (cacheCount < cacheLimit) {\n    pathCache[path] = result;\n    cacheCount++;\n  }\n\n  return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n  if (typeof options === \"string\" || Array.isArray(options)) {\n    options = { path: options };\n  }\n\n  const { path, exact = false, strict = false, sensitive = false } = options;\n\n  const paths = [].concat(path);\n\n  return paths.reduce((matched, path) => {\n    if (!path && path !== \"\") return null;\n    if (matched) return matched;\n\n    const { regexp, keys } = compilePath(path, {\n      end: exact,\n      strict,\n      sensitive\n    });\n    const match = regexp.exec(pathname);\n\n    if (!match) return null;\n\n    const [url, ...values] = match;\n    const isExact = pathname === url;\n\n    if (exact && !isExact) return null;\n\n    return {\n      path, // the path used to match\n      url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n      isExact, // whether or not we matched exactly\n      params: keys.reduce((memo, key, index) => {\n        memo[key.name] = values[index];\n        return memo;\n      }, {})\n    };\n  }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n  return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n  const value = children(props);\n\n  warning(\n    value !== undefined,\n    \"You returned `undefined` from the `children` function of \" +\n      `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n      \"should have returned a React element or `null`\"\n  );\n\n  return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n  render() {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Route> outside a <Router>\");\n\n          const location = this.props.location || context.location;\n          const match = this.props.computedMatch\n            ? this.props.computedMatch // <Switch> already computed the match for us\n            : this.props.path\n            ? matchPath(location.pathname, this.props)\n            : context.match;\n\n          const props = { ...context, location, match };\n\n          let { children, component, render } = this.props;\n\n          // Preact uses an empty array as children by\n          // default, so use null if that's the case.\n          if (Array.isArray(children) && isEmptyChildren(children)) {\n            children = null;\n          }\n\n          return (\n            <RouterContext.Provider value={props}>\n              {props.match\n                ? children\n                  ? typeof children === \"function\"\n                    ? __DEV__\n                      ? evalChildrenDev(children, props, this.props.path)\n                      : children(props)\n                    : children\n                  : component\n                  ? React.createElement(component, props)\n                  : render\n                  ? render(props)\n                  : null\n                : typeof children === \"function\"\n                ? __DEV__\n                  ? evalChildrenDev(children, props, this.props.path)\n                  : children(props)\n                : null}\n            </RouterContext.Provider>\n          );\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n}\n\nif (__DEV__) {\n  Route.propTypes = {\n    children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n    component: (props, propName) => {\n      if (props[propName] && !isValidElementType(props[propName])) {\n        return new Error(\n          `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n        );\n      }\n    },\n    exact: PropTypes.bool,\n    location: PropTypes.object,\n    path: PropTypes.oneOfType([\n      PropTypes.string,\n      PropTypes.arrayOf(PropTypes.string)\n    ]),\n    render: PropTypes.func,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool\n  };\n\n  Route.prototype.componentDidMount = function() {\n    warning(\n      !(\n        this.props.children &&\n        !isEmptyChildren(this.props.children) &&\n        this.props.component\n      ),\n      \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n    );\n\n    warning(\n      !(\n        this.props.children &&\n        !isEmptyChildren(this.props.children) &&\n        this.props.render\n      ),\n      \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n    );\n\n    warning(\n      !(this.props.component && this.props.render),\n      \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n    );\n  };\n\n  Route.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      !(this.props.location && !prevProps.location),\n      '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n    );\n\n    warning(\n      !(!this.props.location && prevProps.location),\n      '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n    );\n  };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n  return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n  if (!basename) return location;\n\n  return {\n    ...location,\n    pathname: addLeadingSlash(basename) + location.pathname\n  };\n}\n\nfunction stripBasename(basename, location) {\n  if (!basename) return location;\n\n  const base = addLeadingSlash(basename);\n\n  if (location.pathname.indexOf(base) !== 0) return location;\n\n  return {\n    ...location,\n    pathname: location.pathname.substr(base.length)\n  };\n}\n\nfunction createURL(location) {\n  return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n  return () => {\n    invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n  };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n  navigateTo(location, action) {\n    const { basename = \"\", context = {} } = this.props;\n    context.action = action;\n    context.location = addBasename(basename, createLocation(location));\n    context.url = createURL(context.location);\n  }\n\n  handlePush = location => this.navigateTo(location, \"PUSH\");\n  handleReplace = location => this.navigateTo(location, \"REPLACE\");\n  handleListen = () => noop;\n  handleBlock = () => noop;\n\n  render() {\n    const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n    const history = {\n      createHref: path => addLeadingSlash(basename + createURL(path)),\n      action: \"POP\",\n      location: stripBasename(basename, createLocation(location)),\n      push: this.handlePush,\n      replace: this.handleReplace,\n      go: staticHandler(\"go\"),\n      goBack: staticHandler(\"goBack\"),\n      goForward: staticHandler(\"goForward\"),\n      listen: this.handleListen,\n      block: this.handleBlock\n    };\n\n    return <Router {...rest} history={history} staticContext={context} />;\n  }\n}\n\nif (__DEV__) {\n  StaticRouter.propTypes = {\n    basename: PropTypes.string,\n    context: PropTypes.object,\n    location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n  };\n\n  StaticRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n    );\n  };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n  render() {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n          const location = this.props.location || context.location;\n\n          let element, match;\n\n          // We use React.Children.forEach instead of React.Children.toArray().find()\n          // here because toArray adds keys to all child elements and we do not want\n          // to trigger an unmount/remount for two <Route>s that render the same\n          // component at different URLs.\n          React.Children.forEach(this.props.children, child => {\n            if (match == null && React.isValidElement(child)) {\n              element = child;\n\n              const path = child.props.path || child.props.from;\n\n              match = path\n                ? matchPath(location.pathname, { ...child.props, path })\n                : context.match;\n            }\n          });\n\n          return match\n            ? React.cloneElement(element, { location, computedMatch: match })\n            : null;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n}\n\nif (__DEV__) {\n  Switch.propTypes = {\n    children: PropTypes.node,\n    location: PropTypes.object\n  };\n\n  Switch.prototype.componentDidUpdate = function(prevProps) {\n    warning(\n      !(this.props.location && !prevProps.location),\n      '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n    );\n\n    warning(\n      !(!this.props.location && prevProps.location),\n      '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n    );\n  };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useHistory()\"\n    );\n  }\n\n  return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useLocation()\"\n    );\n  }\n\n  return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useParams()\"\n    );\n  }\n\n  const match = useContext(RouterContext).match;\n  return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n  if (__DEV__) {\n    invariant(\n      typeof useContext === \"function\",\n      \"You must use React >= 16.8 in order to use useRouteMatch()\"\n    );\n  }\n\n  const location = useLocation();\n  const match = useContext(RouterContext).match;\n  return path ? matchPath(location.pathname, path) : match;\n}\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport * as React from \"react\";\nimport SideNavigation from \"@awsui/components-react/side-navigation\";\nimport Icon from \"@awsui/components-react/icon\";\nimport { useHistory } from \"react-router-dom\";\n\nfunction Navigation(props) {\n  const history = useHistory();\n  return (\n    <SideNavigation\n      activeHref={props.active}\n      items={[\n        {\n          type: \"section\",\n          text: \"Requests\",\n          items: [\n            { type: \"link\", text: \"Create request\", href: \"/requests/request\" },\n            { type: \"link\", text: \"My requests\", href: \"/requests/view\" },\n          ],\n        },\n        {\n          type: \"section\",\n          text: \"Approvals\",\n          items: [\n            {\n              type: \"link\",\n              text: \"Approve requests\",\n              href: \"/approvals/approve\",\n            },\n            { type: \"link\", text: \"My approvals\", href: \"/approvals/view\" },\n          ],\n        },\n        {\n          type: \"section\",\n          text: \"Elevated access\",\n          items: [\n            { type: \"link\", text: \"Active access\", href: \"/sessions/active\" },\n            { type: \"link\", text: \"Ended access\", href: \"/sessions/audit\" },\n          ],\n        },\n        props.group && props.group.includes(\"Auditors\") && props.cognitoGroups.includes(\"Auditors\")\n          ? {\n              type: \"section\",\n              text: \"Audit\",\n              items: [\n                {\n                  type: \"link\",\n                  text: \"Approvals\",\n                  href: \"/audit/approvals\",\n                },\n                {\n                  type: \"link\",\n                  text: \"Elevated access\",\n                  href: \"/audit/sessions\",\n                },\n              ],\n            }\n          : {},\n        props.group && props.group.includes(\"Admin\") && props.cognitoGroups.includes(\"Admin\")\n          ? {\n              type: \"section\",\n              text: \"Administration\",\n              items: [\n                { type: \"link\", text: \"Approver policy\", href: \"/admin/approvers\" },\n                { type: \"link\", text: \"Eligibility policy\", href: \"/admin/policy\" },\n                { type: \"link\", text: \"Settings\", href: \"/admin/settings\", info: <Icon name=\"settings\" />},\n              ],\n            }\n          : {},\n      ]}\n      onFollow={(event) => {\n        if (!event.detail.external) {\n          event.preventDefault();\n          props.setActiveHref(event.detail.href);\n          history.push(event.detail.href);\n        }\n      }}\n    />\n  );\n}\n\nexport default Navigation;\n","\n    import './styles.scoped.css';\n    export default {\n  \"icon-shake\": \"awsui_icon-shake_1cbgc_7lmr7_97\",\n  \"awsui-motion-shake-horizontally\": \"awsui_awsui-motion-shake-horizontally_1cbgc_7lmr7_1\",\n  \"container-fade-in\": \"awsui_container-fade-in_1cbgc_7lmr7_125\",\n  \"awsui-motion-fade-in-0\": \"awsui_awsui-motion-fade-in-0_1cbgc_7lmr7_1\",\n  \"root\": \"awsui_root_1cbgc_7lmr7_147\",\n  \"status-error\": \"awsui_status-error_1cbgc_7lmr7_156\",\n  \"status-warning\": \"awsui_status-warning_1cbgc_7lmr7_159\",\n  \"status-success\": \"awsui_status-success_1cbgc_7lmr7_162\",\n  \"status-info\": \"awsui_status-info_1cbgc_7lmr7_165\",\n  \"status-stopped\": \"awsui_status-stopped_1cbgc_7lmr7_168\",\n  \"status-pending\": \"awsui_status-pending_1cbgc_7lmr7_171\",\n  \"status-in-progress\": \"awsui_status-in-progress_1cbgc_7lmr7_174\",\n  \"status-loading\": \"awsui_status-loading_1cbgc_7lmr7_177\",\n  \"color-override-red\": \"awsui_color-override-red_1cbgc_7lmr7_180\",\n  \"color-override-grey\": \"awsui_color-override-grey_1cbgc_7lmr7_183\",\n  \"color-override-blue\": \"awsui_color-override-blue_1cbgc_7lmr7_186\",\n  \"color-override-green\": \"awsui_color-override-green_1cbgc_7lmr7_189\",\n  \"icon\": \"awsui_icon_1cbgc_7lmr7_97\",\n  \"container\": \"awsui_container_1cbgc_7lmr7_125\",\n  \"overflow-ellipsis\": \"awsui_overflow-ellipsis_1cbgc_7lmr7_203\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { BaseComponentProps, getBaseProps } from '../internal/base-component';\nimport styles from './styles.css.js';\nimport InternalIcon from '../icon/internal';\nimport InternalSpinner from '../spinner/internal';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { IconProps } from '../icon/interfaces';\nimport { SomeRequired } from '../internal/types';\n\nconst typeToIcon: (size: IconProps.Size) => Record<StatusIndicatorProps.Type, JSX.Element> = size => ({\n  error: <InternalIcon name=\"status-negative\" size={size} />,\n  warning: <InternalIcon name=\"status-warning\" size={size} />,\n  success: <InternalIcon name=\"status-positive\" size={size} />,\n  info: <InternalIcon name=\"status-info\" size={size} />,\n  stopped: <InternalIcon name=\"status-stopped\" size={size} />,\n  pending: <InternalIcon name=\"status-pending\" size={size} />,\n  'in-progress': <InternalIcon name=\"status-in-progress\" size={size} />,\n  loading: <InternalSpinner />,\n});\n\nexport interface StatusIndicatorProps extends BaseComponentProps {\n  /**\n   * Specifies the status type.\n   */\n  type?: StatusIndicatorProps.Type;\n  /**\n   * A text fragment that communicates the status.\n   */\n  children?: React.ReactNode;\n  /**\n   * Specifies an `aria-label` for the icon. If the status text alone does not fully describe the status,\n   * use this to communicate additional context.\n   */\n  iconAriaLabel?: string;\n  /**\n   * Specifies an override for the status indicator color.\n   */\n  colorOverride?: StatusIndicatorProps.Color;\n  /**\n   * Specifies if the text content should wrap. If you set it to false, it prevents the text from wrapping\n   * and truncates it with an ellipsis.\n   */\n  wrapText?: boolean;\n}\n\ninterface InternalStatusIndicatorProps extends SomeRequired<StatusIndicatorProps, 'type'>, InternalBaseComponentProps {\n  /**\n   * Play an animation on the error icon when first rendered\n   */\n  __animate?: boolean;\n\n  /**\n   * Size of icon.\n   */\n  __size?: IconProps.Size;\n}\n\nexport namespace StatusIndicatorProps {\n  // Why not enums? Explained there\n  // https://stackoverflow.com/questions/52393730/typescript-string-literal-union-type-from-enum\n  export type Type = 'error' | 'warning' | 'success' | 'info' | 'stopped' | 'pending' | 'in-progress' | 'loading';\n  export type Color = 'blue' | 'grey' | 'green' | 'red';\n}\n\nexport default function StatusIndicator({\n  type,\n  children,\n  iconAriaLabel,\n  colorOverride,\n  wrapText = true,\n  __animate = false,\n  __internalRootRef,\n  __size = 'normal',\n  ...rest\n}: InternalStatusIndicatorProps) {\n  const baseProps = getBaseProps(rest);\n  return (\n    <span\n      {...baseProps}\n      className={clsx(\n        styles.root,\n        styles[`status-${type}`],\n        {\n          [styles[`color-override-${colorOverride}`]]: colorOverride,\n        },\n        baseProps.className\n      )}\n      ref={__internalRootRef}\n    >\n      <span\n        className={clsx(\n          styles.container,\n          wrapText === false && styles['overflow-ellipsis'],\n          __animate && styles['container-fade-in']\n        )}\n      >\n        <span\n          className={clsx(styles.icon, __animate && styles['icon-shake'])}\n          aria-label={iconAriaLabel}\n          role={iconAriaLabel ? 'img' : undefined}\n        >\n          {typeToIcon(__size)[type]}\n        </span>\n        {children}\n      </span>\n    </span>\n  );\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"help-panel\": \"awsui_help-panel_1d237_1nyjp_94\",\n  \"header\": \"awsui_header_1d237_1nyjp_270\",\n  \"content\": \"awsui_content_1d237_1nyjp_300\",\n  \"footer\": \"awsui_footer_1d237_1nyjp_311\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport InternalStatusIndicator from '../status-indicator/internal';\nimport styles from './styles.css.js';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { HelpPanelProps } from './interfaces';\nimport LiveRegion from '../internal/components/live-region';\nimport { useInternalI18n } from '../internal/i18n/context';\n\nexport { HelpPanelProps };\n\nexport default function HelpPanel({ header, footer, children, loading, loadingText, ...restProps }: HelpPanelProps) {\n  const { __internalRootRef } = useBaseComponent('HelpPanel');\n  const baseProps = getBaseProps(restProps);\n  const i18n = useInternalI18n('help-panel');\n  const containerProps = {\n    ...baseProps,\n    className: clsx(baseProps.className, styles['help-panel']),\n  };\n  return loading ? (\n    <div {...containerProps} ref={__internalRootRef}>\n      <InternalStatusIndicator type=\"loading\">\n        <LiveRegion visible={true}>{i18n('loadingText', loadingText)}</LiveRegion>\n      </InternalStatusIndicator>\n    </div>\n  ) : (\n    <div {...containerProps} ref={__internalRootRef}>\n      {header && <div className={clsx(styles.header)}>{header}</div>}\n      <div className={clsx(styles.content)}>{children}</div>\n      {footer && <div className={styles.footer}>{footer}</div>}\n    </div>\n  );\n}\n\napplyDisplayName(HelpPanel, 'HelpPanel');\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport * as React from \"react\";\nimport HelpPanel from \"@awsui/components-react/help-panel\";\n\nfunction ToolsDrawer() {\n  return (\n    <HelpPanel header={<h2>About TEAM</h2>}>\n      <div>\n        <p>\n          Temporary Elevated Access Management (TEAM) is an open source solution that integrates with AWS IAM Identity Center and allows you to manage and monitor time-bound elevated access to your multi-account AWS environment at scale.\n        </p>\n        <h4>Services used</h4>\n        <ul>\n          <li>AWS IAM Identity Center</li>\n          <li>AWS Appsync</li>\n          <li>AWS Amplify</li>\n          <li>Amazon DynamoDB</li>\n          <li>AWS Lambda</li>\n          <li>AWS Step Functions</li>\n          <li>Amazon Cognito</li>\n          <li>AWS CloudTrail Lake</li>\n        </ul>\n        <h4>Benefits</h4>\n        Temporary Elevated Access Management (TEAM) solution helps to:\n        <ul>\n          <li>\n            Simplify cloud access management\n          </li>\n          <li>Reduce risk of breach or exposure</li>\n          <li>Achieve regulatory and compliance requirements</li>\n          <li>Improve the security of your AWS environment</li>\n        </ul>\n        <h4>Read the docs</h4>\n        The best way to get start with TEAM is to read the documentation <a href=\"https://aws-samples.github.io/iam-identity-center-team/\">\n              Documentation{\" \"}\n            </a>\n        <h4>Authors</h4>\n        TEAM was created by Taiwo Awoyinfa and has been enhanced with major contributions from Varvara Semenova and James Greenwood and technical inputs from Jeremy Ware and Abhishek Pande.\n      </div>\n    </HelpPanel>\n  );\n}\n\nexport default ToolsDrawer;","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  BrowserRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    forceRefresh: PropTypes.bool,\n    getUserConfirmation: PropTypes.func,\n    keyLength: PropTypes.number\n  };\n\n  BrowserRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<BrowserRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n    );\n  };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a <Router> that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n  history = createHistory(this.props);\n\n  render() {\n    return <Router history={this.history} children={this.props.children} />;\n  }\n}\n\nif (__DEV__) {\n  HashRouter.propTypes = {\n    basename: PropTypes.string,\n    children: PropTypes.node,\n    getUserConfirmation: PropTypes.func,\n    hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n  };\n\n  HashRouter.prototype.componentDidMount = function() {\n    warning(\n      !this.props.history,\n      \"<HashRouter> ignores the history prop. To use a custom history, \" +\n        \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n    );\n  };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n  typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n  return typeof to === \"string\"\n    ? createLocation(to, null, null, currentLocation)\n    : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n  resolveToLocation,\n  normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n  (\n    {\n      innerRef, // TODO: deprecate\n      navigate,\n      onClick,\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    const { target } = rest;\n\n    let props = {\n      ...rest,\n      onClick: event => {\n        try {\n          if (onClick) onClick(event);\n        } catch (ex) {\n          event.preventDefault();\n          throw ex;\n        }\n\n        if (\n          !event.defaultPrevented && // onClick prevented default\n          event.button === 0 && // ignore everything but left clicks\n          (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n          !isModifiedEvent(event) // ignore clicks with modifier keys\n        ) {\n          event.preventDefault();\n          navigate();\n        }\n      }\n    };\n\n    // React 15 compat\n    if (forwardRefShim !== forwardRef) {\n      props.ref = forwardedRef || innerRef;\n    } else {\n      props.ref = innerRef;\n    }\n\n    /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n    return <a {...props} />;\n  }\n);\n\nif (__DEV__) {\n  LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nconst Link = forwardRef(\n  (\n    {\n      component = LinkAnchor,\n      replace,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <Link> outside a <Router>\");\n\n          const { history } = context;\n\n          const location = normalizeToLocation(\n            resolveToLocation(to, context.location),\n            context.location\n          );\n\n          const href = location ? history.createHref(location) : \"\";\n          const props = {\n            ...rest,\n            href,\n            navigate() {\n              const location = resolveToLocation(to, context.location);\n              const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n              const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n              method(location);\n            }\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return React.createElement(component, props);\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  const toType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.object,\n    PropTypes.func\n  ]);\n  const refType = PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.func,\n    PropTypes.shape({ current: PropTypes.any })\n  ]);\n\n  Link.displayName = \"Link\";\n\n  Link.propTypes = {\n    innerRef: refType,\n    onClick: PropTypes.func,\n    replace: PropTypes.bool,\n    target: PropTypes.string,\n    to: toType.isRequired\n  };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n  resolveToLocation,\n  normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n  forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n  return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n  (\n    {\n      \"aria-current\": ariaCurrent = \"page\",\n      activeClassName = \"active\", // TODO: deprecate\n      activeStyle, // TODO: deprecate\n      className: classNameProp,\n      exact,\n      isActive: isActiveProp,\n      location: locationProp,\n      sensitive,\n      strict,\n      style: styleProp,\n      to,\n      innerRef, // TODO: deprecate\n      ...rest\n    },\n    forwardedRef\n  ) => {\n    return (\n      <RouterContext.Consumer>\n        {context => {\n          invariant(context, \"You should not use <NavLink> outside a <Router>\");\n\n          const currentLocation = locationProp || context.location;\n          const toLocation = normalizeToLocation(\n            resolveToLocation(to, currentLocation),\n            currentLocation\n          );\n          const { pathname: path } = toLocation;\n          // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n          const escapedPath =\n            path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n          const match = escapedPath\n            ? matchPath(currentLocation.pathname, {\n                path: escapedPath,\n                exact,\n                sensitive,\n                strict\n              })\n            : null;\n          const isActive = !!(isActiveProp\n            ? isActiveProp(match, currentLocation)\n            : match);\n\n          let className =\n            typeof classNameProp === \"function\"\n              ? classNameProp(isActive)\n              : classNameProp;\n\n          let style =\n            typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n          if (isActive) {\n            className = joinClassnames(className, activeClassName);\n            style = { ...style, ...activeStyle };\n          }\n\n          const props = {\n            \"aria-current\": (isActive && ariaCurrent) || null,\n            className,\n            style,\n            to: toLocation,\n            ...rest\n          };\n\n          // React 15 compat\n          if (forwardRefShim !== forwardRef) {\n            props.ref = forwardedRef || innerRef;\n          } else {\n            props.innerRef = innerRef;\n          }\n\n          return <Link {...props} />;\n        }}\n      </RouterContext.Consumer>\n    );\n  }\n);\n\nif (__DEV__) {\n  NavLink.displayName = \"NavLink\";\n\n  const ariaCurrentType = PropTypes.oneOf([\n    \"page\",\n    \"step\",\n    \"location\",\n    \"date\",\n    \"time\",\n    \"true\",\n    \"false\"\n  ]);\n\n  NavLink.propTypes = {\n    ...Link.propTypes,\n    \"aria-current\": ariaCurrentType,\n    activeClassName: PropTypes.string,\n    activeStyle: PropTypes.object,\n    className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n    exact: PropTypes.bool,\n    isActive: PropTypes.func,\n    location: PropTypes.object,\n    sensitive: PropTypes.bool,\n    strict: PropTypes.bool,\n    style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n  };\n}\n\nexport default NavLink;\n","\n    import './styles.scoped.css';\n    export default {\n  \"flash-with-motion\": \"awsui_flash-with-motion_1q84n_1b3gd_93\",\n  \"enter\": \"awsui_enter_1q84n_1b3gd_93\",\n  \"flash-body\": \"awsui_flash-body_1q84n_1b3gd_107\",\n  \"flash-message\": \"awsui_flash-message_1q84n_1b3gd_107\",\n  \"flash-header\": \"awsui_flash-header_1q84n_1b3gd_107\",\n  \"flash-content\": \"awsui_flash-content_1q84n_1b3gd_108\",\n  \"action-button-wrapper\": \"awsui_action-button-wrapper_1q84n_1b3gd_109\",\n  \"dismiss-button-wrapper\": \"awsui_dismiss-button-wrapper_1q84n_1b3gd_110\",\n  \"flash-icon\": \"awsui_flash-icon_1q84n_1b3gd_133\",\n  \"entering\": \"awsui_entering_1q84n_1b3gd_146\",\n  \"entered\": \"awsui_entered_1q84n_1b3gd_167\",\n  \"exiting\": \"awsui_exiting_1q84n_1b3gd_272\",\n  \"stack\": \"awsui_stack_1q84n_1b3gd_294\",\n  \"animation-running\": \"awsui_animation-running_1q84n_1b3gd_294\",\n  \"item\": \"awsui_item_1q84n_1b3gd_294\",\n  \"flash-list-item\": \"awsui_flash-list-item_1q84n_1b3gd_295\",\n  \"notification-bar\": \"awsui_notification-bar_1q84n_1b3gd_296\",\n  \"collapsed\": \"awsui_collapsed_1q84n_1b3gd_316\",\n  \"animation-ready\": \"awsui_animation-ready_1q84n_1b3gd_316\",\n  \"expanded-only\": \"awsui_expanded-only_1q84n_1b3gd_316\",\n  \"expanded\": \"awsui_expanded_1q84n_1b3gd_316\",\n  \"flash\": \"awsui_flash_1q84n_1b3gd_93\",\n  \"collapsible\": \"awsui_collapsible_1q84n_1b3gd_380\",\n  \"short-list\": \"awsui_short-list_1q84n_1b3gd_386\",\n  \"visual-refresh\": \"awsui_visual-refresh_1q84n_1b3gd_386\",\n  \"status\": \"awsui_status_1q84n_1b3gd_603\",\n  \"header\": \"awsui_header_1q84n_1b3gd_603\",\n  \"item-count\": \"awsui_item-count_1q84n_1b3gd_604\",\n  \"button\": \"awsui_button_1q84n_1b3gd_605\",\n  \"type-count\": \"awsui_type-count_1q84n_1b3gd_640\",\n  \"count-number\": \"awsui_count-number_1q84n_1b3gd_640\",\n  \"icon\": \"awsui_icon_1q84n_1b3gd_674\",\n  \"floating\": \"awsui_floating_1q84n_1b3gd_712\",\n  \"flashbar\": \"awsui_flashbar_1q84n_1b3gd_720\",\n  \"flash-refresh\": \"awsui_flash-refresh_1q84n_1b3gd_766\",\n  \"flash-list\": \"awsui_flash-list_1q84n_1b3gd_295\",\n  \"flash-focus-container\": \"awsui_flash-focus-container_1q84n_1b3gd_785\",\n  \"flash-text\": \"awsui_flash-text_1q84n_1b3gd_812\",\n  \"dismiss-button\": \"awsui_dismiss-button_1q84n_1b3gd_110\",\n  \"breakpoint-default\": \"awsui_breakpoint-default_1q84n_1b3gd_853\",\n  \"action-button\": \"awsui_action-button_1q84n_1b3gd_109\",\n  \"flash-type-success\": \"awsui_flash-type-success_1q84n_1b3gd_866\",\n  \"flash-type-error\": \"awsui_flash-type-error_1q84n_1b3gd_870\",\n  \"flash-type-warning\": \"awsui_flash-type-warning_1q84n_1b3gd_874\",\n  \"flash-type-info\": \"awsui_flash-type-info_1q84n_1b3gd_878\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport interface ThrottleOptions {\n  leading?: boolean;\n  trailing?: boolean;\n}\n\nexport interface ThrottledFunction<F extends (...args: any) => any> {\n  (...args: Parameters<F>): void;\n  cancel(): void;\n}\n\nexport function throttle<F extends (...args: any) => any>(\n  func: F,\n  delay: number,\n  { trailing = true }: ThrottleOptions = {}\n): ThrottledFunction<F> {\n  let pending: null | { this: any; args: any } = null;\n  let lastInvokeTime: null | number = null;\n  let timerId: null | number = null;\n\n  // Runs on every animation frame until timer stopped.\n  function pendingFunc() {\n    if (pending === null || lastInvokeTime === null) {\n      return;\n    }\n\n    const invokeTime = Date.now();\n    const shouldInvoke = invokeTime - lastInvokeTime >= delay;\n\n    if (shouldInvoke) {\n      func.apply(pending.this, pending.args);\n      lastInvokeTime = invokeTime;\n      pending = null;\n      timerId = null;\n    } else if (trailing) {\n      startTimer();\n    }\n  }\n\n  function startTimer() {\n    if (timerId) {\n      cancelAnimationFrame(timerId);\n    }\n    timerId = requestAnimationFrame(pendingFunc);\n  }\n\n  // Decorated client function with delay mechanism.\n  function throttled(this: any, ...args: any) {\n    if (lastInvokeTime === null) {\n      lastInvokeTime = Date.now();\n      func.apply(this, args);\n    } else {\n      pending = { this: this, args };\n      startTimer();\n    }\n  }\n\n  // Prevents delayed function from execution when no longer needed.\n  throttled.cancel = () => {\n    if (timerId) {\n      cancelAnimationFrame(timerId);\n    }\n    pending = null;\n    lastInvokeTime = null;\n    timerId = null;\n  };\n\n  return throttled;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { FlashbarProps, FlashType } from './interfaces';\nimport { IconProps } from '../icon/interfaces';\n\nexport const FOCUS_THROTTLE_DELAY = 2000;\n\n// Since the position of a notification changes when the Flashbar is collapsed,\n// it is useful on some situations (e.g, for animating) to know the original position of the item\n// in the non-collapsed state.\nexport interface StackableItem extends FlashbarProps.MessageDefinition {\n  expandedIndex: number;\n  collapsedIndex?: number;\n}\n\nconst typesToColors: Record<FlashType, string> = {\n  error: 'red',\n  info: 'blue',\n  progress: 'blue',\n  success: 'green',\n  warning: 'blue',\n};\n\nfunction getColorFromType(type?: FlashType): string {\n  const defaultColor = 'blue';\n  return type ? typesToColors[type] || defaultColor : defaultColor;\n}\n\nexport function getItemType(item: FlashbarProps.MessageDefinition) {\n  if (item.loading) {\n    return 'progress';\n  } else {\n    return item.type || 'info';\n  }\n}\n\nfunction getItemColor(item: FlashbarProps.MessageDefinition) {\n  return getColorFromType(getItemType(item));\n}\n\n/*\n Returns a selection of notifications, preserving the order when possible but making sure that all different colors in\n the stack are represented in the returned array.\n The order corresponds to how they are represented when using the collapsible feature (newest first, oldest last).\n */\nexport function getVisibleCollapsedItems(\n  items: ReadonlyArray<FlashbarProps.MessageDefinition>,\n  desiredLength: number\n): ReadonlyArray<StackableItem> {\n  // First `desiredLength` items in the original array,\n  // together with `isColorRepeated` to tell if they can be subject to be replaced later on if necessary\n  const itemsOnTop: { item: StackableItem; isColorRepeated: boolean }[] = [];\n\n  // Items that fall outside `desiredIndexLength` but need to be \"promoted\" if possible\n  // because they are of a different color which otherwise wouldn't be represented\n  const itemsToPromote: StackableItem[] = [];\n\n  const addedColors: Set<string> = new Set();\n  const allPossibleColors = Object.keys(typesToColors).length;\n  const finalLength = Math.min(items.length, desiredLength);\n\n  for (let i = 0; i < items.length; i++) {\n    const item = items[i];\n    const color = getItemColor(item);\n    const isColorRepeated = addedColors.has(color);\n    if (i < finalLength) {\n      itemsOnTop.push({ item: { ...item, expandedIndex: i }, isColorRepeated });\n    } else {\n      if (addedColors.size === allPossibleColors) {\n        // No need to keep looking for unrepresented colors, we can stop looping\n        break;\n      } else if (!isColorRepeated) {\n        itemsToPromote.push({ ...item, expandedIndex: i });\n      }\n    }\n    addedColors.add(color);\n  }\n  // Generate the new array with the selected items, by picking from both arrays.\n  // First, from the non-repeated items within the desired length...\n  // We loop `itemsOnTop` starting from the end because we prefer to preserve the first ones rather than the old ones\n  const reversedInitialSelection = [];\n  let slotsReservedForPromotions = 0;\n  for (let j = itemsOnTop.length - 1; j >= 0; j--) {\n    const item = itemsOnTop[j];\n    if (item.isColorRepeated && slotsReservedForPromotions < itemsToPromote.length) {\n      slotsReservedForPromotions += 1;\n    } else {\n      reversedInitialSelection.push(item.item);\n    }\n  }\n  const selectedItems = reversedInitialSelection.reverse();\n  // ...and then complete the selection with as many promotable items as we can fit in the rest of the array\n  for (let k = 0; selectedItems.length < desiredLength; k++) {\n    selectedItems.push(itemsToPromote[k]);\n  }\n  return selectedItems;\n}\n\nexport function getFlashTypeCount(items: readonly FlashbarProps.MessageDefinition[]): Record<FlashType, number> {\n  const count = { error: 0, info: 0, progress: 0, success: 0, warning: 0 };\n  for (const item of items) {\n    const type = getItemType(item);\n    count[type] += 1;\n  }\n  return count;\n}\n\nexport type LabelName =\n  | 'errorIconAriaLabel'\n  | 'warningIconAriaLabel'\n  | 'successIconAriaLabel'\n  | 'infoIconAriaLabel'\n  | 'inProgressIconAriaLabel';\n\nexport const counterTypes: {\n  type: FlashType;\n  labelName: LabelName;\n  iconName: IconProps.Name;\n}[] = [\n  { type: 'error', labelName: 'errorIconAriaLabel', iconName: 'status-negative' },\n  { type: 'warning', labelName: 'warningIconAriaLabel', iconName: 'status-warning' },\n  { type: 'success', labelName: 'successIconAriaLabel', iconName: 'status-positive' },\n  { type: 'info', labelName: 'infoIconAriaLabel', iconName: 'status-info' },\n  { type: 'progress', labelName: 'inProgressIconAriaLabel', iconName: 'status-in-progress' },\n];\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { PACKAGE_SOURCE, PACKAGE_VERSION } from '../../internal/environment';\nimport { Metrics } from '@awsui/component-toolkit/internal';\nimport { FlashbarProps } from '../interfaces';\nimport { getFlashTypeCount } from '../utils';\n\nconst metrics = new Metrics(PACKAGE_SOURCE, PACKAGE_VERSION);\nconst eventContext = 'csa_flashbar';\n\nexport const sendRenderMetric = (items: FlashbarProps['items']) => {\n  const countByType = getFlashTypeCount(items);\n\n  metrics.sendPanoramaMetric({\n    eventContext,\n    eventType: 'render',\n    eventValue: items.length.toString(),\n    eventDetail: countByType,\n  });\n};\n\nexport const sendToggleMetric = (itemsCount: number, expanded: boolean) => {\n  metrics.sendPanoramaMetric({\n    eventContext,\n    eventType: expanded ? 'expand' : 'collapse',\n    eventValue: itemsCount.toString(),\n  });\n};\n\nexport const sendDismissMetric = (itemType: string) => {\n  metrics.sendPanoramaMetric({\n    eventContext,\n    eventType: 'dismiss',\n    eventValue: itemType,\n  });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { FlashbarProps } from './interfaces';\nimport React from 'react';\nimport InternalSpinner from '../spinner/internal';\nimport InternalIcon from '../icon/internal';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { InternalButton } from '../button/internal';\nimport { warnOnce } from '../internal/logging';\nimport { isDevelopment } from '../internal/is-development';\nimport { throttle } from '../internal/utils/throttle';\nimport LiveRegion from '../internal/components/live-region';\nimport { ButtonProps } from '../button/interfaces';\n\nimport { sendDismissMetric } from './internal/analytics';\n\nimport { FOCUS_THROTTLE_DELAY } from './utils';\nimport { DATA_ATTR_ANALYTICS_FLASHBAR } from '../internal/analytics/selectors';\n\nconst ICON_TYPES = {\n  success: 'status-positive',\n  warning: 'status-warning',\n  info: 'status-info',\n  error: 'status-negative',\n} as const;\n\nfunction actionButton(\n  buttonText: FlashbarProps.MessageDefinition['buttonText'],\n  onButtonClick: FlashbarProps.MessageDefinition['onButtonClick']\n) {\n  return (\n    <InternalButton onClick={onButtonClick} className={styles['action-button']} formAction=\"none\">\n      {buttonText}\n    </InternalButton>\n  );\n}\n\nfunction dismissButton(\n  dismissLabel: FlashbarProps.MessageDefinition['dismissLabel'],\n  onDismiss: FlashbarProps.MessageDefinition['onDismiss']\n) {\n  return (\n    <div className={styles['dismiss-button-wrapper']}>\n      <InternalButton\n        onClick={onDismiss}\n        className={styles['dismiss-button']}\n        variant=\"flashbar-icon\"\n        iconName=\"close\"\n        formAction=\"none\"\n        ariaLabel={dismissLabel}\n      />\n    </div>\n  );\n}\n\nexport const focusFlashById = throttle(\n  (element: HTMLElement | null, itemId: string) => {\n    const selector = `[data-itemid=\"${CSS.escape(itemId)}\"] .${styles['flash-focus-container']}`;\n    element?.querySelector<HTMLElement>(selector)?.focus();\n  },\n  FOCUS_THROTTLE_DELAY,\n  { trailing: false }\n);\n\nexport interface FlashProps extends FlashbarProps.MessageDefinition {\n  className: string;\n  transitionState?: string;\n}\n\nexport const Flash = React.forwardRef(\n  (\n    {\n      id,\n      header,\n      content,\n      dismissible,\n      dismissLabel,\n      statusIconAriaLabel,\n      loading,\n      action,\n      buttonText,\n      onButtonClick,\n      onDismiss,\n      className,\n      transitionState,\n      ariaRole,\n      type = 'info',\n    }: FlashProps,\n    ref: React.Ref<HTMLDivElement>\n  ) => {\n    if (isDevelopment) {\n      if (buttonText && !onButtonClick) {\n        warnOnce(\n          'Flashbar',\n          `You provided a \\`buttonText\\` prop without an \\`onButtonClick\\` handler. This will render a non-interactive action button.`\n        );\n      }\n\n      if (dismissible && !onDismiss) {\n        warnOnce(\n          'Flashbar',\n          `You have set the \\`dismissible\\` prop without an \\`onDismiss\\` handler. This will render a non-interactive dismiss button.`\n        );\n      }\n    }\n\n    const button = action || (buttonText && actionButton(buttonText, onButtonClick));\n\n    const iconType = ICON_TYPES[type];\n\n    const icon = loading ? <InternalSpinner /> : <InternalIcon name={iconType} />;\n\n    const effectiveType = loading ? 'info' : type;\n\n    const handleDismiss: ButtonProps['onClick'] = event => {\n      sendDismissMetric(effectiveType);\n      onDismiss && onDismiss(event);\n    };\n\n    const analyticsAttributes = {\n      [DATA_ATTR_ANALYTICS_FLASHBAR]: effectiveType,\n    };\n\n    return (\n      // We're not using \"polite\" or \"assertive\" here, just turning default behavior off.\n      // eslint-disable-next-line @awsui/prefer-live-region\n      <div\n        ref={ref}\n        role={ariaRole}\n        aria-live={ariaRole ? 'off' : undefined}\n        data-itemid={id}\n        className={clsx(\n          styles.flash,\n          styles[`flash-type-${effectiveType}`],\n          className,\n          transitionState && {\n            [styles.enter]: transitionState === 'enter',\n            [styles.entering]: transitionState === 'entering',\n            [styles.entered]: transitionState === 'entered',\n            [styles.exit]: transitionState === 'exit',\n            [styles.exiting]: transitionState === 'exiting',\n            [styles.exited]: transitionState === 'exited',\n          }\n        )}\n        {...analyticsAttributes}\n      >\n        <div className={styles['flash-body']}>\n          <div className={styles['flash-focus-container']} tabIndex={-1}>\n            <div\n              className={clsx(styles['flash-icon'], styles['flash-text'])}\n              role=\"img\"\n              aria-label={statusIconAriaLabel}\n            >\n              {icon}\n            </div>\n            <div className={clsx(styles['flash-message'], styles['flash-text'])}>\n              <div className={styles['flash-header']}>{header}</div>\n              <div className={styles['flash-content']}>{content}</div>\n            </div>\n          </div>\n          {button && <div className={styles['action-button-wrapper']}>{button}</div>}\n        </div>\n        {dismissible && dismissButton(dismissLabel, handleDismiss)}\n        {ariaRole === 'status' && (\n          <LiveRegion>\n            {statusIconAriaLabel} {header} {content}\n          </LiveRegion>\n        )}\n      </div>\n    );\n  }\n);\n","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}\nexport { _assertThisInitialized as default };","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && isValidElement(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return cloneElement(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!isValidElement(child)) return;\n    var hasPrev = (key in prevChildMapping);\n    var hasNext = (key in nextChildMapping);\n    var prevChild = prevChildMapping[key];\n    var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = cloneElement(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>`  does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      contextValue: {\n        isMounting: true\n      },\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.mounted = true;\n    this.setState({\n      contextValue: {\n        isMounting: false\n      }\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  } // node is `undefined` when user provided `nodeRef` prop\n  ;\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = getChildMapping(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = _extends({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var contextValue = this.state.contextValue;\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n        value: contextValue\n      }, children);\n    }\n\n    return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n      value: contextValue\n    }, /*#__PURE__*/React.createElement(Component, props, children));\n  };\n\n  return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: PropTypes.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: PropTypes.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useLayoutEffect, useState } from 'react';\nimport { findUpUntil } from '../../utils/dom';\n\ninterface VisualContextProps {\n  contextName: string;\n  className?: string;\n  children: React.ReactNode;\n}\n\nconst contextMatch = /awsui-context-([\\w-]+)/;\n\nexport function useVisualContext(elementRef: React.RefObject<HTMLElement>) {\n  const [value, setValue] = useState('');\n\n  useLayoutEffect(() => {\n    if (elementRef.current) {\n      const contextParent = findUpUntil(elementRef.current, node => !!node.className.match(contextMatch));\n      setValue(contextParent?.className.match(contextMatch)![1] ?? '');\n    }\n  }, [elementRef]);\n\n  return value;\n}\n\n/**\n * This function returns only the className string needed to apply a\n * visual context to the DOM. It is used by the default export but\n * can also be imported directly for situations where the insertion\n * of a <div> node creates style problems.\n */\nexport function getVisualContextClassname(contextName: string) {\n  return `awsui-context-${contextName}`;\n}\n\nexport default function VisualContext({ contextName, className, children }: VisualContextProps) {\n  return <div className={clsx(getVisualContextClassname(contextName), className)}>{children}</div>;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { useContainerQuery } from './use-container-query';\nimport { Breakpoint, getMatchingBreakpoint } from '../../breakpoints';\n\n/**\n * Re-renders the component when the breakpoint for the component changes. Scopes the re-renders to the specific\n * breakpoints you want to break at. \"default\" is always included as a fallback, so [\"xs\"] would trigger for\n * \"default\" and \"xs\".\n *\n * @param triggers The relevant breakpoints to trigger for.\n */\nexport function useContainerBreakpoints<T extends readonly Breakpoint[]>(\n  triggers?: T\n): [T[number] | 'default' | null, React.Ref<any>] {\n  // triggers.join() gives us a stable value to use for the dependencies argument\n  const triggersDep = triggers?.join();\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  return useContainerQuery(rect => getMatchingBreakpoint(rect.width, triggers), [triggersDep]);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { useReducedMotion, useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { getBaseProps } from '../internal/base-component';\nimport { FlashbarProps } from './interfaces';\nimport { focusFlashById } from './flash';\nimport { isDevelopment } from '../internal/is-development';\nimport { warnOnce } from '../internal/logging';\n\nexport const componentName = 'Flashbar';\n\n// Common logic for collapsible and non-collapsible Flashbar\nexport function useFlashbar({\n  items,\n  onItemsAdded,\n  onItemsChanged,\n  onItemsRemoved,\n  ...restProps\n}: FlashbarProps & {\n  onItemsAdded?: (items: FlashbarProps.MessageDefinition[]) => void;\n  onItemsRemoved?: (items: FlashbarProps.MessageDefinition[]) => void;\n  onItemsChanged?: (options?: { allItemsHaveId?: boolean; isReducedMotion?: boolean }) => void;\n}) {\n  const { __internalRootRef } = useBaseComponent(componentName);\n  const allItemsHaveId = useMemo(() => items.every(item => 'id' in item), [items]);\n  const baseProps = getBaseProps(restProps);\n  const ref = useRef<HTMLDivElement | null>(null);\n  const [breakpoint, breakpointRef] = useContainerBreakpoints(['xs']);\n  const mergedRef = useMergeRefs(ref, breakpointRef, __internalRootRef);\n  const isReducedMotion = useReducedMotion(breakpointRef as any);\n  const isVisualRefresh = useVisualRefresh();\n  const [previousItems, setPreviousItems] = useState<ReadonlyArray<FlashbarProps.MessageDefinition>>(items);\n  const [nextFocusId, setNextFocusId] = useState<string | null>(null);\n\n  if (isDevelopment) {\n    if (items?.some(item => item.ariaRole === 'alert' && !item.id)) {\n      warnOnce(\n        'Flashbar',\n        `You provided \\`ariaRole=\"alert\"\\` for a flashbar item without providing an \\`id\\`. Focus will not be moved to the newly added flash message.`\n      );\n    }\n  }\n\n  // Track new or removed item IDs in state to only trigger focus changes for newly added items.\n  // https://reactjs.org/docs/hooks-faq.html#how-do-i-implement-getderivedstatefromprops\n  if (items) {\n    const newItems = items.filter(({ id }) => id && !previousItems.some(item => item.id === id));\n    const removedItems = previousItems.filter(({ id }) => id && !items.some(item => item.id === id));\n    if (newItems.length > 0 || removedItems.length > 0) {\n      setPreviousItems(items);\n      onItemsAdded?.(newItems);\n      onItemsRemoved?.(removedItems);\n      onItemsChanged?.({ allItemsHaveId, isReducedMotion });\n\n      const newFocusItems = newItems.filter(({ ariaRole }) => ariaRole === 'alert');\n      if (newFocusItems.length > 0) {\n        setNextFocusId(newFocusItems[0].id!);\n      }\n    }\n  }\n\n  useEffect(() => {\n    if (nextFocusId) {\n      focusFlashById(ref.current, nextFocusId);\n    }\n  }, [nextFocusId, ref]);\n\n  return {\n    allItemsHaveId,\n    baseProps,\n    breakpoint,\n    isReducedMotion,\n    isVisualRefresh,\n    mergedRef,\n    ref,\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport customCssProps from '../internal/generated/custom-css-properties';\nimport { Flash, focusFlashById } from './flash';\nimport { FlashbarProps } from './interfaces';\nimport InternalIcon from '../icon/internal';\nimport { TransitionGroup } from 'react-transition-group';\nimport { Transition } from '../internal/components/transition';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\n\nimport styles from './styles.css.js';\nimport { counterTypes, getFlashTypeCount, getVisibleCollapsedItems, StackableItem } from './utils';\nimport { animate, getDOMRects } from '../internal/animate';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { IconProps } from '../icon/interfaces';\nimport { sendToggleMetric } from './internal/analytics';\nimport { useFlashbar } from './common';\nimport { throttle } from '../internal/utils/throttle';\nimport { scrollElementIntoView } from '../internal/utils/scrollable-containers';\nimport { findUpUntil } from '../internal/utils/dom';\nimport { useInternalI18n } from '../internal/i18n/context';\n\nexport { FlashbarProps };\n\n// If the number of items is equal or less than this value,\n// the toggle element will not be displayed and the Flashbar will look like a regular single-item Flashbar.\nconst maxNonCollapsibleItems = 1;\n\nconst resizeListenerThrottleDelay = 100;\n\nexport default function CollapsibleFlashbar({ items, ...restProps }: FlashbarProps) {\n  const [enteringItems, setEnteringItems] = useState<ReadonlyArray<FlashbarProps.MessageDefinition>>([]);\n  const [exitingItems, setExitingItems] = useState<ReadonlyArray<FlashbarProps.MessageDefinition>>([]);\n  const [isFlashbarStackExpanded, setIsFlashbarStackExpanded] = useState(false);\n\n  const getElementsToAnimate = useCallback(() => {\n    const flashElements = isFlashbarStackExpanded ? expandedItemRefs.current : collapsedItemRefs.current;\n    return { ...flashElements, notificationBar: notificationBarRef.current };\n  }, [isFlashbarStackExpanded]);\n\n  const prepareAnimations = useCallback(() => {\n    const rects = getDOMRects(getElementsToAnimate());\n    setInitialAnimationState(rects);\n  }, [getElementsToAnimate]);\n\n  const { baseProps, breakpoint, isReducedMotion, isVisualRefresh, mergedRef, ref } = useFlashbar({\n    items,\n    ...restProps,\n    onItemsAdded: newItems => {\n      setEnteringItems([...enteringItems, ...newItems]);\n    },\n    onItemsChanged: options => {\n      // If not all items have ID, we can still animate collapse/expand transitions\n      // because we can rely on each item's index in the original array,\n      // but we can't do that when elements are added or removed, since the index changes.\n      if (options?.allItemsHaveId && !options?.isReducedMotion) {\n        prepareAnimations();\n      }\n    },\n    onItemsRemoved: removedItems => {\n      setExitingItems([...exitingItems, ...removedItems]);\n    },\n  });\n\n  const collapsedItemRefs = useRef<Record<string | number, HTMLElement | null>>({});\n  const expandedItemRefs = useRef<Record<string | number, HTMLElement | null>>({});\n  const [initialAnimationState, setInitialAnimationState] = useState<Record<string | number, DOMRect> | null>(null);\n  const listElementRef = useRef<HTMLUListElement | null>(null);\n  const notificationBarRef = useRef<HTMLDivElement | null>(null);\n  const [transitioning, setTransitioning] = useState(false);\n  const flashbarElementId = useUniqueId('flashbar');\n  const itemCountElementId = useUniqueId('item-count');\n\n  if (items.length <= maxNonCollapsibleItems && isFlashbarStackExpanded) {\n    setIsFlashbarStackExpanded(false);\n  }\n\n  const animateFlash = !isReducedMotion;\n\n  function toggleCollapseExpand() {\n    sendToggleMetric(items.length, !isFlashbarStackExpanded);\n    if (!isReducedMotion) {\n      prepareAnimations();\n    }\n    setIsFlashbarStackExpanded(prev => !prev);\n  }\n\n  useLayoutEffect(() => {\n    if (isFlashbarStackExpanded && items?.length) {\n      const mostRecentItem = items[0];\n      if (mostRecentItem.id !== undefined) {\n        focusFlashById(ref.current, mostRecentItem.id);\n      }\n    }\n    // Run this after expanding, but not every time the items change.\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isFlashbarStackExpanded]);\n\n  const updateBottomSpacing = useMemo(\n    () =>\n      throttle(() => {\n        // Allow vertical space between Flashbar and page bottom only when the Flashbar is reaching the end of the page,\n        // otherwise avoid spacing with eventual sticky elements below.\n        const listElement = listElementRef?.current;\n        const flashbar = listElement?.parentElement;\n        if (listElement && flashbar) {\n          // Make sure the bottom padding is present when we make the calculations,\n          // then we might decide to remove it or not.\n          flashbar.classList.remove(styles.floating);\n          const windowHeight = window.innerHeight;\n          // Take the parent region into account if using the App Layout, because it might have additional margins.\n          // Otherwise we use the Flashbar component for this calculation.\n          const outerElement = findUpUntil(flashbar, element => element.getAttribute('role') === 'region') || flashbar;\n          const applySpacing =\n            isFlashbarStackExpanded && Math.ceil(outerElement.getBoundingClientRect().bottom) >= windowHeight;\n          if (!applySpacing) {\n            flashbar.classList.add(styles.floating);\n          }\n        }\n      }, resizeListenerThrottleDelay),\n    [isFlashbarStackExpanded]\n  );\n\n  useLayoutEffect(() => {\n    window.addEventListener('resize', updateBottomSpacing);\n    return () => {\n      window.removeEventListener('resize', updateBottomSpacing);\n      updateBottomSpacing.cancel();\n    };\n  }, [updateBottomSpacing]);\n\n  const { i18nStrings } = restProps;\n\n  const i18n = useInternalI18n('flashbar');\n  const ariaLabel = i18n('i18nStrings.ariaLabel', i18nStrings?.ariaLabel);\n  const notificationBarText = i18n('i18nStrings.notificationBarText', i18nStrings?.notificationBarText);\n  const notificationBarAriaLabel = i18n('i18nStrings.notificationBarAriaLabel', i18nStrings?.notificationBarAriaLabel);\n  const iconAriaLabels = {\n    errorIconAriaLabel: i18n('i18nStrings.errorIconAriaLabel', i18nStrings?.errorIconAriaLabel),\n    inProgressIconAriaLabel: i18n('i18nStrings.inProgressIconAriaLabel', i18nStrings?.inProgressIconAriaLabel),\n    infoIconAriaLabel: i18n('i18nStrings.infoIconAriaLabel', i18nStrings?.infoIconAriaLabel),\n    successIconAriaLabel: i18n('i18nStrings.successIconAriaLabel', i18nStrings?.successIconAriaLabel),\n    warningIconAriaLabel: i18n('i18nStrings.warningIconAriaLabel', i18nStrings?.warningIconAriaLabel),\n  };\n\n  useLayoutEffect(() => {\n    // When `useLayoutEffect` is called, the DOM is updated but has not been painted yet,\n    // so it's a good moment to trigger animations that will make calculations based on old and new DOM state.\n    // The old state is kept in `initialAnimationState`\n    // and the new state can be retrieved from the current DOM elements.\n\n    if (initialAnimationState) {\n      updateBottomSpacing();\n\n      animate({\n        elements: getElementsToAnimate(),\n        oldState: initialAnimationState,\n        newElementInitialState: ({ top }) => ({ scale: 0.9, y: -0.2 * top }),\n        onTransitionsEnd: () => setTransitioning(false),\n      });\n\n      // When collapsing, scroll up if necessary to avoid losing track of the focused button\n      if (!isFlashbarStackExpanded && notificationBarRef.current) {\n        scrollElementIntoView(notificationBarRef.current);\n      }\n\n      setTransitioning(true);\n      setInitialAnimationState(null);\n    }\n  }, [updateBottomSpacing, getElementsToAnimate, initialAnimationState, isFlashbarStackExpanded]);\n\n  const isCollapsible = items.length > maxNonCollapsibleItems;\n\n  const countByType = getFlashTypeCount(items);\n\n  const stackDepth = Math.min(3, items.length);\n\n  const itemsToShow = isFlashbarStackExpanded\n    ? items.map((item, index) => ({ ...item, expandedIndex: index }))\n    : getVisibleCollapsedItems(items, stackDepth).map((item: StackableItem, index: number) => ({\n        ...item,\n        collapsedIndex: index,\n      }));\n\n  const getItemId = (item: StackableItem | FlashbarProps.MessageDefinition) =>\n    item.id ?? (item as StackableItem).expandedIndex ?? 0;\n\n  // This check allows us to use the standard \"enter\" Transition only when the notification was not existing before.\n  // If instead it was moved to the top of the stack but was already present in the array\n  // (e.g, after dismissing another notification),\n  // we need to use different, more custom and more controlled animations.\n  const hasEntered = (item: StackableItem | FlashbarProps.MessageDefinition) =>\n    enteringItems.some(_item => _item.id && _item.id === item.id);\n  const hasLeft = (item: StackableItem | FlashbarProps.MessageDefinition) => !('expandedIndex' in item);\n  const hasEnteredOrLeft = (item: StackableItem | FlashbarProps.MessageDefinition) => hasEntered(item) || hasLeft(item);\n\n  const showInnerContent = (item: StackableItem | FlashbarProps.MessageDefinition) =>\n    isFlashbarStackExpanded || hasLeft(item) || ('expandedIndex' in item && item.expandedIndex === 0);\n\n  const shouldUseStandardAnimation = (item: StackableItem, index: number) => index === 0 && hasEnteredOrLeft(item);\n\n  const getAnimationElementId = (item: StackableItem) => `flash-${getItemId(item)}`;\n\n  const renderList = () => (\n    <ul\n      ref={listElementRef}\n      className={clsx(\n        styles['flash-list'],\n        isFlashbarStackExpanded ? styles.expanded : styles.collapsed,\n        transitioning && styles['animation-running'],\n        initialAnimationState && styles['animation-ready'],\n        isVisualRefresh && styles['visual-refresh']\n      )}\n      id={flashbarElementId}\n      aria-label={ariaLabel}\n      aria-describedby={isCollapsible ? itemCountElementId : undefined}\n      style={\n        !isFlashbarStackExpanded || transitioning\n          ? {\n              [customCssProps.flashbarStackDepth]: stackDepth,\n            }\n          : undefined\n      }\n    >\n      <TransitionGroup component={null}>\n        {itemsToShow.map((item: StackableItem, index: number) => (\n          <Transition\n            key={getItemId(item)}\n            in={!hasLeft(item)}\n            onStatusChange={status => {\n              if (status === 'entered') {\n                setEnteringItems([]);\n              } else if (status === 'exited') {\n                setExitingItems([]);\n              }\n            }}\n          >\n            {(state: string, transitionRootElement: React.Ref<HTMLDivElement> | undefined) => (\n              <li\n                aria-hidden={!showInnerContent(item)}\n                className={\n                  showInnerContent(item)\n                    ? clsx(\n                        styles['flash-list-item'],\n                        !isFlashbarStackExpanded && styles.item,\n                        !collapsedItemRefs.current[getAnimationElementId(item)] && styles['expanded-only']\n                      )\n                    : clsx(styles.flash, styles[`flash-type-${item.type ?? 'info'}`], styles.item)\n                }\n                ref={element => {\n                  if (isFlashbarStackExpanded) {\n                    expandedItemRefs.current[getAnimationElementId(item)] = element;\n                  } else {\n                    collapsedItemRefs.current[getAnimationElementId(item)] = element;\n                  }\n                }}\n                style={\n                  !isFlashbarStackExpanded || transitioning\n                    ? {\n                        [customCssProps.flashbarStackIndex]:\n                          (item as StackableItem).collapsedIndex ?? (item as StackableItem).expandedIndex ?? index,\n                      }\n                    : undefined\n                }\n                key={getItemId(item)}\n              >\n                {showInnerContent(item) && (\n                  <Flash\n                    // eslint-disable-next-line react/forbid-component-props\n                    className={clsx(\n                      animateFlash && styles['flash-with-motion'],\n                      isVisualRefresh && styles['flash-refresh']\n                    )}\n                    key={getItemId(item)}\n                    ref={shouldUseStandardAnimation(item, index) ? transitionRootElement : undefined}\n                    transitionState={shouldUseStandardAnimation(item, index) ? state : undefined}\n                    {...item}\n                  />\n                )}\n              </li>\n            )}\n          </Transition>\n        ))}\n      </TransitionGroup>\n    </ul>\n  );\n\n  return (\n    <div\n      {...baseProps}\n      className={clsx(\n        baseProps.className,\n        styles.flashbar,\n        styles[`breakpoint-${breakpoint}`],\n        styles.stack,\n        isCollapsible && styles.collapsible,\n        items.length === 2 && styles['short-list'],\n        isFlashbarStackExpanded && styles.expanded,\n        isVisualRefresh && styles['visual-refresh'],\n        getVisualContextClassname('flashbar')\n      )}\n      ref={mergedRef}\n    >\n      <>\n        {isFlashbarStackExpanded && renderList()}\n        {isCollapsible && (\n          <div\n            className={clsx(\n              styles['notification-bar'],\n              isVisualRefresh && styles['visual-refresh'],\n              isFlashbarStackExpanded ? styles.expanded : styles.collapsed,\n              transitioning && styles['animation-running'],\n              items.length === 2 && styles['short-list']\n            )}\n            onClick={toggleCollapseExpand}\n            ref={notificationBarRef}\n          >\n            <span aria-live=\"polite\" className={styles.status} role=\"status\" id={itemCountElementId}>\n              {notificationBarText && <h2 className={styles.header}>{notificationBarText}</h2>}\n              <span className={styles['item-count']}>\n                {counterTypes.map(({ type, labelName, iconName }) => (\n                  <NotificationTypeCount\n                    key={type}\n                    iconName={iconName}\n                    label={iconAriaLabels[labelName]}\n                    count={countByType[type]}\n                  />\n                ))}\n              </span>\n            </span>\n            <button\n              aria-controls={flashbarElementId}\n              aria-describedby={itemCountElementId}\n              aria-expanded={isFlashbarStackExpanded}\n              aria-label={notificationBarAriaLabel}\n              className={clsx(styles.button, isFlashbarStackExpanded && styles.expanded)}\n            >\n              <InternalIcon className={styles.icon} size=\"normal\" name=\"angle-down\" />\n            </button>\n          </div>\n        )}\n        {!isFlashbarStackExpanded && renderList()}\n      </>\n    </div>\n  );\n}\n\nconst NotificationTypeCount = ({\n  iconName,\n  label,\n  count,\n}: {\n  iconName: IconProps.Name;\n  label?: string;\n  count: number;\n}) => {\n  return (\n    <span className={styles['type-count']}>\n      <span aria-label={label} role=\"img\">\n        <span title={label} aria-hidden=\"true\">\n          <InternalIcon name={iconName} />\n        </span>\n      </span>\n      <span className={styles['count-number']}>{count}</span>\n    </span>\n  );\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function getDOMRects(elements: Record<string | number, HTMLElement | null>) {\n  const rects: Record<string, DOMRect> = {};\n  for (const id in elements) {\n    const element = elements[id];\n    if (element) {\n      rects[id] = element.getBoundingClientRect();\n    }\n  }\n  return rects;\n}\n\n/*\n  Animate DOM elements based on the FLIP technique\n  - https://aerotwist.com/blog/flip-your-animations/\n  - https://css-tricks.com/animating-layouts-with-the-flip-technique/\n\n  This can be useful when the initial dimensions or position of the element is not known,\n  so the initial offset or scaling needs to be retrieved via JS.\n\n  Caveat: this currently does not support elements having CSS transforms in the end state.\n  These would be overridden in the animation instead of combined.\n */\nexport function animate({\n  oldState,\n  elements,\n  onTransitionsEnd,\n  newElementInitialState,\n}: {\n  elements: Record<string | number, HTMLElement | null>;\n  oldState: Record<string | number, DOMRect>;\n  onTransitionsEnd?: () => void;\n  newElementInitialState?: (newRect: DOMRect) => { scale?: number; y?: number };\n}) {\n  // First, apply the transform that will make the elements \"look like\" in the start position\n  for (const id in elements) {\n    const element = elements[id];\n    const oldRect = oldState[id];\n    if (element) {\n      const newRect = element.getBoundingClientRect();\n      const noOpTransform = { scale: 1, x: 0, y: 0 };\n      // Calculate initial position.\n      // If the element didn't exist previously, use the newElementInitialState function if provided.\n      // If not, default to no transitions (scale: 1, y: 0)\n      const calculatedInverseTransform = oldRect\n        ? {\n            scale: oldRect.width / newRect.width,\n            x: (oldRect.left + oldRect.right) / 2 - (newRect.left + newRect.right) / 2,\n            y: (oldRect.top + oldRect.bottom) / 2 - (newRect.top + newRect.bottom) / 2,\n          }\n        : newElementInitialState\n        ? newElementInitialState(newRect)\n        : {};\n      const inverseTransform = { ...noOpTransform, ...calculatedInverseTransform };\n      // Apply this initial change, without animating\n      element.style.transitionProperty = 'none';\n      element.style.transform = `scale(${inverseTransform.scale}) translate(${inverseTransform.x}px, ${inverseTransform.y}px)`;\n      if (!oldRect) {\n        // If the element didn't exist, then fade it in\n        // (besides any other possibly defined transitions based on `newElementInitialState`)\n        element.style.opacity = '0';\n      }\n    }\n  }\n\n  // Animate from the initial state to the end state\n  requestAnimationFrame(() => {\n    const ongoingAnimations = new Set();\n    for (const id in elements) {\n      const element = elements[id];\n      if (element) {\n        const oldRect = oldState[id];\n        if (oldRect) {\n          // Animate from here on\n          element.style.transitionProperty = `transform`;\n          // Unset inline CSS transforms so that the final state is applied\n          element.style.transform = '';\n        } else {\n          // If the element didn't exist previously, fade in as well\n          element.style.transitionProperty = `transform, opacity`;\n          element.style.transform = '';\n          element.style.opacity = '';\n        }\n        const onTransitionStart = (event: TransitionEvent) => {\n          if (event.target === element) {\n            ongoingAnimations.add(id);\n            element.removeEventListener('transitionstart', onTransitionStart);\n          }\n        };\n        const onTransitionEnd = (event: TransitionEvent) => {\n          if (event.target === element) {\n            // Clean up remaining inline styles\n            element.style.transitionProperty = '';\n            element.removeEventListener('transitionstart', onTransitionEnd);\n            if (onTransitionsEnd) {\n              ongoingAnimations.delete(id);\n              if (ongoingAnimations.size === 0) {\n                onTransitionsEnd();\n              }\n            }\n          }\n        };\n        element.addEventListener('transitionstart', onTransitionStart);\n        element.addEventListener('transitionend', onTransitionEnd);\n      }\n    }\n  });\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This is a delay that delays the `entering` transition state\n * for the flashbar to be executed, this is useful for:\n * - If a flashbar is exiting and another is entering at the same time we'd want to delay the entering to\n * prevent the jumping in the layout\n * The current animation time for the exiting can be found in motion.scss which is equivilant to 115ms,\n * if in the future this value is changed for the exiting animation we'll have to change this as well to match it\n */\nexport const TIMEOUT_FOR_ENTERING_ANIMATION = 115;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { Flash } from './flash';\nimport { FlashbarProps } from './interfaces';\nimport { TIMEOUT_FOR_ENTERING_ANIMATION } from './constant';\nimport { TransitionGroup } from 'react-transition-group';\nimport { Transition } from '../internal/components/transition';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\n\nimport styles from './styles.css.js';\nimport { useFlashbar } from './common';\nimport { useInternalI18n } from '../internal/i18n/context';\n\nexport { FlashbarProps };\n\nexport default function NonCollapsibleFlashbar({ items, i18nStrings, ...restProps }: FlashbarProps) {\n  const { allItemsHaveId, baseProps, breakpoint, isReducedMotion, isVisualRefresh, mergedRef } = useFlashbar({\n    items,\n    ...restProps,\n  });\n\n  const i18n = useInternalI18n('flashbar');\n  const ariaLabel = i18n('i18nStrings.ariaLabel', i18nStrings?.ariaLabel);\n\n  /**\n   * All the flash items should have ids so we can identify which DOM element is being\n   * removed from the DOM to animate it. Motion will be disabled if any of the provided\n   * flash messages does not contain an `id`.\n   */\n  const motionDisabled = isReducedMotion || !isVisualRefresh || !allItemsHaveId;\n\n  const animateFlash = !isReducedMotion && isVisualRefresh;\n\n  /**\n   * If the flashbar is flat and motion is `enabled` then the adding and removing of items\n   * from the flashbar will render with visual transitions.\n   */\n  function renderFlatItemsWithTransitions() {\n    if (motionDisabled || !items) {\n      return;\n    }\n\n    return (\n      // This is a proxy for <ul>, so we're not applying a class to another actual component.\n      // eslint-disable-next-line react/forbid-component-props\n      <TransitionGroup component=\"ul\" className={styles['flash-list']} aria-label={ariaLabel}>\n        {items.map((item, index) => (\n          <Transition\n            transitionChangeDelay={{ entering: TIMEOUT_FOR_ENTERING_ANIMATION }}\n            key={item.id ?? index}\n            in={true}\n          >\n            {(state: string, transitionRootElement: React.Ref<HTMLDivElement> | undefined) => (\n              <li className={styles['flash-list-item']}>\n                {renderItem(item, item.id ?? index, transitionRootElement, state)}\n              </li>\n            )}\n          </Transition>\n        ))}\n      </TransitionGroup>\n    );\n  }\n\n  /**\n   * If the flashbar is flat and motion is `disabled` then the adding and removing of items\n   * from the flashbar will render without visual transitions.\n   */\n  function renderFlatItemsWithoutTransitions() {\n    if (!motionDisabled || !items) {\n      return;\n    }\n\n    return (\n      <ul className={styles['flash-list']} aria-label={ariaLabel}>\n        {items.map((item, index) => (\n          <li key={item.id ?? index} className={styles['flash-list-item']}>\n            {renderItem(item, item.id ?? index)}\n          </li>\n        ))}\n      </ul>\n    );\n  }\n\n  /**\n   * This is a shared render function for a single flashbar item to be used\n   * by the stacking, motion, and non-motion item group render functions.\n   */\n  function renderItem(\n    item: FlashbarProps.MessageDefinition,\n    key: string | number,\n    transitionRootElement?: React.Ref<HTMLDivElement> | undefined,\n    transitionState?: string | undefined\n  ) {\n    return (\n      <Flash\n        // eslint-disable-next-line react/forbid-component-props\n        className={clsx(\n          getVisualContextClassname('flashbar'),\n          animateFlash && styles['flash-with-motion'],\n          isVisualRefresh && styles['flash-refresh']\n        )}\n        key={key}\n        ref={transitionRootElement}\n        transitionState={transitionState}\n        {...item}\n      />\n    );\n  }\n\n  return (\n    <div\n      {...baseProps}\n      className={clsx(baseProps.className, styles.flashbar, styles[`breakpoint-${breakpoint}`])}\n      ref={mergedRef}\n    >\n      {renderFlatItemsWithTransitions()}\n      {renderFlatItemsWithoutTransitions()}\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect } from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { FlashbarProps } from './interfaces';\nimport CollapsibleFlashbar from './collapsible-flashbar';\nimport NonCollapsibleFlashbar from './non-collapsible-flashbar';\n\nimport { sendRenderMetric } from './internal/analytics';\n\nexport { FlashbarProps };\n\nexport default function Flashbar(props: FlashbarProps) {\n  useEffect(() => {\n    if (props.items.length > 0) {\n      sendRenderMetric(props.items);\n    }\n  }, [props.items]);\n\n  if (props.stackItems) {\n    return <CollapsibleFlashbar {...props} />;\n  } else {\n    return <NonCollapsibleFlashbar {...props} />;\n  }\n}\n\napplyDisplayName(Flashbar, 'Flashbar');\n","\n    import './styles.scoped.css';\n    export default {\n  \"alert\": \"awsui_alert_mx3cw_la5gq_93\",\n  \"awsui-motion-fade-in\": \"awsui_awsui-motion-fade-in_mx3cw_la5gq_1\",\n  \"root\": \"awsui_root_mx3cw_la5gq_119\",\n  \"hidden\": \"awsui_hidden_mx3cw_la5gq_135\",\n  \"body\": \"awsui_body_mx3cw_la5gq_160\",\n  \"header\": \"awsui_header_mx3cw_la5gq_166\",\n  \"action\": \"awsui_action_mx3cw_la5gq_170\",\n  \"action-button\": \"awsui_action-button_mx3cw_la5gq_175\",\n  \"text\": \"awsui_text_mx3cw_la5gq_179\",\n  \"icon\": \"awsui_icon_mx3cw_la5gq_183\",\n  \"message\": \"awsui_message_mx3cw_la5gq_186\",\n  \"breakpoint-default\": \"awsui_breakpoint-default_mx3cw_la5gq_194\",\n  \"content\": \"awsui_content_mx3cw_la5gq_208\",\n  \"dismiss\": \"awsui_dismiss_mx3cw_la5gq_212\",\n  \"dismiss-button\": \"awsui_dismiss-button_mx3cw_la5gq_218\",\n  \"type-error\": \"awsui_type-error_mx3cw_la5gq_226\",\n  \"type-warning\": \"awsui_type-warning_mx3cw_la5gq_234\",\n  \"type-success\": \"awsui_type-success_mx3cw_la5gq_242\",\n  \"type-info\": \"awsui_type-info_mx3cw_la5gq_250\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { InternalButton } from '../button/internal';\nimport { IconProps } from '../icon/interfaces';\nimport InternalIcon from '../icon/internal';\nimport { getBaseProps } from '../internal/base-component';\nimport VisualContext from '../internal/components/visual-context';\nimport styles from './styles.css.js';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { AlertProps } from './interfaces';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { SomeRequired } from '../internal/types';\nimport { useInternalI18n } from '../internal/i18n/context';\nimport { DATA_ATTR_ANALYTICS_ALERT } from '../internal/analytics/selectors';\n\nconst typeToIcon: Record<AlertProps.Type, IconProps['name']> = {\n  error: 'status-negative',\n  warning: 'status-warning',\n  success: 'status-positive',\n  info: 'status-info',\n};\n\ntype InternalAlertProps = SomeRequired<AlertProps, 'type'> & InternalBaseComponentProps;\n\nexport default function InternalAlert({\n  type,\n  statusIconAriaLabel,\n  visible = true,\n  dismissible,\n  dismissAriaLabel,\n  children,\n  header,\n  buttonText,\n  action,\n  onDismiss,\n  onButtonClick,\n  __internalRootRef = null,\n  ...rest\n}: InternalAlertProps) {\n  const baseProps = getBaseProps(rest);\n  const i18n = useInternalI18n('alert');\n\n  const [breakpoint, breakpointRef] = useContainerBreakpoints(['xs']);\n  const mergedRef = useMergeRefs(breakpointRef, __internalRootRef);\n\n  const isRefresh = useVisualRefresh();\n  const size = isRefresh ? 'normal' : header && children ? 'big' : 'normal';\n\n  const actionButton = action || (\n    <InternalButton\n      className={styles['action-button']}\n      onClick={() => fireNonCancelableEvent(onButtonClick)}\n      formAction=\"none\"\n    >\n      {buttonText}\n    </InternalButton>\n  );\n\n  const hasAction = Boolean(action || buttonText);\n  const analyticsAttributes = {\n    [DATA_ATTR_ANALYTICS_ALERT]: type,\n  };\n\n  return (\n    <div\n      {...baseProps}\n      {...analyticsAttributes}\n      aria-hidden={!visible}\n      className={clsx(\n        styles.root,\n        { [styles.hidden]: !visible },\n        baseProps.className,\n        styles[`breakpoint-${breakpoint}`]\n      )}\n      ref={mergedRef}\n    >\n      <VisualContext contextName=\"alert\">\n        <div className={clsx(styles.alert, styles[`type-${type}`])}>\n          <div className={clsx(styles.icon, styles.text)} role=\"img\" aria-label={statusIconAriaLabel}>\n            <InternalIcon name={typeToIcon[type]} size={size} />\n          </div>\n          <div className={styles.body}>\n            <div className={clsx(styles.message, styles.text)}>\n              {header && <div className={styles.header}>{header}</div>}\n              <div className={styles.content}>{children}</div>\n            </div>\n            {hasAction && <div className={styles.action}>{actionButton}</div>}\n          </div>\n          {dismissible && (\n            <div className={styles.dismiss}>\n              <InternalButton\n                className={styles['dismiss-button']}\n                variant=\"icon\"\n                iconName=\"close\"\n                formAction=\"none\"\n                ariaLabel={i18n('dismissAriaLabel', dismissAriaLabel)}\n                onClick={() => fireNonCancelableEvent(onDismiss)}\n              />\n            </div>\n          )}\n        </div>\n      </VisualContext>\n    </div>\n  );\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"layout\": \"awsui_layout_5gtk3_eplkk_99\",\n  \"is-visual-refresh\": \"awsui_is-visual-refresh_5gtk3_eplkk_99\",\n  \"background\": \"awsui_background_5gtk3_eplkk_102\",\n  \"header\": \"awsui_header_5gtk3_eplkk_105\",\n  \"is-overlap-disabled\": \"awsui_is-overlap-disabled_5gtk3_eplkk_121\",\n  \"content\": \"awsui_content_5gtk3_eplkk_129\",\n  \"has-header\": \"awsui_has-header_5gtk3_eplkk_133\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef } from 'react';\nimport clsx from 'clsx';\nimport { ContentLayoutProps } from './interfaces';\nimport { getBaseProps } from '../internal/base-component';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useDynamicOverlap } from '../internal/hooks/use-dynamic-overlap';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport styles from './styles.css.js';\n\ntype InternalContentLayoutProps = ContentLayoutProps & InternalBaseComponentProps;\n\nexport default function InternalContentLayout({\n  children,\n  disableOverlap,\n  header,\n  __internalRootRef,\n  ...rest\n}: InternalContentLayoutProps) {\n  const baseProps = getBaseProps(rest);\n  const rootElement = useRef<HTMLDivElement>(null);\n  const mergedRef = useMergeRefs(rootElement, __internalRootRef);\n\n  const isVisualRefresh = useVisualRefresh();\n  const overlapElement = useDynamicOverlap();\n\n  const isOverlapDisabled = !children || disableOverlap;\n\n  return (\n    <div\n      {...baseProps}\n      className={clsx(baseProps.className, styles.layout, {\n        [styles['is-overlap-disabled']]: isOverlapDisabled,\n        [styles['is-visual-refresh']]: isVisualRefresh,\n        [styles['has-header']]: !!header,\n      })}\n      ref={mergedRef}\n    >\n      <div\n        className={clsx(\n          styles.background,\n          { [styles['is-overlap-disabled']]: isOverlapDisabled },\n          'awsui-context-content-header'\n        )}\n        ref={overlapElement}\n      />\n\n      {header && <div className={clsx(styles.header, 'awsui-context-content-header')}>{header}</div>}\n\n      <div className={styles.content}>{children}</div>\n    </div>\n  );\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_1i0s3_rqa0j_93\",\n  \"header\": \"awsui_header_1i0s3_rqa0j_106\",\n  \"full-page\": \"awsui_full-page_1i0s3_rqa0j_106\",\n  \"content\": \"awsui_content_1i0s3_rqa0j_110\",\n  \"error\": \"awsui_error_1i0s3_rqa0j_114\",\n  \"footer\": \"awsui_footer_1i0s3_rqa0j_118\",\n  \"actions-section\": \"awsui_actions-section_1i0s3_rqa0j_122\",\n  \"secondary-actions\": \"awsui_secondary-actions_1i0s3_rqa0j_131\",\n  \"actions\": \"awsui_actions_1i0s3_rqa0j_122\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect } from 'react';\nimport clsx from 'clsx';\nimport { getBaseProps } from '../internal/base-component';\nimport InternalAlert from '../alert/internal';\nimport InternalBox from '../box/internal';\nimport InternalContentLayout from '../content-layout/internal';\nimport styles from './styles.css.js';\nimport { FormLayoutProps, FormProps } from './interfaces';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport LiveRegion from '../internal/components/live-region';\nimport { useInternalI18n } from '../internal/i18n/context';\n\nimport { FunnelMetrics } from '../internal/analytics';\nimport { useFunnel, useFunnelStep } from '../internal/analytics/hooks/use-funnel';\n\ntype InternalFormProps = FormProps & InternalBaseComponentProps;\n\nexport default function InternalForm({\n  children,\n  header,\n  errorText,\n  errorIconAriaLabel: errorIconAriaLabelOverride,\n  actions,\n  secondaryActions,\n  variant,\n  __internalRootRef,\n  ...props\n}: InternalFormProps) {\n  const baseProps = getBaseProps(props);\n  const i18n = useInternalI18n('form');\n  const errorIconAriaLabel = i18n('errorIconAriaLabel', errorIconAriaLabelOverride);\n  const { funnelInteractionId, funnelProps } = useFunnel();\n  const { funnelStepProps } = useFunnelStep();\n\n  useEffect(() => {\n    if (funnelInteractionId && errorText) {\n      FunnelMetrics.funnelError({ funnelInteractionId });\n    }\n  }, [funnelInteractionId, errorText]);\n\n  return (\n    <div\n      {...baseProps}\n      {...funnelProps}\n      {...funnelStepProps}\n      ref={__internalRootRef}\n      className={clsx(styles.root, baseProps.className)}\n    >\n      <FormLayout\n        header={\n          header && <div className={clsx(styles.header, variant === 'full-page' && styles['full-page'])}>{header}</div>\n        }\n        variant={variant}\n      >\n        {children && <div className={styles.content}>{children}</div>}\n        {errorText && (\n          <InternalBox margin={{ top: 'l' }}>\n            <InternalAlert type=\"error\" statusIconAriaLabel={errorIconAriaLabel}>\n              <div className={styles.error}>{errorText}</div>\n            </InternalAlert>\n          </InternalBox>\n        )}\n        {(actions || secondaryActions) && (\n          <div className={styles.footer}>\n            <div className={styles['actions-section']}>\n              {actions && <div className={styles.actions}>{actions}</div>}\n              {secondaryActions && <div className={styles['secondary-actions']}>{secondaryActions}</div>}\n            </div>\n          </div>\n        )}\n        {errorText && (\n          <LiveRegion assertive={true}>\n            {errorIconAriaLabel}, {errorText}\n          </LiveRegion>\n        )}\n      </FormLayout>\n    </div>\n  );\n}\n\nfunction FormLayout({ children, header, variant }: FormLayoutProps) {\n  return variant === 'full-page' && header ? (\n    <InternalContentLayout header={header}>{children}</InternalContentLayout>\n  ) : (\n    <>\n      {header}\n      {children}\n    </>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport {\n  FunnelStepContext,\n  FunnelSubStepContext,\n  FunnelContext,\n  FunnelContextValue,\n} from '../context/analytics-context';\nimport { useFunnel, useFunnelStep } from '../hooks/use-funnel';\nimport { useUniqueId } from '../../hooks/use-unique-id';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\n\nimport { PACKAGE_VERSION } from '../../environment';\n\nimport { FunnelMetrics } from '../';\nimport { FunnelProps, FunnelStepProps } from '../interfaces';\n\nimport { getFunnelNameSelector, getSubStepAllSelector, getSubStepNameSelector, getSubStepSelector } from '../selectors';\n\nexport const FUNNEL_VERSION = '1.0';\n\ntype AnalyticsFunnelProps = { children?: React.ReactNode } & Pick<\n  FunnelProps,\n  'funnelType' | 'optionalStepNumbers' | 'totalFunnelSteps'\n>;\n\nexport const AnalyticsFunnel = ({ children, ...props }: AnalyticsFunnelProps) => {\n  const [funnelInteractionId, setFunnelInteractionId] = useState<string>();\n  const funnelResultRef = useRef<boolean>(false);\n  const isVisualRefresh = useVisualRefresh();\n\n  // This useEffect hook is run once on component mount to initiate the funnel analytics.\n  // It first calls the 'funnelStart' method from FunnelMetrics, providing all necessary details\n  // about the funnel, and receives a unique interaction id.\n  // This unique interaction id is then stored in the state for further use.\n  //\n  // On component unmount, it checks whether the funnel was successfully completed.\n  // Based on this, it either calls 'funnelComplete' or 'funnelCancelled' method from FunnelMetrics.\n  //\n  // The eslint-disable is required as we deliberately want this effect to run only once on mount and unmount,\n  // hence we do not provide any dependencies.\n  useEffect(() => {\n    const funnelInteractionId = FunnelMetrics.funnelStart({\n      funnelNameSelector: getFunnelNameSelector(),\n      optionalStepNumbers: props.optionalStepNumbers,\n      funnelType: props.funnelType,\n      totalFunnelSteps: props.totalFunnelSteps,\n      componentVersion: PACKAGE_VERSION,\n      theme: isVisualRefresh ? 'vr' : 'classic',\n      funnelVersion: FUNNEL_VERSION,\n    });\n\n    setFunnelInteractionId(funnelInteractionId);\n\n    return () => {\n      FunnelMetrics.funnelComplete({ funnelInteractionId });\n\n      if (funnelResultRef.current === true) {\n        FunnelMetrics.funnelSuccessful({ funnelInteractionId });\n      } else {\n        FunnelMetrics.funnelCancelled({ funnelInteractionId });\n      }\n    };\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  const funnelSubmit = () => {\n    funnelResultRef.current = true;\n  };\n\n  const funnelCancel = () => {\n    funnelResultRef.current = false;\n  };\n\n  const funnelContextValue: FunnelContextValue = {\n    funnelInteractionId,\n    setFunnelInteractionId,\n    funnelType: props.funnelType,\n    optionalStepNumbers: props.optionalStepNumbers,\n    totalFunnelSteps: props.totalFunnelSteps,\n    funnelSubmit,\n    funnelCancel,\n  };\n\n  return <FunnelContext.Provider value={funnelContextValue}>{children}</FunnelContext.Provider>;\n};\n\ntype AnalyticsFunnelStepProps = { children?: React.ReactNode } & Pick<\n  FunnelStepProps,\n  'stepNumber' | 'stepNameSelector'\n>;\n\nexport const AnalyticsFunnelStep = ({ children, stepNumber, stepNameSelector }: AnalyticsFunnelStepProps) => {\n  const { funnelInteractionId } = useFunnel();\n\n  // This useEffect hook is used to track the start and completion of interaction with the step.\n  // On mount, if there is a valid funnel interaction id, it calls the 'funnelStepStart' method from FunnelMetrics\n  // to record the beginning of the interaction with the current step.\n  // On unmount, it does a similar thing but this time calling 'funnelStepComplete' to record the completion of the interaction.\n  useEffect(() => {\n    if (funnelInteractionId) {\n      FunnelMetrics.funnelStepStart({\n        funnelInteractionId,\n        stepNumber,\n        stepNameSelector,\n        subStepAllSelector: getSubStepAllSelector(),\n      });\n    }\n\n    return () => {\n      if (funnelInteractionId) {\n        FunnelMetrics.funnelStepComplete({\n          funnelInteractionId,\n          stepNumber,\n          stepNameSelector,\n          subStepAllSelector: getSubStepAllSelector(),\n        });\n      }\n    };\n  }, [funnelInteractionId, stepNumber, stepNameSelector]);\n\n  return (\n    <FunnelStepContext.Provider value={{ funnelInteractionId, stepNumber, stepNameSelector }}>\n      {children}\n    </FunnelStepContext.Provider>\n  );\n};\n\ninterface AnalyticsFunnelSubStepProps {\n  children?: React.ReactNode;\n}\n\nexport const AnalyticsFunnelSubStep = ({ children }: AnalyticsFunnelSubStepProps) => {\n  const { funnelInteractionId } = useFunnel();\n  const { stepNumber, stepNameSelector } = useFunnelStep();\n\n  const subStepId = useUniqueId('substep');\n  const subStepSelector = getSubStepSelector(subStepId);\n  const subStepNameSelector = getSubStepNameSelector(subStepId);\n\n  return (\n    <FunnelSubStepContext.Provider\n      value={{\n        funnelInteractionId,\n        stepNumber,\n        stepNameSelector,\n        subStepSelector,\n        subStepNameSelector,\n        subStepId,\n      }}\n    >\n      {children}\n    </FunnelSubStepContext.Provider>\n  );\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { FormProps } from './interfaces';\nimport InternalForm from './internal';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nimport { AnalyticsFunnel, AnalyticsFunnelStep } from '../internal/analytics/components/analytics-funnel';\nimport { getFunnelNameSelector } from '../internal/analytics/selectors';\n\nexport { FormProps };\n\nexport default function Form({ variant = 'full-page', ...props }: FormProps) {\n  const baseComponentProps = useBaseComponent('Form');\n\n  return (\n    <AnalyticsFunnel funnelType=\"single-page\" optionalStepNumbers={[]} totalFunnelSteps={1}>\n      <AnalyticsFunnelStep stepNumber={1} stepNameSelector={getFunnelNameSelector()}>\n        <InternalForm variant={variant} {...props} {...baseComponentProps} />\n      </AnalyticsFunnelStep>\n    </AnalyticsFunnel>\n  );\n}\n\napplyDisplayName(Form, 'Form');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useContext, createContext } from 'react';\n\nexport interface FormFieldControlProps {\n  /**\n   * Specifies the ID of the native form element. You can use it to relate\n   * a label element's `for` attribute to this control.\n   *\n   * It defaults to an automatically generated ID that\n   * is provided by its parent form field component.\n   */\n  controlId?: string;\n\n  /**\n   * Adds `aria-labelledby` to the component. If you're using this component within a form field,\n   * don't set this property because the form field component automatically sets it.\n   *\n   * Use this property if the component isn't surrounded by a form field, or you want to override the value\n   * automatically set by the form field (for example, if you have two components within a single form field).\n   *\n   * To use it correctly, define an ID for the element you want to use as label and set the property to that ID.\n   */\n  ariaLabelledby?: string;\n\n  /**\n   * Adds `aria-describedby` to the component. If you're using this component within a form field,\n   * don't set this property because the form field component automatically sets it.\n   *\n   * Use this property if the component isn't surrounded by a form field, or you want to override the value\n   * automatically set by the form field (for example, if you have two components within a single form field).\n   *\n   * To use it correctly, define an ID for each element that you want to use as a description\n   * and set the property to a string of each ID separated by spaces (for example, `\"id1 id2 id3\"`).\n   */\n  ariaDescribedby?: string;\n}\n\nexport interface FormFieldValidationControlProps extends FormFieldControlProps {\n  /**\n   * Overrides the invalidation state. Usually the invalid state\n   * comes from the parent `FormField`component,\n   * however sometimes you need to override its\n   * state when you have more than one input within a\n   * single form field.\n   */\n  invalid?: boolean;\n}\n\nexport const FormFieldContext = createContext<FormFieldValidationControlProps>({});\n\nfunction applyDefault<T>(fields: T, defaults: T, keys: (keyof T)[]) {\n  const result = <T>{};\n  keys.forEach(key => {\n    result[key] = fields[key] === undefined ? defaults[key] : fields[key];\n  });\n  return result;\n}\n\nexport function useFormFieldContext(props: FormFieldValidationControlProps) {\n  const context = useContext(FormFieldContext);\n  return applyDefault(props, context, ['invalid', 'controlId', 'ariaLabelledby', 'ariaDescribedby']);\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"grid\": \"awsui_grid_14yj0_1xo42_93\",\n  \"no-gutters\": \"awsui_no-gutters_14yj0_1xo42_109\",\n  \"grid-column\": \"awsui_grid-column_14yj0_1xo42_113\",\n  \"colspan-1\": \"awsui_colspan-1_14yj0_1xo42_122\",\n  \"push-1\": \"awsui_push-1_14yj0_1xo42_126\",\n  \"pull-1\": \"awsui_pull-1_14yj0_1xo42_129\",\n  \"colspan-2\": \"awsui_colspan-2_14yj0_1xo42_132\",\n  \"push-2\": \"awsui_push-2_14yj0_1xo42_136\",\n  \"pull-2\": \"awsui_pull-2_14yj0_1xo42_139\",\n  \"colspan-3\": \"awsui_colspan-3_14yj0_1xo42_142\",\n  \"push-3\": \"awsui_push-3_14yj0_1xo42_146\",\n  \"pull-3\": \"awsui_pull-3_14yj0_1xo42_149\",\n  \"colspan-4\": \"awsui_colspan-4_14yj0_1xo42_152\",\n  \"push-4\": \"awsui_push-4_14yj0_1xo42_156\",\n  \"pull-4\": \"awsui_pull-4_14yj0_1xo42_159\",\n  \"colspan-5\": \"awsui_colspan-5_14yj0_1xo42_162\",\n  \"push-5\": \"awsui_push-5_14yj0_1xo42_166\",\n  \"pull-5\": \"awsui_pull-5_14yj0_1xo42_169\",\n  \"colspan-6\": \"awsui_colspan-6_14yj0_1xo42_172\",\n  \"push-6\": \"awsui_push-6_14yj0_1xo42_176\",\n  \"pull-6\": \"awsui_pull-6_14yj0_1xo42_179\",\n  \"colspan-7\": \"awsui_colspan-7_14yj0_1xo42_182\",\n  \"push-7\": \"awsui_push-7_14yj0_1xo42_186\",\n  \"pull-7\": \"awsui_pull-7_14yj0_1xo42_189\",\n  \"colspan-8\": \"awsui_colspan-8_14yj0_1xo42_192\",\n  \"push-8\": \"awsui_push-8_14yj0_1xo42_196\",\n  \"pull-8\": \"awsui_pull-8_14yj0_1xo42_199\",\n  \"colspan-9\": \"awsui_colspan-9_14yj0_1xo42_202\",\n  \"push-9\": \"awsui_push-9_14yj0_1xo42_206\",\n  \"pull-9\": \"awsui_pull-9_14yj0_1xo42_209\",\n  \"colspan-10\": \"awsui_colspan-10_14yj0_1xo42_212\",\n  \"push-10\": \"awsui_push-10_14yj0_1xo42_216\",\n  \"pull-10\": \"awsui_pull-10_14yj0_1xo42_219\",\n  \"colspan-11\": \"awsui_colspan-11_14yj0_1xo42_222\",\n  \"push-11\": \"awsui_push-11_14yj0_1xo42_226\",\n  \"pull-11\": \"awsui_pull-11_14yj0_1xo42_229\",\n  \"colspan-12\": \"awsui_colspan-12_14yj0_1xo42_232\",\n  \"push-12\": \"awsui_push-12_14yj0_1xo42_236\",\n  \"pull-12\": \"awsui_pull-12_14yj0_1xo42_239\",\n  \"push-0\": \"awsui_push-0_14yj0_1xo42_242\",\n  \"pull-0\": \"awsui_pull-0_14yj0_1xo42_245\",\n  \"offset-1\": \"awsui_offset-1_14yj0_1xo42_248\",\n  \"offset-2\": \"awsui_offset-2_14yj0_1xo42_251\",\n  \"offset-3\": \"awsui_offset-3_14yj0_1xo42_254\",\n  \"offset-4\": \"awsui_offset-4_14yj0_1xo42_257\",\n  \"offset-5\": \"awsui_offset-5_14yj0_1xo42_260\",\n  \"offset-6\": \"awsui_offset-6_14yj0_1xo42_263\",\n  \"offset-7\": \"awsui_offset-7_14yj0_1xo42_266\",\n  \"offset-8\": \"awsui_offset-8_14yj0_1xo42_269\",\n  \"offset-9\": \"awsui_offset-9_14yj0_1xo42_272\",\n  \"offset-10\": \"awsui_offset-10_14yj0_1xo42_275\",\n  \"offset-11\": \"awsui_offset-11_14yj0_1xo42_278\",\n  \"restore-pointer-events\": \"awsui_restore-pointer-events_14yj0_1xo42_282\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx, { ClassValue } from 'clsx';\nimport flattenChildren from 'react-keyed-flatten-children';\nimport { getBaseProps } from '../internal/base-component';\nimport { Breakpoint, matchBreakpointMapping } from '../internal/breakpoints';\nimport { isDevelopment } from '../internal/is-development';\nimport * as logging from '../internal/logging';\nimport styles from './styles.css.js';\nimport { GridProps } from './interfaces';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\n\nexport interface InternalGridProps extends GridProps, InternalBaseComponentProps {\n  __breakpoint?: Breakpoint | null;\n\n  /**\n   * The handler that fires when the grid breakpoint changes.\n   */\n  __responsiveClassName?: (breakpoint: Breakpoint | null) => ClassValue;\n}\n\nconst InternalGrid = React.forwardRef(\n  (\n    {\n      __breakpoint,\n      gridDefinition = [],\n      disableGutters = false,\n      children,\n      __responsiveClassName,\n      __internalRootRef = null,\n      ...restProps\n    }: InternalGridProps,\n    ref: React.Ref<any>\n  ) => {\n    let [defaultBreakpoint, defaultRef]: [Breakpoint | null, React.Ref<any>] = useContainerBreakpoints(undefined);\n    if (__breakpoint !== undefined) {\n      defaultBreakpoint = __breakpoint;\n      defaultRef = ref;\n    }\n\n    const baseProps = getBaseProps(restProps);\n    /*\n   Flattening the children allows us to \"see through\" React Fragments and nested arrays.\n   */\n    const flattenedChildren = flattenChildren(children);\n\n    if (isDevelopment) {\n      const columnCount = gridDefinition.length;\n      const childCount = flattenedChildren.length;\n      if (columnCount !== childCount) {\n        logging.warnOnce(\n          'Grid',\n          `The number of children (${childCount}) does not match the number of columns defined (${columnCount}).`\n        );\n      }\n    }\n\n    const mergedRef = useMergeRefs(defaultRef, __internalRootRef);\n\n    return (\n      <div\n        {...baseProps}\n        className={clsx(\n          styles.grid,\n          baseProps.className,\n          { [styles['no-gutters']]: disableGutters },\n          __responsiveClassName ? __responsiveClassName(defaultBreakpoint) : null\n        )}\n        ref={mergedRef}\n      >\n        {flattenedChildren.map((child, i) => {\n          // If this react child is a primitive value, the key will be undefined\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\n          const key = (child as any).key;\n\n          return (\n            <div\n              key={key}\n              className={clsx(\n                styles['grid-column'],\n                getColumnClassNames('colspan', gridDefinition[i]?.colspan, defaultBreakpoint),\n                getColumnClassNames('offset', gridDefinition[i]?.offset, defaultBreakpoint),\n                getColumnClassNames('pull', gridDefinition[i]?.pull, defaultBreakpoint),\n                getColumnClassNames('push', gridDefinition[i]?.push, defaultBreakpoint)\n              )}\n            >\n              <div className={styles['restore-pointer-events']}>{child}</div>\n            </div>\n          );\n        })}\n      </div>\n    );\n  }\n);\n\nfunction getColumnClassNames(\n  prop: string,\n  mapping: undefined | number | GridProps.BreakpointMapping,\n  breakpoint: Breakpoint | null\n): string | null {\n  if (typeof mapping === 'number') {\n    return styles[`${prop}-${mapping}`];\n  }\n  if (breakpoint === null || mapping === undefined) {\n    return null;\n  }\n  return styles[`${prop}-${matchBreakpointMapping(mapping, breakpoint)}`];\n}\n\nexport default InternalGrid;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { GridProps } from '../grid/interfaces';\n\ninterface FormFieldIds {\n  label?: string;\n  description?: string;\n  constraint?: string;\n  error?: string;\n}\n\nfunction makeSlotId(prop: React.ReactNode, formFieldId: string, propName: string): string | undefined {\n  if (!prop) {\n    return undefined;\n  }\n\n  return `${formFieldId}-${propName}`;\n}\n\nexport function getSlotIds(\n  formFieldId: string,\n  label?: React.ReactNode,\n  description?: React.ReactNode,\n  constraintText?: React.ReactNode,\n  errorText?: React.ReactNode\n) {\n  const ids: FormFieldIds = {\n    label: makeSlotId(label, formFieldId, 'label'),\n    description: makeSlotId(description, formFieldId, 'description'),\n    constraint: makeSlotId(constraintText, formFieldId, 'constraint'),\n    error: makeSlotId(errorText, formFieldId, 'error'),\n  };\n\n  return ids;\n}\n\nexport function getAriaDescribedBy({ error, description, constraint }: FormFieldIds) {\n  const describedByAttributes = [error, description, constraint].filter(e => !!e);\n  const describedBy = describedByAttributes.length ? describedByAttributes.join(' ') : undefined;\n  return describedBy;\n}\n\nexport function getGridDefinition(stretch: boolean, secondaryControlPresent: boolean, isRefresh: boolean) {\n  let columns: Array<{ colspan: GridProps.BreakpointMapping | number }>;\n\n  if (stretch) {\n    columns = [{ colspan: 12 }, { colspan: 12 }];\n  } else if (isRefresh) {\n    columns = [{ colspan: { default: 12, xs: 8 } }, { colspan: { default: 12, xs: 4 } }];\n  } else {\n    columns = [{ colspan: { default: 12, xs: 9 } }, { colspan: { default: 12, xs: 3 } }];\n  }\n\n  if (!secondaryControlPresent) {\n    return [columns[0]];\n  }\n\n  return columns;\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"error-icon-shake-wrapper\": \"awsui_error-icon-shake-wrapper_14mhv_1km7k_97\",\n  \"awsui-motion-shake-horizontally\": \"awsui_awsui-motion-shake-horizontally_14mhv_1km7k_1\",\n  \"error-icon-scale-wrapper\": \"awsui_error-icon-scale-wrapper_14mhv_1km7k_124\",\n  \"awsui-motion-scale-popup\": \"awsui_awsui-motion-scale-popup_14mhv_1km7k_1\",\n  \"error\": \"awsui_error_14mhv_1km7k_97\",\n  \"awsui-motion-fade-in-0\": \"awsui_awsui-motion-fade-in-0_14mhv_1km7k_1\",\n  \"root\": \"awsui_root_14mhv_1km7k_168\",\n  \"label\": \"awsui_label_14mhv_1km7k_182\",\n  \"info\": \"awsui_info_14mhv_1km7k_195\",\n  \"description\": \"awsui_description_14mhv_1km7k_200\",\n  \"constraint\": \"awsui_constraint_14mhv_1km7k_201\",\n  \"hints\": \"awsui_hints_14mhv_1km7k_208\",\n  \"constraint-has-error\": \"awsui_constraint-has-error_14mhv_1km7k_209\",\n  \"secondary-control\": \"awsui_secondary-control_14mhv_1km7k_213\",\n  \"controls\": \"awsui_controls_14mhv_1km7k_217\",\n  \"label-hidden\": \"awsui_label-hidden_14mhv_1km7k_217\",\n  \"control\": \"awsui_control_14mhv_1km7k_217\",\n  \"error__message\": \"awsui_error__message_14mhv_1km7k_236\",\n  \"visually-hidden\": \"awsui_visually-hidden_14mhv_1km7k_240\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Joins strings with a whitespace, discarding empty strings. Useful to combine multiple aria-labels.\n */\nexport function joinStrings(...strings: Array<string | undefined>): string | undefined {\n  return strings.filter(Boolean).join(' ') || undefined;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect } from 'react';\nimport clsx from 'clsx';\n\nimport { getBaseProps } from '../internal/base-component';\nimport { FormFieldContext, useFormFieldContext } from '../internal/context/form-field-context';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\n\nimport InternalGrid from '../grid/internal';\nimport InternalIcon from '../icon/internal';\nimport { getAriaDescribedBy, getGridDefinition, getSlotIds } from './util';\n\nimport styles from './styles.css.js';\nimport { InternalFormFieldProps } from './interfaces';\nimport { joinStrings } from '../internal/utils/strings';\nimport { useInternalI18n } from '../internal/i18n/context';\nimport { InfoLinkLabelContext } from '../internal/context/info-link-label-context';\n\nimport { FunnelMetrics } from '../internal/analytics';\nimport { useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\nimport {\n  DATA_ATTR_FIELD_ERROR,\n  DATA_ATTR_FIELD_LABEL,\n  getFieldSlotSeletor,\n  getSubStepAllSelector,\n} from '../internal/analytics/selectors';\n\ninterface FormFieldErrorProps {\n  id?: string;\n  children?: React.ReactNode;\n  errorIconAriaLabel?: string;\n}\n\nexport function FormFieldError({ id, children, errorIconAriaLabel }: FormFieldErrorProps) {\n  const i18n = useInternalI18n('form-field');\n\n  return (\n    <div id={id} className={styles.error}>\n      <div className={styles['error-icon-shake-wrapper']}>\n        <div\n          role=\"img\"\n          aria-label={i18n('i18nStrings.errorIconAriaLabel', errorIconAriaLabel)}\n          className={styles['error-icon-scale-wrapper']}\n        >\n          <InternalIcon name=\"status-warning\" size=\"small\" />\n        </div>\n      </div>\n      <span className={styles.error__message}>{children}</span>\n    </div>\n  );\n}\n\nexport function ConstraintText({\n  id,\n  hasError,\n  children,\n}: {\n  id?: string;\n  hasError: boolean;\n  children: React.ReactNode;\n}) {\n  return (\n    <div id={id} className={clsx(styles.constraint, hasError && styles['constraint-has-error'])}>\n      {children}\n    </div>\n  );\n}\n\nexport default function InternalFormField({\n  controlId,\n  stretch = false,\n  label,\n  info,\n  i18nStrings,\n  children,\n  secondaryControl,\n  description,\n  constraintText,\n  errorText,\n  __hideLabel,\n  __internalRootRef = null,\n  __disableGutters = false,\n  ...rest\n}: InternalFormFieldProps) {\n  const baseProps = getBaseProps(rest);\n  const isRefresh = useVisualRefresh();\n\n  const instanceUniqueId = useUniqueId('formField');\n  const generatedControlId = controlId || instanceUniqueId;\n  const formFieldId = controlId || generatedControlId;\n\n  const { funnelInteractionId, stepNumber, stepNameSelector, subStepSelector, subStepNameSelector } =\n    useFunnelSubStep();\n\n  const slotIds = getSlotIds(formFieldId, label, description, constraintText, errorText);\n\n  const ariaDescribedBy = getAriaDescribedBy(slotIds);\n\n  const gridDefinition = getGridDefinition(stretch, !!secondaryControl, isRefresh);\n\n  const {\n    ariaLabelledby: parentAriaLabelledby,\n    ariaDescribedby: parentAriaDescribedby,\n    invalid: parentInvalid,\n  } = useFormFieldContext({});\n\n  const contextValuesWithoutControlId = {\n    ariaLabelledby: joinStrings(parentAriaLabelledby, slotIds.label) || undefined,\n    ariaDescribedby: joinStrings(parentAriaDescribedby, ariaDescribedBy) || undefined,\n    invalid: !!errorText || !!parentInvalid,\n  };\n\n  const analyticsAttributes = {\n    [DATA_ATTR_FIELD_LABEL]: slotIds.label ?? getFieldSlotSeletor(slotIds.label),\n    [DATA_ATTR_FIELD_ERROR]: slotIds.error ?? getFieldSlotSeletor(slotIds.error),\n  };\n\n  useEffect(() => {\n    if (funnelInteractionId && errorText) {\n      FunnelMetrics.funnelSubStepError({\n        funnelInteractionId,\n        subStepSelector,\n        subStepNameSelector,\n        stepNumber,\n        stepNameSelector,\n        fieldErrorSelector: getFieldSlotSeletor(slotIds.error),\n        fieldLabelSelector: getFieldSlotSeletor(slotIds.label),\n        subStepAllSelector: getSubStepAllSelector(),\n      });\n    }\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [funnelInteractionId, errorText]);\n\n  return (\n    <div\n      {...baseProps}\n      className={clsx(baseProps.className, styles.root)}\n      ref={__internalRootRef}\n      {...analyticsAttributes}\n    >\n      <div className={clsx(__hideLabel && styles['visually-hidden'])}>\n        {label && (\n          <label className={styles.label} id={slotIds.label} htmlFor={generatedControlId}>\n            {label}\n          </label>\n        )}\n        <InfoLinkLabelContext.Provider value={slotIds.label}>\n          {!__hideLabel && info && <span className={styles.info}>{info}</span>}\n        </InfoLinkLabelContext.Provider>\n      </div>\n\n      {description && (\n        <div className={styles.description} id={slotIds.description}>\n          {description}\n        </div>\n      )}\n\n      <div className={clsx(styles.controls, __hideLabel && styles['label-hidden'])}>\n        <InternalGrid gridDefinition={gridDefinition} disableGutters={__disableGutters}>\n          <FormFieldContext.Provider\n            value={{\n              controlId: generatedControlId,\n              ...contextValuesWithoutControlId,\n            }}\n          >\n            {children && <div className={styles.control}>{children}</div>}\n          </FormFieldContext.Provider>\n\n          {secondaryControl && (\n            <FormFieldContext.Provider value={contextValuesWithoutControlId}>\n              <div className={styles['secondary-control']}>{secondaryControl}</div>\n            </FormFieldContext.Provider>\n          )}\n        </InternalGrid>\n      </div>\n\n      {(constraintText || errorText) && (\n        <div className={styles.hints}>\n          {errorText && (\n            <FormFieldError id={slotIds.error} errorIconAriaLabel={i18nStrings?.errorIconAriaLabel}>\n              {errorText}\n            </FormFieldError>\n          )}\n          {constraintText && (\n            <ConstraintText id={slotIds.constraint} hasError={!!errorText}>\n              {constraintText}\n            </ConstraintText>\n          )}\n        </div>\n      )}\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport InternalFormField from './internal';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { FormFieldProps } from './interfaces';\n\nexport { FormFieldProps };\n\nexport default function FormField({ stretch = false, ...props }: FormFieldProps) {\n  const baseComponentProps = useBaseComponent('FormField');\n  return <InternalFormField stretch={stretch} {...props} __hideLabel={false} {...baseComponentProps} />;\n}\n\napplyDisplayName(FormField, 'FormField');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useCallback, RefObject } from 'react';\nimport { InternalInputProps } from './internal';\n\nexport const useSearchProps = (\n  type: string,\n  disabled: boolean | undefined,\n  readOnly: boolean | undefined,\n  value: string,\n  inputRef: RefObject<HTMLInputElement>,\n  onChange: (value: string) => void\n) => {\n  const searchProps: Partial<InternalInputProps> = {};\n  const handleIconClick = useCallback(() => {\n    inputRef.current?.focus();\n    onChange('');\n  }, [inputRef, onChange]);\n  if (type === 'search' || type === 'visualSearch') {\n    searchProps.__leftIcon = 'search';\n\n    if (!disabled && !readOnly && value) {\n      searchProps.__rightIcon = 'close';\n      searchProps.__onRightIconClick = handleIconClick;\n    }\n  }\n  return searchProps;\n};\n\n/**\n * Converts the boolean or string value of the `autoComplete` property to the correct `autocomplete` attribute value.\n */\nexport const convertAutoComplete = (propertyValue: boolean | string = false): string => {\n  if (propertyValue === true) {\n    return 'on';\n  }\n  return propertyValue || 'off';\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// default delay for components defined by UX\nexport const DEBOUNCE_DEFAULT_DELAY = 200;\n\n// instead of using this function directly, consider using useDebounceCallback hook\nexport default function debounce<CallbackType extends (...args: any[]) => void>(\n  func: CallbackType,\n  delay: number = DEBOUNCE_DEFAULT_DELAY\n): CallbackType {\n  let timeout: ReturnType<typeof setTimeout> | null;\n\n  return function (...args: any[]) {\n    if (timeout) {\n      clearTimeout(timeout);\n    }\n    timeout = setTimeout(() => {\n      timeout = null;\n      func(...args);\n    }, delay);\n  } as CallbackType;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useCallback, useRef } from 'react';\nimport debounce from '../../debounce';\n\nexport function useDebounceCallback<T extends (...args: any[]) => void>(callback: T, delay?: number): T {\n  const callbackRef = useRef<T>();\n  callbackRef.current = callback;\n\n  // ESLint rule requires an inline function which we cannot provide here\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  return useCallback(\n    debounce(\n      ((...args) => {\n        if (callbackRef.current) {\n          callbackRef.current(...args);\n        }\n      }) as T,\n      delay\n    ),\n    []\n  );\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_2rhyz_15wsh_93\",\n  \"input\": \"awsui_input_2rhyz_15wsh_97\",\n  \"input-readonly\": \"awsui_input-readonly_2rhyz_15wsh_120\",\n  \"input-invalid\": \"awsui_input-invalid_2rhyz_15wsh_181\",\n  \"input-has-icon-left\": \"awsui_input-has-icon-left_2rhyz_15wsh_192\",\n  \"input-type-search\": \"awsui_input-type-search_2rhyz_15wsh_197\",\n  \"input-has-icon-right\": \"awsui_input-has-icon-right_2rhyz_15wsh_213\",\n  \"input-has-no-border-radius\": \"awsui_input-has-no-border-radius_2rhyz_15wsh_216\",\n  \"input-container\": \"awsui_input-container_2rhyz_15wsh_220\",\n  \"input-icon-left\": \"awsui_input-icon-left_2rhyz_15wsh_225\",\n  \"input-icon-right\": \"awsui_input-icon-right_2rhyz_15wsh_232\",\n  \"input-button-right\": \"awsui_input-button-right_2rhyz_15wsh_238\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { Ref, useRef } from 'react';\nimport clsx from 'clsx';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { IconProps } from '../icon/interfaces';\nimport InternalIcon from '../icon/internal';\nimport InternalButton from '../button/internal';\nimport { fireNonCancelableEvent, fireKeyboardEvent, NonCancelableEventHandler } from '../internal/events';\nimport { InputProps, BaseInputProps, InputAutoCorrect, BaseChangeDetail } from './interfaces';\nimport { BaseComponentProps, getBaseProps } from '../internal/base-component';\nimport { useSearchProps, convertAutoComplete } from './utils';\nimport { useDebounceCallback } from '../internal/hooks/use-debounce-callback';\nimport { FormFieldValidationControlProps, useFormFieldContext } from '../internal/context/form-field-context';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport styles from './styles.css.js';\nimport { useInternalI18n } from '../internal/i18n/context';\n\nexport interface InternalInputProps\n  extends BaseComponentProps,\n    BaseInputProps,\n    Omit<InputProps, 'type'>,\n    InputAutoCorrect,\n    FormFieldValidationControlProps,\n    InternalBaseComponentProps {\n  type?: InputProps['type'] | 'visualSearch';\n  __leftIcon?: IconProps['name'];\n  __leftIconVariant?: IconProps['variant'];\n  __onLeftIconClick?: () => void;\n\n  __rightIcon?: IconProps['name'];\n  __onRightIconClick?: () => void;\n\n  __nativeAttributes?: Record<string, any>;\n  __noBorderRadius?: boolean;\n\n  __onDelayedInput?: NonCancelableEventHandler<BaseChangeDetail>;\n  __onBlurWithDetail?: NonCancelableEventHandler<{ relatedTarget: Node | null }>;\n\n  __inheritFormFieldProps?: boolean;\n}\n\nfunction InternalInput(\n  {\n    type = 'text',\n    step,\n    inputMode,\n    autoComplete = true,\n    ariaLabel,\n    clearAriaLabel: clearAriaLabelOverride,\n    name,\n    value,\n    placeholder,\n    autoFocus,\n    disabled,\n    readOnly,\n    disableBrowserAutocorrect,\n    spellcheck,\n    __noBorderRadius,\n\n    __leftIcon,\n    __leftIconVariant = 'subtle',\n    __onLeftIconClick,\n\n    ariaRequired,\n\n    __rightIcon,\n    __onRightIconClick,\n\n    onKeyDown,\n    onKeyUp,\n    onChange,\n    __onDelayedInput,\n    __onBlurWithDetail,\n    onBlur,\n    onFocus,\n    __nativeAttributes,\n    __internalRootRef,\n    __inheritFormFieldProps,\n    ...rest\n  }: InternalInputProps,\n  ref: Ref<HTMLInputElement>\n) {\n  const baseProps = getBaseProps(rest);\n  const i18n = useInternalI18n('input');\n  const fireDelayedInput = useDebounceCallback((value: string) => fireNonCancelableEvent(__onDelayedInput, { value }));\n\n  const handleChange = (value: string) => {\n    fireDelayedInput(value);\n    fireNonCancelableEvent(onChange, { value });\n  };\n\n  const inputRef = useRef<HTMLInputElement>(null);\n  const searchProps = useSearchProps(type, disabled, readOnly, value, inputRef, handleChange);\n  __leftIcon = __leftIcon ?? searchProps.__leftIcon;\n  __rightIcon = __rightIcon ?? searchProps.__rightIcon;\n  __onRightIconClick = __onRightIconClick ?? searchProps.__onRightIconClick;\n\n  const formFieldContext = useFormFieldContext(rest);\n  const { ariaLabelledby, ariaDescribedby, controlId, invalid } = __inheritFormFieldProps ? formFieldContext : rest;\n\n  const attributes: React.InputHTMLAttributes<HTMLInputElement> = {\n    'aria-label': ariaLabel,\n    'aria-labelledby': ariaLabelledby,\n    'aria-describedby': ariaDescribedby,\n    name,\n    placeholder,\n    autoFocus,\n    id: controlId,\n    className: clsx(\n      styles.input,\n      type && styles[`input-type-${type}`],\n      __rightIcon && styles['input-has-icon-right'],\n      __leftIcon && styles['input-has-icon-left'],\n      __noBorderRadius && styles['input-has-no-border-radius'],\n      {\n        [styles['input-readonly']]: readOnly,\n        [styles['input-invalid']]: invalid,\n      }\n    ),\n    autoComplete: convertAutoComplete(autoComplete),\n    disabled,\n    readOnly,\n    type,\n    step,\n    inputMode,\n    spellCheck: spellcheck,\n    onKeyDown: onKeyDown && (event => fireKeyboardEvent(onKeyDown, event)),\n    onKeyUp: onKeyUp && (event => fireKeyboardEvent(onKeyUp, event)),\n    // We set a default value on the component in order to force it into the controlled mode.\n    value: value ?? '',\n    onChange: onChange && (event => handleChange(event.target.value)),\n    onBlur: e => {\n      onBlur && fireNonCancelableEvent(onBlur);\n      __onBlurWithDetail && fireNonCancelableEvent(__onBlurWithDetail, { relatedTarget: e.relatedTarget });\n    },\n    onFocus: onFocus && (() => fireNonCancelableEvent(onFocus)),\n    ...__nativeAttributes,\n  };\n\n  if (type === 'number') {\n    // Chrome and Safari have a weird built-in behavior of letting focused\n    // number inputs be controlled by scrolling on them. However, they don't\n    // lock the browser's scroll, so it's very easy to accidentally increment\n    // the input while scrolling down the page.\n    attributes.onWheel = event => event.currentTarget.blur();\n  }\n\n  if (disableBrowserAutocorrect) {\n    attributes.autoCorrect = 'off';\n    attributes.autoCapitalize = 'off';\n  }\n\n  // ensure aria properties are string literal \"true\"\n  if (ariaRequired) {\n    attributes['aria-required'] = 'true';\n  }\n  if (invalid) {\n    attributes['aria-invalid'] = 'true';\n  }\n\n  const mergedRef = useMergeRefs(ref, inputRef);\n\n  // type = \"visualSearch\" renders a type=\"text' input\n  if (attributes.type === 'visualSearch') {\n    attributes.type = 'text';\n  }\n\n  return (\n    <div {...baseProps} className={clsx(baseProps.className, styles['input-container'])} ref={__internalRootRef}>\n      {__leftIcon && (\n        <span onClick={__onLeftIconClick} className={styles['input-icon-left']}>\n          <InternalIcon name={__leftIcon} variant={disabled ? 'disabled' : __leftIconVariant} />\n        </span>\n      )}\n      <input ref={mergedRef} {...attributes} />\n      {__rightIcon && (\n        <span className={styles['input-icon-right']}>\n          <InternalButton\n            // Used for test utils\n            // eslint-disable-next-line react/forbid-component-props\n            className={styles['input-button-right']}\n            variant=\"inline-icon\"\n            formAction=\"none\"\n            iconName={__rightIcon}\n            onClick={__onRightIconClick}\n            ariaLabel={i18n('clearAriaLabel', clearAriaLabelOverride)}\n            disabled={disabled}\n          />\n        </span>\n      )}\n    </div>\n  );\n}\n\nexport default React.forwardRef(InternalInput);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { Ref, useImperativeHandle, useRef } from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport InternalInput from './internal';\nimport { InputProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { InputProps };\n\nconst Input = React.forwardRef(\n  (\n    {\n      value,\n      type = 'text',\n      step,\n      inputMode,\n      autoComplete = true,\n      spellcheck,\n      disabled,\n      readOnly,\n      disableBrowserAutocorrect,\n      onKeyDown,\n      onKeyUp,\n      onChange,\n      onBlur,\n      onFocus,\n      ariaRequired,\n      name,\n      placeholder,\n      autoFocus,\n      ariaLabel,\n      ariaLabelledby,\n      ariaDescribedby,\n      invalid,\n      controlId,\n      clearAriaLabel,\n      ...rest\n    }: InputProps,\n    ref: Ref<InputProps.Ref>\n  ) => {\n    const baseComponentProps = useBaseComponent('Input');\n    const baseProps = getBaseProps(rest);\n\n    const inputRef = useRef<HTMLInputElement>(null);\n\n    useImperativeHandle(\n      ref,\n      () => ({\n        focus(...args: Parameters<HTMLElement['focus']>) {\n          inputRef.current?.focus(...args);\n        },\n        select() {\n          inputRef.current?.select();\n        },\n      }),\n      [inputRef]\n    );\n\n    return (\n      <InternalInput\n        ref={inputRef}\n        {...{\n          ...baseProps,\n          ...baseComponentProps,\n          autoComplete,\n          ariaLabel,\n          ariaRequired,\n          autoFocus,\n          disabled,\n          disableBrowserAutocorrect,\n          name,\n          onKeyDown,\n          onKeyUp,\n          onChange,\n          onBlur,\n          onFocus,\n          placeholder,\n          readOnly,\n          type,\n          step,\n          inputMode,\n          spellcheck,\n          value,\n          ariaDescribedby,\n          ariaLabelledby,\n          invalid,\n          controlId,\n          clearAriaLabel,\n        }}\n        className={clsx(styles.root, baseProps.className)}\n        __inheritFormFieldProps={true}\n      />\n    );\n  }\n);\n\napplyDisplayName(Input, 'Input');\nexport default Input;\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_r2vco_1a6xp_93\"\n};\n  ","\n    import './styles.scoped.css';\n    export default {\n  \"dropdown-content-wrapper\": \"awsui_dropdown-content-wrapper_qwoo0_1espb_93\",\n  \"awsui-motion-fade-in-dropdown\": \"awsui_awsui-motion-fade-in-dropdown_qwoo0_1espb_1\",\n  \"refresh\": \"awsui_refresh_qwoo0_1espb_114\",\n  \"awsui-motion-fade-in-0\": \"awsui_awsui-motion-fade-in-0_qwoo0_1espb_1\",\n  \"root\": \"awsui_root_qwoo0_1espb_143\",\n  \"interior\": \"awsui_interior_qwoo0_1espb_157\",\n  \"dropdown\": \"awsui_dropdown_qwoo0_1espb_93\",\n  \"use-portal\": \"awsui_use-portal_qwoo0_1espb_168\",\n  \"dropdown-drop-up\": \"awsui_dropdown-drop-up_qwoo0_1espb_213\",\n  \"with-limited-width\": \"awsui_with-limited-width_qwoo0_1espb_217\",\n  \"dropdown-drop-left\": \"awsui_dropdown-drop-left_qwoo0_1espb_220\",\n  \"dropdown-drop-right\": \"awsui_dropdown-drop-right_qwoo0_1espb_223\",\n  \"occupy-entire-width\": \"awsui_occupy-entire-width_qwoo0_1espb_226\",\n  \"hide-upper-border\": \"awsui_hide-upper-border_qwoo0_1espb_229\",\n  \"open\": \"awsui_open_qwoo0_1espb_236\",\n  \"nowrap\": \"awsui_nowrap_qwoo0_1espb_245\",\n  \"is-empty\": \"awsui_is-empty_qwoo0_1espb_249\",\n  \"dropdown-content\": \"awsui_dropdown-content_qwoo0_1espb_93\",\n  \"ie11-wrapper\": \"awsui_ie11-wrapper_qwoo0_1espb_259\",\n  \"stretch-trigger-height\": \"awsui_stretch-trigger-height_qwoo0_1espb_263\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Dimensions, getOverflowParents, getOverflowParentDimensions } from '../../utils/scrollable-containers';\nimport styles from './styles.css.js';\n\nconst AVAILABLE_SPACE_RESERVE_DEFAULT = 50;\nconst AVAILABLE_SPACE_RESERVE_MOBILE_VERTICAL = 19; // 50 - 31\nconst AVAILABLE_SPACE_RESERVE_MOBILE_HORIZONTAL = 20;\n\ninterface AvailableSpace {\n  above: number;\n  below: number;\n  left: number;\n  right: number;\n}\nexport interface DropdownPosition {\n  height: string;\n  width: string;\n  dropUp: boolean;\n  dropLeft: boolean;\n  left: string;\n}\nexport interface InteriorDropdownPosition extends DropdownPosition {\n  bottom: string;\n  top: string;\n}\n\nconst getClosestParentDimensions = (element: HTMLElement): any => {\n  const parents = getOverflowParents(element).map(el => {\n    const { height, width, top, left } = el.getBoundingClientRect();\n    return {\n      height,\n      width,\n      top,\n      left,\n    };\n  });\n\n  return parents.shift();\n};\n\nexport const getAvailableSpace = (\n  trigger: HTMLElement,\n  dropdown: HTMLElement,\n  overflowParents: ReadonlyArray<Dimensions>,\n  stretchWidth = false,\n  stretchHeight = false,\n  isMobile?: boolean\n): AvailableSpace => {\n  const availableSpaceReserveVertical = stretchHeight\n    ? 0\n    : isMobile\n    ? AVAILABLE_SPACE_RESERVE_MOBILE_VERTICAL\n    : AVAILABLE_SPACE_RESERVE_DEFAULT;\n  const availableSpaceReserveHorizontal = stretchWidth\n    ? 0\n    : isMobile\n    ? AVAILABLE_SPACE_RESERVE_MOBILE_HORIZONTAL\n    : AVAILABLE_SPACE_RESERVE_DEFAULT;\n  const { bottom: triggerBottom, left: triggerLeft, right: triggerRight } = trigger.getBoundingClientRect();\n\n  return overflowParents.reduce(\n    ({ above, below, left, right }, overflowParent) => {\n      const offsetTop = triggerBottom - overflowParent.top;\n      const currentAbove = offsetTop - trigger.offsetHeight - availableSpaceReserveVertical;\n      const currentBelow = overflowParent.height - offsetTop - availableSpaceReserveVertical;\n      const currentLeft = triggerRight - overflowParent.left - availableSpaceReserveHorizontal;\n      const currentRight = overflowParent.left + overflowParent.width - triggerLeft - availableSpaceReserveHorizontal;\n\n      return {\n        above: Math.min(above, currentAbove),\n        below: Math.min(below, currentBelow),\n        left: Math.min(left, currentLeft),\n        right: Math.min(right, currentRight),\n      };\n    },\n    { above: Number.MAX_VALUE, below: Number.MAX_VALUE, left: Number.MAX_VALUE, right: Number.MAX_VALUE }\n  );\n};\n\nexport const getInteriorAvailableSpace = (\n  trigger: HTMLElement,\n  dropdown: HTMLElement,\n  overflowParents: ReadonlyArray<Dimensions>,\n  isMobile?: boolean\n): AvailableSpace => {\n  const AVAILABLE_SPACE_RESERVE_VERTICAL = isMobile\n    ? AVAILABLE_SPACE_RESERVE_MOBILE_VERTICAL\n    : AVAILABLE_SPACE_RESERVE_DEFAULT;\n  const AVAILABLE_SPACE_RESERVE_HORIZONTAL = isMobile\n    ? AVAILABLE_SPACE_RESERVE_MOBILE_HORIZONTAL\n    : AVAILABLE_SPACE_RESERVE_DEFAULT;\n  const {\n    bottom: triggerBottom,\n    top: triggerTop,\n    left: triggerLeft,\n    right: triggerRight,\n  } = trigger.getBoundingClientRect();\n\n  return overflowParents.reduce(\n    ({ above, below, left, right }, overflowParent) => {\n      const currentAbove = triggerBottom - overflowParent.top - AVAILABLE_SPACE_RESERVE_VERTICAL;\n      const currentBelow = overflowParent.height - triggerTop + overflowParent.top - AVAILABLE_SPACE_RESERVE_VERTICAL;\n      const currentLeft = triggerLeft - overflowParent.left - AVAILABLE_SPACE_RESERVE_HORIZONTAL;\n      const currentRight =\n        overflowParent.left + overflowParent.width - triggerRight - AVAILABLE_SPACE_RESERVE_HORIZONTAL;\n\n      return {\n        above: Math.min(above, currentAbove),\n        below: Math.min(below, currentBelow),\n        left: Math.min(left, currentLeft),\n        right: Math.min(right, currentRight),\n      };\n    },\n    { above: Number.MAX_VALUE, below: Number.MAX_VALUE, left: Number.MAX_VALUE, right: Number.MAX_VALUE }\n  );\n};\n\nexport const getDropdownPosition = (\n  trigger: HTMLElement,\n  dropdown: HTMLElement,\n  overflowParents: ReadonlyArray<Dimensions>,\n  minWidth?: number,\n  preferCenter = false,\n  stretchWidth = false,\n  stretchHeight = false,\n  isMobile?: boolean\n): DropdownPosition => {\n  const availableSpace = getAvailableSpace(trigger, dropdown, overflowParents, stretchWidth, stretchHeight, isMobile);\n  const triggerWidth = trigger.getBoundingClientRect().width;\n  minWidth = minWidth ? Math.min(triggerWidth, minWidth) : triggerWidth;\n  const requiredWidth = dropdown.getBoundingClientRect().width;\n  // dropdown should not be smaller than the trigger\n  const idealWidth = Math.max(requiredWidth, minWidth);\n\n  let dropLeft: boolean;\n  let left: number | null = null;\n  let width = idealWidth;\n\n  //1. Can it be positioned with ideal width to the right?\n  if (idealWidth <= availableSpace.right) {\n    dropLeft = false;\n    //2. Can it be positioned with ideal width to the left?\n  } else if (idealWidth <= availableSpace.left) {\n    dropLeft = true;\n    //3. Fit into biggest available space either on left or right\n  } else {\n    dropLeft = availableSpace.left > availableSpace.right;\n    width = Math.max(availableSpace.left, availableSpace.right, minWidth);\n  }\n\n  if (preferCenter) {\n    const spillOver = (idealWidth - triggerWidth) / 2;\n\n    // availableSpace always includes the trigger width, but we want to exclude that\n    const availableOutsideLeft = availableSpace.left - triggerWidth;\n    const availableOutsideRight = availableSpace.right - triggerWidth;\n\n    const fitsInCenter = availableOutsideLeft >= spillOver && availableOutsideRight >= spillOver;\n    if (fitsInCenter) {\n      left = -spillOver;\n    }\n  }\n\n  const dropUp = availableSpace.below < dropdown.offsetHeight && availableSpace.above > availableSpace.below;\n  const availableHeight = dropUp ? availableSpace.above : availableSpace.below;\n  // Try and crop the bottom item when all options can't be displayed, affordance for \"there's more\"\n  const croppedHeight = stretchHeight ? availableHeight : Math.floor(availableHeight / 31) * 31 + 16;\n\n  return {\n    dropUp,\n    dropLeft,\n    left: left === null ? 'auto' : `${left}px`,\n    height: `${croppedHeight}px`,\n    width: `${width}px`,\n  };\n};\n\nexport const getInteriorDropdownPosition = (\n  trigger: HTMLElement,\n  dropdown: HTMLElement,\n  overflowParents: ReadonlyArray<Dimensions>,\n  isMobile?: boolean\n): InteriorDropdownPosition => {\n  const availableSpace = getInteriorAvailableSpace(trigger, dropdown, overflowParents, isMobile);\n  const { bottom: triggerBottom, top: triggerTop, width: triggerWidth } = trigger.getBoundingClientRect();\n  const { top: parentDropdownTop, height: parentDropdownHeight } = getClosestParentDimensions(trigger);\n\n  let dropLeft;\n\n  let width = dropdown.getBoundingClientRect().width;\n  const top = triggerTop - parentDropdownTop;\n  if (width <= availableSpace.right) {\n    dropLeft = false;\n  } else if (width <= availableSpace.left) {\n    dropLeft = true;\n  } else {\n    dropLeft = availableSpace.left > availableSpace.right;\n    width = Math.max(availableSpace.left, availableSpace.right);\n  }\n\n  const left = dropLeft ? 0 - width : triggerWidth;\n\n  const dropUp = availableSpace.below < dropdown.offsetHeight && availableSpace.above > availableSpace.below;\n  const bottom = dropUp ? parentDropdownTop + parentDropdownHeight - triggerBottom : 0;\n  const availableHeight = dropUp ? availableSpace.above : availableSpace.below;\n  // Try and crop the bottom item when all options can't be displayed, affordance for \"there's more\"\n  const croppedHeight = Math.floor(availableHeight / 31) * 31 + 16;\n\n  return {\n    dropUp,\n    dropLeft,\n    height: `${croppedHeight}px`,\n    width: `${width}px`,\n    top: `${top}px`,\n    bottom: `${bottom}px`,\n    left: `${left}px`,\n  };\n};\n\nexport const calculatePosition = (\n  dropdownElement: HTMLDivElement,\n  triggerElement: HTMLDivElement,\n  verticalContainerElement: HTMLDivElement,\n  interior: boolean,\n  expandToViewport: boolean,\n  preferCenter: boolean,\n  stretchWidth: boolean,\n  stretchHeight: boolean,\n  isMobile: boolean,\n  minWidth?: number\n): [DropdownPosition, DOMRect] => {\n  // cleaning previously assigned values,\n  // so that they are not reused in case of screen resize and similar events\n  verticalContainerElement.style.maxHeight = '';\n  dropdownElement.style.width = '';\n  dropdownElement.style.top = '';\n  dropdownElement.style.bottom = '';\n  dropdownElement.style.left = '';\n\n  dropdownElement.classList.remove(styles['dropdown-drop-left']);\n  dropdownElement.classList.remove(styles['dropdown-drop-right']);\n  dropdownElement.classList.remove(styles['dropdown-drop-up']);\n\n  const overflowParents = getOverflowParentDimensions(dropdownElement, interior, expandToViewport, stretchHeight);\n  const position = interior\n    ? getInteriorDropdownPosition(triggerElement, dropdownElement, overflowParents, isMobile)\n    : getDropdownPosition(\n        triggerElement,\n        dropdownElement,\n        overflowParents,\n        minWidth,\n        preferCenter,\n        stretchWidth,\n        stretchHeight,\n        isMobile\n      );\n  const triggerBox = triggerElement.getBoundingClientRect();\n  return [position, triggerBox];\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { useVisualContext } from '../../components/visual-context';\nimport { useCurrentMode, useDensityMode, useVisualRefresh } from '../use-visual-mode';\n\nexport function usePortalModeClasses(ref: React.RefObject<HTMLElement>) {\n  const colorMode = useCurrentMode(ref);\n  const densityMode = useDensityMode(ref);\n  const context = useVisualContext(ref);\n  const visualRefresh = useVisualRefresh();\n  return clsx({\n    'awsui-polaris-dark-mode awsui-dark-mode': colorMode === 'dark',\n    'awsui-polaris-compact-mode awsui-compact-mode': densityMode === 'compact',\n    'awsui-visual-refresh': visualRefresh,\n    [`awsui-context-${context}`]: context,\n  });\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useContext } from 'react';\n\ntype Position = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n\nconst DropdownContext = React.createContext<{ position: Position }>({\n  position: 'bottom-right',\n});\n\nexport interface DropdownContextProviderProps {\n  position?: Position;\n  children?: React.ReactNode;\n}\n\nexport function DropdownContextProvider({ children, position = 'bottom-right' }: DropdownContextProviderProps) {\n  return <DropdownContext.Provider value={{ position }}>{children}</DropdownContext.Provider>;\n}\n\nexport function useDropdownContext() {\n  return useContext(DropdownContext);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nexport interface TabTrapProps {\n  focusNextCallback: (event: React.FocusEvent) => void;\n  disabled?: boolean;\n}\n\n/**\n * This component handles focus-forwarding when using keyboard tab navigation.\n * When the user focuses this component, the `focusNextCallback` function is called\n * which can forward the focus to another element.\n */\nexport default function TabTrap({ focusNextCallback, disabled = false }: TabTrapProps) {\n  return <div tabIndex={disabled ? -1 : 0} onFocus={focusNextCallback} />;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// Credits to\n// https://github.com/theKashey/focus-lock/blob/33f8b4bd9675d2605b15e2e4015b77fe35fbd6d0/src/utils/tabbables.ts\nconst tabbables = [\n  'button:enabled',\n  'select:enabled',\n  'textarea:enabled',\n  'input:enabled',\n\n  'a[href]',\n  'area[href]',\n\n  'summary',\n  'iframe',\n  'object',\n  'embed',\n\n  'audio[controls]',\n  'video[controls]',\n\n  '[tabindex]',\n  '[contenteditable]',\n  '[autofocus]',\n].join(',');\n\nexport function getFocusables(container: HTMLElement): HTMLElement[] {\n  return Array.prototype.slice\n    .call(container.querySelectorAll(tabbables))\n    .filter((element: HTMLElement) => element.tabIndex !== -1);\n}\n\nexport function getFirstFocusable(container: HTMLElement): null | HTMLElement {\n  const focusables = getFocusables(container);\n  return focusables[0] ?? null;\n}\n\nexport function getLastFocusable(container: HTMLElement): null | HTMLElement {\n  const focusables = getFocusables(container);\n  return focusables[focusables.length - 1] ?? null;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport styles from './styles.css.js';\nimport clsx from 'clsx';\nimport { useMergeRefs } from '../../hooks/use-merge-refs';\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { fireNonCancelableEvent } from '../../events';\nimport { DropdownProps } from './interfaces';\nimport { DropdownPosition, InteriorDropdownPosition, calculatePosition } from './dropdown-fit-handler';\nimport { Transition, TransitionStatus } from '../transition';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\nimport { usePortalModeClasses } from '../../hooks/use-portal-mode-classes';\nimport { DropdownContextProvider, DropdownContextProviderProps } from './context';\nimport { useMobile } from '../../hooks/use-mobile';\nimport TabTrap from '../tab-trap/index.js';\nimport { getFirstFocusable, getLastFocusable } from '../focus-lock/utils.js';\n\ninterface DropdownContainerProps {\n  children?: React.ReactNode;\n  renderWithPortal?: boolean;\n  id?: string;\n  open?: boolean;\n}\n\nconst DropdownContainer = ({ children, renderWithPortal = false, id, open }: DropdownContainerProps) => {\n  if (renderWithPortal) {\n    if (open) {\n      return createPortal(<div id={id}>{children}</div>, document.body);\n    } else {\n      return null;\n    }\n  } else {\n    return <>{children}</>;\n  }\n};\n\ninterface TransitionContentProps {\n  state: TransitionStatus;\n  transitionRef: React.MutableRefObject<any>;\n  dropdownClasses: string;\n  stretchWidth: boolean;\n  interior: boolean;\n  isRefresh: boolean;\n  dropdownRef: React.RefObject<HTMLDivElement>;\n  verticalContainerRef: React.RefObject<HTMLDivElement>;\n  expandToViewport?: boolean;\n  header?: React.ReactNode;\n  children?: React.ReactNode;\n  footer?: React.ReactNode;\n  position?: DropdownContextProviderProps['position'];\n  open?: boolean;\n  onMouseDown?: React.MouseEventHandler<Element>;\n}\n\nconst TransitionContent = ({\n  state,\n  transitionRef,\n  dropdownClasses,\n  stretchWidth,\n  interior,\n  isRefresh,\n  dropdownRef,\n  verticalContainerRef,\n  expandToViewport,\n  header,\n  children,\n  footer,\n  position,\n  open,\n  onMouseDown,\n}: TransitionContentProps) => {\n  const contentRef = useMergeRefs(dropdownRef, transitionRef);\n  return (\n    <div\n      className={clsx(styles.dropdown, dropdownClasses, {\n        [styles.open]: open,\n        [styles['with-limited-width']]: !stretchWidth,\n        [styles['hide-upper-border']]: stretchWidth,\n        [styles.interior]: interior,\n        [styles['is-empty']]: !header && !children,\n        [styles.refresh]: isRefresh,\n        [styles['use-portal']]: expandToViewport && !interior,\n      })}\n      ref={contentRef}\n      data-open={open}\n      data-animating={state !== 'exited'}\n      aria-hidden={!open}\n      onMouseDown={onMouseDown}\n    >\n      <div className={clsx(styles['dropdown-content-wrapper'], isRefresh && styles.refresh)}>\n        <div className={styles['ie11-wrapper']}>\n          <div ref={verticalContainerRef} className={styles['dropdown-content']}>\n            <DropdownContextProvider position={position}>\n              {header}\n              {children}\n              {footer}\n            </DropdownContextProvider>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nconst Dropdown = ({\n  children,\n  trigger,\n  open,\n  onDropdownClose,\n  onMouseDown,\n  header,\n  footer,\n  dropdownId,\n  stretchTriggerHeight = false,\n  stretchWidth = true,\n  stretchHeight = false,\n  stretchToTriggerWidth = true,\n  expandToViewport = false,\n  preferCenter = false,\n  interior = false,\n  minWidth,\n  scrollable = true,\n  loopFocus = expandToViewport,\n  onFocus,\n  onBlur,\n  contentKey,\n}: DropdownProps) => {\n  const wrapperRef = useRef<HTMLDivElement | null>(null);\n  const triggerRef = useRef<HTMLDivElement | null>(null);\n  const dropdownRef = useRef<HTMLDivElement | null>(null);\n  const dropdownContainerRef = useRef<HTMLDivElement | null>(null);\n  // This container is only needed to apply max-height to. We can't move max-height to it's parent\n  // because of an IE11 issue with flexbox. https://github.com/philipwalton/flexbugs/issues/216\n  const verticalContainerRef = useRef<HTMLDivElement>(null);\n  // To keep track of the initial position (drop up/down) which is kept the same during fixed repositioning\n  const fixedPosition = useRef<DropdownPosition | null>(null);\n\n  const isRefresh = useVisualRefresh();\n\n  const dropdownClasses = usePortalModeClasses(triggerRef);\n  const [position, setPosition] = useState<DropdownContextProviderProps['position']>('bottom-right');\n\n  const isMobile = useMobile();\n\n  const setDropdownPosition = (\n    position: DropdownPosition | InteriorDropdownPosition,\n    triggerBox: DOMRect,\n    target: HTMLDivElement,\n    verticalContainer: HTMLDivElement\n  ) => {\n    const entireWidth = !interior && stretchWidth;\n    if (!stretchWidth) {\n      // 1px offset for dropdowns where the dropdown itself needs a border, rather than on the items\n      verticalContainer.style.maxHeight = `${parseInt(position.height) + 1}px`;\n    } else {\n      verticalContainer.style.maxHeight = position.height;\n    }\n\n    if (entireWidth && !expandToViewport) {\n      if (stretchToTriggerWidth) {\n        target.classList.add(styles['occupy-entire-width']);\n      }\n    } else {\n      target.style.width = position.width;\n    }\n    // Using styles for main dropdown to adjust its position as preferred alternative\n    if (position.dropUp && !interior) {\n      target.classList.add(styles['dropdown-drop-up']);\n      if (!expandToViewport) {\n        target.style.bottom = '100%';\n      }\n    } else {\n      target.classList.remove(styles['dropdown-drop-up']);\n    }\n    target.classList.add(position.dropLeft ? styles['dropdown-drop-left'] : styles['dropdown-drop-right']);\n\n    if (position.left && position.left !== 'auto') {\n      target.style.left = position.left;\n    }\n\n    // Position normal overflow dropdowns with fixed positioning relative to viewport\n    if (expandToViewport && !interior) {\n      target.style.position = 'fixed';\n      if (position.dropUp) {\n        target.style.bottom = `calc(100% - ${triggerBox.top}px)`;\n      } else {\n        target.style.top = `${triggerBox.bottom}px`;\n      }\n      if (position.dropLeft) {\n        target.style.left = `calc(${triggerBox.right}px - ${position.width})`;\n      } else {\n        target.style.left = `${triggerBox.left}px`;\n      }\n      // Keep track of the initial dropdown position and direction.\n      // Dropdown direction doesn't need to change as the user scrolls, just needs to stay attached to the trigger.\n      fixedPosition.current = position;\n      return;\n    }\n\n    // For an interior dropdown (the fly out) we need exact values for positioning\n    // and classes are not enough\n    // usage of relative position is impossible due to overwrite of overflow-x\n    if (interior && isInteriorPosition(position)) {\n      if (position.dropUp) {\n        target.style.bottom = position.bottom;\n      } else {\n        target.style.top = position.top;\n      }\n      target.style.left = position.left;\n    }\n\n    if (position.dropUp && position.dropLeft) {\n      setPosition('top-left');\n    } else if (position.dropUp) {\n      setPosition('top-right');\n    } else if (position.dropLeft) {\n      setPosition('bottom-left');\n    } else {\n      setPosition('bottom-right');\n    }\n  };\n\n  const isOutsideDropdown = (element: Element) =>\n    (!wrapperRef.current || !wrapperRef.current.contains(element)) &&\n    (!dropdownContainerRef.current || !dropdownContainerRef.current.contains(element));\n\n  const focusHandler = (event: React.FocusEvent) => {\n    if (!event.relatedTarget || isOutsideDropdown(event.relatedTarget)) {\n      fireNonCancelableEvent(onFocus, event);\n    }\n  };\n\n  const blurHandler = (event: React.FocusEvent) => {\n    if (!event.relatedTarget || isOutsideDropdown(event.relatedTarget)) {\n      fireNonCancelableEvent(onBlur, event);\n    }\n  };\n\n  useLayoutEffect(() => {\n    const onDropdownOpen = () => {\n      if (open && dropdownRef.current && triggerRef.current && verticalContainerRef.current) {\n        // calculate scroll width only for dropdowns that has a scrollbar and ignore it for date picker components\n        if (scrollable) {\n          dropdownRef.current.classList.add(styles.nowrap);\n        }\n        setDropdownPosition(\n          ...calculatePosition(\n            dropdownRef.current,\n            triggerRef.current,\n            verticalContainerRef.current,\n            interior,\n            expandToViewport,\n            preferCenter,\n            stretchWidth,\n            stretchHeight,\n            isMobile,\n            minWidth\n          ),\n          dropdownRef.current,\n          verticalContainerRef.current\n        );\n        if (scrollable) {\n          dropdownRef.current.classList.remove(styles.nowrap);\n        }\n      }\n    };\n    onDropdownOpen();\n\n    if (open) {\n      // window may scroll when dropdown opens, for example when soft keyboard shows up\n      window.addEventListener('scroll', onDropdownOpen);\n      // only listen to window scroll within very short time after the dropdown opens\n      // do not want to interfere dropdown position on scroll afterwards\n      const timeoutId = setTimeout(() => {\n        window.removeEventListener('scroll', onDropdownOpen);\n      }, 500);\n\n      return () => {\n        clearTimeout(timeoutId);\n        window.removeEventListener('scroll', onDropdownOpen);\n      };\n    }\n    // See AWSUI-13040\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [open, dropdownRef, triggerRef, verticalContainerRef, interior, stretchWidth, isMobile, contentKey]);\n\n  // subscribe to outside click\n  useEffect(() => {\n    if (!open) {\n      return;\n    }\n    const clickListener = (e: MouseEvent) => {\n      if (!dropdownRef.current?.contains(e.target as Node) && !triggerRef.current?.contains(e.target as Node)) {\n        fireNonCancelableEvent(onDropdownClose);\n      }\n    };\n    window.addEventListener('click', clickListener, true);\n\n    return () => {\n      window.removeEventListener('click', clickListener, true);\n    };\n  }, [open, onDropdownClose]);\n\n  // sync dropdown position on scroll and resize\n  useLayoutEffect(() => {\n    if (!expandToViewport || !open) {\n      return;\n    }\n    const updateDropdownPosition = () => {\n      if (triggerRef.current && dropdownRef.current && verticalContainerRef.current) {\n        const triggerRect = triggerRef.current.getBoundingClientRect();\n        const target = dropdownRef.current;\n        if (fixedPosition.current) {\n          if (fixedPosition.current.dropUp) {\n            dropdownRef.current.style.bottom = `calc(100% - ${triggerRect.top}px)`;\n          } else {\n            target.style.top = `${triggerRect.bottom}px`;\n          }\n          if (fixedPosition.current.dropLeft) {\n            target.style.left = `calc(${triggerRect.right}px - ${fixedPosition.current.width})`;\n          } else {\n            target.style.left = `${triggerRect.left}px`;\n          }\n        }\n      }\n    };\n\n    updateDropdownPosition();\n\n    window.addEventListener('scroll', updateDropdownPosition, true);\n    window.addEventListener('resize', updateDropdownPosition, true);\n    return () => {\n      window.removeEventListener('scroll', updateDropdownPosition, true);\n      window.removeEventListener('resize', updateDropdownPosition, true);\n    };\n  }, [open, expandToViewport]);\n\n  return (\n    <div\n      className={clsx(\n        styles.root,\n        interior && styles.interior,\n        stretchTriggerHeight && styles['stretch-trigger-height']\n      )}\n      ref={wrapperRef}\n      onFocus={focusHandler}\n      onBlur={blurHandler}\n    >\n      <div className={clsx(stretchTriggerHeight && styles['stretch-trigger-height'])} ref={triggerRef}>\n        {trigger}\n      </div>\n\n      <TabTrap\n        focusNextCallback={() => dropdownRef.current && getFirstFocusable(dropdownRef.current)?.focus()}\n        disabled={!open || !loopFocus}\n      />\n\n      <DropdownContainer renderWithPortal={expandToViewport && !interior} id={dropdownId} open={open}>\n        <Transition in={open ?? false} exit={false}>\n          {(state, ref) => (\n            <div ref={dropdownContainerRef}>\n              <TabTrap\n                focusNextCallback={() => triggerRef.current && getLastFocusable(triggerRef.current)?.focus()}\n                disabled={!open || !loopFocus}\n              />\n\n              <TransitionContent\n                state={state}\n                transitionRef={ref}\n                dropdownClasses={dropdownClasses}\n                open={open}\n                stretchWidth={stretchWidth}\n                interior={interior}\n                header={header}\n                expandToViewport={expandToViewport}\n                footer={footer}\n                onMouseDown={onMouseDown}\n                isRefresh={isRefresh}\n                dropdownRef={dropdownRef}\n                verticalContainerRef={verticalContainerRef}\n                position={position}\n              >\n                {children}\n              </TransitionContent>\n\n              <TabTrap\n                focusNextCallback={() => triggerRef.current && getFirstFocusable(triggerRef.current)?.focus()}\n                disabled={!open || !loopFocus}\n              />\n            </div>\n          )}\n        </Transition>\n      </DropdownContainer>\n    </div>\n  );\n};\n\nconst isInteriorPosition = (\n  position: DropdownPosition | InteriorDropdownPosition\n): position is InteriorDropdownPosition => (position as InteriorDropdownPosition).bottom !== undefined;\n\nexport default Dropdown;\n","\n    import './styles.scoped.css';\n    export default {\n  \"link\": \"awsui_link_4c84z_v5gvi_93\",\n  \"variant-secondary\": \"awsui_variant-secondary_4c84z_v5gvi_140\",\n  \"variant-primary\": \"awsui_variant-primary_4c84z_v5gvi_177\",\n  \"variant-info\": \"awsui_variant-info_4c84z_v5gvi_212\",\n  \"variant-value-large\": \"awsui_variant-value-large_4c84z_v5gvi_249\",\n  \"variant-top-navigation\": \"awsui_variant-top-navigation_4c84z_v5gvi_283\",\n  \"variant-recovery\": \"awsui_variant-recovery_4c84z_v5gvi_318\",\n  \"button\": \"awsui_button_4c84z_v5gvi_353\",\n  \"color-inverted\": \"awsui_color-inverted_4c84z_v5gvi_390\",\n  \"font-size-body-s\": \"awsui_font-size-body-s_4c84z_v5gvi_409\",\n  \"font-size-body-m\": \"awsui_font-size-body-m_4c84z_v5gvi_414\",\n  \"font-size-heading-xs\": \"awsui_font-size-heading-xs_4c84z_v5gvi_418\",\n  \"font-size-heading-s\": \"awsui_font-size-heading-s_4c84z_v5gvi_422\",\n  \"font-size-heading-m\": \"awsui_font-size-heading-m_4c84z_v5gvi_427\",\n  \"font-size-heading-l\": \"awsui_font-size-heading-l_4c84z_v5gvi_432\",\n  \"font-size-heading-xl\": \"awsui_font-size-heading-xl_4c84z_v5gvi_437\",\n  \"font-size-display-l\": \"awsui_font-size-display-l_4c84z_v5gvi_442\",\n  \"font-size-inherit\": \"awsui_font-size-inherit_4c84z_v5gvi_447\",\n  \"icon-wrapper\": \"awsui_icon-wrapper_4c84z_v5gvi_453\",\n  \"icon\": \"awsui_icon_4c84z_v5gvi_453\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useContext, useRef } from 'react';\nimport clsx from 'clsx';\nimport InternalIcon from '../icon/internal';\nimport styles from './styles.css.js';\nimport { getBaseProps } from '../internal/base-component';\nimport { fireCancelableEvent, isPlainLeftClick } from '../internal/events';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { KeyCode } from '../internal/keycode';\nimport { LinkProps } from './interfaces';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport { useInternalI18n } from '../internal/i18n/context';\nimport { InfoLinkLabelContext } from '../internal/context/info-link-label-context';\nimport { useFunnel, useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\n\nimport { FunnelMetrics } from '../internal/analytics';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { DATA_ATTR_FUNNEL_VALUE, getFunnelValueSelector, getSubStepAllSelector } from '../internal/analytics/selectors';\n\ntype InternalLinkProps = InternalBaseComponentProps &\n  Omit<LinkProps, 'variant'> & {\n    variant?: LinkProps['variant'] | 'top-navigation' | 'link' | 'recovery';\n  };\n\nconst InternalLink = React.forwardRef(\n  (\n    {\n      variant = 'secondary',\n      fontSize = 'body-m',\n      color = 'normal',\n      external = false,\n      target,\n      href,\n      rel,\n      ariaLabel,\n      externalIconAriaLabel,\n      onFollow,\n      children,\n      __internalRootRef = null,\n      ...props\n    }: InternalLinkProps,\n    ref: React.Ref<LinkProps.Ref>\n  ) => {\n    checkSafeUrl('Link', href);\n    const isButton = !href;\n    const specialStyles = ['top-navigation', 'link', 'recovery'];\n    const hasSpecialStyle = specialStyles.indexOf(variant) > -1;\n\n    const i18n = useInternalI18n('link');\n    const baseProps = getBaseProps(props);\n    const anchorTarget = target ?? (external ? '_blank' : undefined);\n    const anchorRel = rel ?? (anchorTarget === '_blank' ? 'noopener noreferrer' : undefined);\n    const uniqueId = useUniqueId('link');\n    const linkId = useUniqueId('link-self');\n    const infoId = useUniqueId('link-info');\n\n    const infoLinkLabelFromContext = useContext(InfoLinkLabelContext);\n\n    const { funnelInteractionId } = useFunnel();\n    const { stepNumber, stepNameSelector, subStepSelector, subStepNameSelector } = useFunnelSubStep();\n\n    const fireFunnelEvent = (funnelInteractionId: string) => {\n      if (variant === 'info') {\n        FunnelMetrics.helpPanelInteracted({\n          funnelInteractionId,\n          stepNumber,\n          stepNameSelector,\n          subStepSelector,\n          subStepNameSelector,\n          elementSelector: getFunnelValueSelector(uniqueId),\n          subStepAllSelector: getSubStepAllSelector(),\n        });\n      } else if (external) {\n        FunnelMetrics.externalLinkInteracted({\n          funnelInteractionId,\n          stepNumber,\n          stepNameSelector,\n          subStepSelector,\n          subStepNameSelector,\n          elementSelector: getFunnelValueSelector(uniqueId),\n          subStepAllSelector: getSubStepAllSelector(),\n        });\n      }\n    };\n\n    const fireFollowEvent = (event: React.SyntheticEvent) => {\n      if (funnelInteractionId) {\n        fireFunnelEvent(funnelInteractionId);\n      }\n\n      fireCancelableEvent(onFollow, { href, external, target: anchorTarget }, event);\n    };\n\n    const handleLinkClick = (event: React.MouseEvent) => {\n      if (isPlainLeftClick(event)) {\n        fireFollowEvent(event);\n      }\n    };\n\n    const handleButtonClick = (event: React.MouseEvent) => {\n      fireFollowEvent(event);\n    };\n\n    const handleButtonKeyDown = (event: React.KeyboardEvent) => {\n      if (event.keyCode === KeyCode.space || event.keyCode === KeyCode.enter) {\n        event.preventDefault();\n        fireFollowEvent(event);\n      }\n    };\n\n    const linkRef = useRef<HTMLElement>(null);\n    const isVisualRefresh = useVisualRefresh();\n    useForwardFocus(ref, linkRef);\n\n    // Visual refresh should only add styles to buttons that don't already have unique styles (e.g. primary/secondary variants)\n    const applyButtonStyles = isButton && isVisualRefresh && !hasSpecialStyle;\n\n    const sharedProps = {\n      id: linkId,\n      ...baseProps,\n      // https://github.com/microsoft/TypeScript/issues/36659\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      ref: useMergeRefs(linkRef as any, __internalRootRef),\n      className: clsx(\n        styles.link,\n        baseProps.className,\n        applyButtonStyles ? styles.button : null,\n        styles[getVariantStyle(variant)],\n        styles[getFontSizeStyle(variant, fontSize)],\n        styles[getColorStyle(variant, color)]\n      ),\n      'aria-label': ariaLabel,\n      'aria-labelledby': '',\n      [DATA_ATTR_FUNNEL_VALUE]: uniqueId,\n    };\n\n    if (variant === 'info' && infoLinkLabelFromContext && !ariaLabel) {\n      sharedProps['aria-labelledby'] = `${sharedProps.id} ${infoId} ${infoLinkLabelFromContext}`;\n    }\n\n    const renderedExternalIconAriaLabel = i18n('externalIconAriaLabel', externalIconAriaLabel);\n    const content = (\n      <>\n        {children}\n        {external && (\n          <span className={styles['icon-wrapper']}>\n            &nbsp;\n            <span\n              className={styles.icon}\n              aria-label={renderedExternalIconAriaLabel}\n              role={renderedExternalIconAriaLabel ? 'img' : undefined}\n            >\n              <InternalIcon name=\"external\" size=\"inherit\" />\n            </span>\n          </span>\n        )}\n        {variant === 'info' && (\n          <span hidden={true} id={infoId}>\n            :\n          </span>\n        )}\n      </>\n    );\n\n    if (isButton) {\n      return (\n        <a {...sharedProps} role=\"button\" tabIndex={0} onKeyDown={handleButtonKeyDown} onClick={handleButtonClick}>\n          {content}\n        </a>\n      );\n    }\n\n    return (\n      // we dynamically set proper rel in the code above\n      // eslint-disable-next-line react/jsx-no-target-blank\n      <a {...sharedProps} target={anchorTarget} rel={anchorRel} href={href} onClick={handleLinkClick}>\n        {content}\n      </a>\n    );\n  }\n);\n\nfunction getVariantStyle(variant: Exclude<InternalLinkProps['variant'], undefined>) {\n  return `variant-${variant.replace(/^awsui-/, '')}`;\n}\n\nfunction getFontSizeStyle(variant: InternalLinkProps['variant'], fontSize: InternalLinkProps['fontSize']) {\n  switch (variant) {\n    case 'info':\n      return 'font-size-body-s';\n    case 'awsui-value-large':\n      return 'font-size-display-l';\n    default:\n      return `font-size-${fontSize}`;\n  }\n}\n\nfunction getColorStyle(variant: InternalLinkProps['variant'], color: InternalLinkProps['color']) {\n  return `color-${variant === 'info' ? 'normal' : color}`;\n}\n\nexport default InternalLink;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useRef, useEffect } from 'react';\n\n/**\n * This hook gives the value of any variable from the previous render invocation\n */\nexport const usePrevious = <T>(value: T) => {\n  const ref = useRef<T>();\n  useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n};\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_vrgzu_3vyoy_93\",\n  \"recovery\": \"awsui_recovery_vrgzu_3vyoy_107\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport InternalLink from '../../../link/internal';\n\nimport InternalStatusIndicator from '../../../status-indicator/internal';\nimport { NonCancelableEventHandler, fireNonCancelableEvent } from '../../events';\nimport { usePrevious } from '../../hooks/use-previous';\n\nimport { DropdownStatusProps } from './interfaces';\nimport styles from './styles.css.js';\n\nexport { DropdownStatusProps };\n\nexport interface DropdownStatusPropsExtended extends DropdownStatusProps {\n  isEmpty?: boolean;\n  isNoMatch?: boolean;\n  isFiltered?: boolean;\n  noMatch?: React.ReactNode;\n  filteringResultsText?: string;\n  /**\n   * Called when the user clicks the recovery button placed at the\n   * bottom of the dropdown list in the error state. Use this to\n   * retry a failed request or provide another option for the user\n   * to recover from the error.\n   */\n  onRecoveryClick?: NonCancelableEventHandler;\n}\n\nfunction DropdownStatus({ children }: { children: React.ReactNode }) {\n  return <div className={styles.root}>{children}</div>;\n}\n\ntype UseDropdownStatus = ({\n  statusType,\n  empty,\n  loadingText,\n  finishedText,\n  filteringResultsText,\n  errorText,\n  recoveryText,\n  isEmpty,\n  isNoMatch,\n  isFiltered,\n  noMatch,\n  onRecoveryClick,\n}: DropdownStatusPropsExtended) => DropdownStatusResult;\n\ninterface DropdownStatusResult {\n  isSticky: boolean;\n  content: React.ReactNode | null;\n}\n\nexport const useDropdownStatus: UseDropdownStatus = ({\n  statusType,\n  empty,\n  loadingText,\n  finishedText,\n  filteringResultsText,\n  errorText,\n  recoveryText,\n  isEmpty,\n  isNoMatch,\n  isFiltered,\n  noMatch,\n  onRecoveryClick,\n  errorIconAriaLabel,\n}) => {\n  const previousStatusType = usePrevious(statusType);\n  const statusResult: DropdownStatusResult = { isSticky: true, content: null };\n\n  if (statusType === 'loading') {\n    statusResult.content = <InternalStatusIndicator type={'loading'}>{loadingText}</InternalStatusIndicator>;\n  } else if (statusType === 'error') {\n    statusResult.content = (\n      <span>\n        <InternalStatusIndicator\n          type=\"error\"\n          __animate={previousStatusType !== 'error'}\n          iconAriaLabel={errorIconAriaLabel}\n        >\n          {errorText}\n        </InternalStatusIndicator>{' '}\n        {recoveryText && (\n          <InternalLink\n            onFollow={() => fireNonCancelableEvent(onRecoveryClick)}\n            variant=\"recovery\"\n            className={styles.recovery}\n          >\n            {recoveryText}\n          </InternalLink>\n        )}\n      </span>\n    );\n  } else if (isEmpty && empty) {\n    statusResult.content = empty;\n  } else if (isNoMatch && noMatch) {\n    statusResult.content = noMatch;\n  } else if (isFiltered && filteringResultsText) {\n    statusResult.content = filteringResultsText;\n  } else if (statusType === 'finished' && finishedText) {\n    statusResult.content = finishedText;\n    statusResult.isSticky = false;\n  }\n\n  return statusResult;\n};\n\nexport default DropdownStatus;\n","\n    import './styles.scoped.css';\n    export default {\n  \"placeholder\": \"awsui_placeholder_dwuol_mg7rb_93\",\n  \"item\": \"awsui_item_dwuol_mg7rb_98\",\n  \"checkbox\": \"awsui_checkbox_dwuol_mg7rb_102\",\n  \"filter\": \"awsui_filter_dwuol_mg7rb_111\",\n  \"trigger\": \"awsui_trigger_dwuol_mg7rb_116\",\n  \"layout-strut\": \"awsui_layout-strut_dwuol_mg7rb_122\",\n  \"list-bottom\": \"awsui_list-bottom_dwuol_mg7rb_128\",\n  \"selected-icon\": \"awsui_selected-icon_dwuol_mg7rb_132\",\n  \"show-label-tag\": \"awsui_show-label-tag_dwuol_mg7rb_136\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport InternalInput, { InternalInputProps } from '../../input/internal';\nimport { SelectProps } from '../interfaces';\nimport styles from './styles.css.js';\n\nexport interface FilterProps extends InternalInputProps {\n  ref?: React.Ref<HTMLInputElement>;\n  filteringType: SelectProps.FilteringType;\n}\n\nconst Filter = React.forwardRef(({ filteringType, ...filterProps }: FilterProps, ref: React.Ref<HTMLInputElement>) => {\n  if (filteringType === 'none') {\n    return null;\n  }\n\n  return (\n    <InternalInput\n      ref={ref}\n      type=\"visualSearch\"\n      className={styles.filter}\n      autoComplete={false}\n      disableBrowserAutocorrect={true}\n      invalid={false}\n      __noBorderRadius={true}\n      {...filterProps}\n      __nativeAttributes={{\n        'aria-expanded': true,\n        'aria-haspopup': true,\n        role: 'combobox',\n        autoCorrect: 'off',\n        autoCapitalize: 'off',\n        ...filterProps.__nativeAttributes,\n      }}\n    />\n  );\n});\n\nexport default Filter;\n","\n    import './styles.scoped.css';\n    export default {\n  \"button-trigger\": \"awsui_button-trigger_18eso_1ro0f_97\",\n  \"arrow\": \"awsui_arrow_18eso_1ro0f_97\",\n  \"has-caret\": \"awsui_has-caret_18eso_1ro0f_137\",\n  \"placeholder\": \"awsui_placeholder_18eso_1ro0f_140\",\n  \"pressed\": \"awsui_pressed_18eso_1ro0f_153\",\n  \"disabled\": \"awsui_disabled_18eso_1ro0f_156\",\n  \"in-filtering-token\": \"awsui_in-filtering-token_18eso_1ro0f_165\",\n  \"read-only\": \"awsui_read-only_18eso_1ro0f_171\",\n  \"invalid\": \"awsui_invalid_18eso_1ro0f_188\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { ButtonHTMLAttributes } from 'react';\nimport clsx from 'clsx';\nimport { BaseComponentProps, getBaseProps } from '../../base-component';\nimport InternalIcon from '../../../icon/internal';\nimport styles from './styles.css.js';\nimport { fireKeyboardEvent, fireCancelableEvent, CancelableEventHandler, BaseKeyDetail } from '../../events';\n\nexport interface ButtonTriggerProps extends BaseComponentProps {\n  children?: React.ReactNode;\n  pressed?: boolean;\n  hideCaret?: boolean;\n  disabled?: boolean;\n  readOnly?: boolean;\n  invalid?: boolean;\n  inFilteringToken?: boolean;\n  ariaHasPopup?: 'true' | 'listbox';\n  ariaLabel?: string;\n  ariaLabelledby?: string;\n  ariaDescribedby?: string;\n  onKeyDown?: CancelableEventHandler<BaseKeyDetail>;\n  onKeyUp?: CancelableEventHandler<BaseKeyDetail>;\n  onMouseDown?: CancelableEventHandler;\n  onClick?: CancelableEventHandler;\n  onFocus?: CancelableEventHandler;\n  onBlur?: CancelableEventHandler<{ relatedTarget: Node | null }>;\n  autoFocus?: boolean;\n}\n\nconst ButtonTrigger = (\n  {\n    children,\n    pressed = false,\n    hideCaret = false,\n    disabled = false,\n    readOnly = false,\n    invalid = false,\n    inFilteringToken,\n    ariaHasPopup,\n    ariaLabel,\n    ariaLabelledby,\n    ariaDescribedby,\n    onKeyDown,\n    onKeyUp,\n    onMouseDown,\n    onClick,\n    onFocus,\n    onBlur,\n    autoFocus,\n    ...restProps\n  }: ButtonTriggerProps,\n  ref: React.Ref<HTMLButtonElement>\n) => {\n  const baseProps = getBaseProps(restProps);\n  const attributes: ButtonHTMLAttributes<HTMLButtonElement> = {\n    ...baseProps,\n    type: 'button',\n    className: clsx(\n      styles['button-trigger'],\n      baseProps.className,\n      pressed && styles.pressed,\n      disabled && styles.disabled,\n      invalid && styles.invalid,\n      !hideCaret && styles['has-caret'],\n      readOnly && styles['read-only'],\n      inFilteringToken && styles['in-filtering-token']\n    ),\n    disabled: disabled || readOnly,\n    'aria-expanded': pressed,\n    'aria-label': ariaLabel,\n    'aria-labelledby': ariaLabelledby,\n    'aria-describedby': ariaDescribedby,\n    'aria-haspopup': ariaHasPopup ?? 'listbox',\n    onKeyDown: onKeyDown && (event => fireKeyboardEvent(onKeyDown, event)),\n    onKeyUp: onKeyUp && (event => fireKeyboardEvent(onKeyUp, event)),\n    onMouseDown: onMouseDown && (event => fireCancelableEvent(onMouseDown, {}, event)),\n    onClick: onClick && (event => fireCancelableEvent(onClick, {}, event)),\n    onFocus: onFocus && (event => fireCancelableEvent(onFocus, {}, event)),\n    onBlur: onBlur && (event => fireCancelableEvent(onBlur, { relatedTarget: event.relatedTarget }, event)),\n    autoFocus,\n  };\n\n  if (invalid) {\n    attributes['aria-invalid'] = invalid;\n  }\n\n  return (\n    <button ref={ref} {...attributes}>\n      {children}\n      {!hideCaret && (\n        <span className={styles.arrow}>\n          <InternalIcon name=\"caret-down-filled\" variant={disabled ? 'disabled' : 'normal'} />\n        </span>\n      )}\n    </button>\n  );\n};\n\nexport namespace ButtonTriggerProps {\n  export interface Ref {\n    focus(): void;\n  }\n}\n\nexport default React.forwardRef(ButtonTrigger);\n","\n    import './styles.scoped.css';\n    export default {\n  \"option\": \"awsui_option_1p2cx_ymy45_97\",\n  \"disabled\": \"awsui_disabled_1p2cx_ymy45_115\",\n  \"parent\": \"awsui_parent_1p2cx_ymy45_118\",\n  \"highlighted\": \"awsui_highlighted_1p2cx_ymy45_121\",\n  \"content\": \"awsui_content_1p2cx_ymy45_125\",\n  \"label-content\": \"awsui_label-content_1p2cx_ymy45_132\",\n  \"label\": \"awsui_label_1p2cx_ymy45_132\",\n  \"tag\": \"awsui_tag_1p2cx_ymy45_139\",\n  \"label-tag\": \"awsui_label-tag_1p2cx_ymy45_140\",\n  \"label-prefix\": \"awsui_label-prefix_1p2cx_ymy45_151\",\n  \"tags\": \"awsui_tags_1p2cx_ymy45_164\",\n  \"description\": \"awsui_description_1p2cx_ymy45_165\",\n  \"selected\": \"awsui_selected_1p2cx_ymy45_176\",\n  \"icon\": \"awsui_icon_1p2cx_ymy45_190\",\n  \"icon-size-big\": \"awsui_icon-size-big_1p2cx_ymy45_197\",\n  \"filtering-match-highlight\": \"awsui_filtering-match-highlight_1p2cx_ymy45_201\",\n  \"trigger-variant\": \"awsui_trigger-variant_1p2cx_ymy45_216\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport styles from './styles.css.js';\nimport clsx from 'clsx';\n\nconst splitOnFiltering = (str: string, highlightText: string) => {\n  // Filtering needs to be case insensitive\n  const filteringPattern = highlightText.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&');\n  const regexp = new RegExp(filteringPattern, 'gi');\n  const noMatches = str.split(regexp);\n  const matches = str.match(regexp);\n\n  return { noMatches, matches };\n};\n\nexport interface HighlightMatchProps {\n  str?: string;\n  highlightText?: string;\n}\n\nconst Highlight = ({ str }: HighlightMatchProps) =>\n  str ? <span className={clsx(styles['filtering-match-highlight'])}>{str}</span> : null;\n\nexport default function HighlightMatch({ str, highlightText }: HighlightMatchProps) {\n  if (!str || !highlightText) {\n    return <span>{str}</span>;\n  }\n\n  if (str === highlightText) {\n    return <Highlight str={str} />;\n  }\n\n  const { noMatches, matches } = splitOnFiltering(str, highlightText);\n\n  const highlighted: (string | JSX.Element)[] = [];\n\n  noMatches.forEach((noMatch, idx) => {\n    highlighted.push(<span key={`noMatch-${idx}`}>{noMatch}</span>);\n\n    if (matches && idx < matches.length) {\n      highlighted.push(<Highlight key={`match-${idx}`} str={matches[idx]} />);\n    }\n  });\n\n  return <span>{highlighted}</span>;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport styles from './styles.css.js';\nimport clsx from 'clsx';\nimport React from 'react';\nimport { IconProps } from '../../../icon/interfaces';\nimport InternalIcon from '../../../icon/internal';\nimport HighlightMatch from './highlight-match';\n\ninterface LabelProps {\n  label?: string;\n  prefix?: string;\n  highlightText?: string;\n  triggerVariant: boolean;\n}\nexport const Label = ({ label, prefix, highlightText, triggerVariant }: LabelProps) => (\n  <span className={clsx(styles.label, triggerVariant && styles['trigger-variant'])}>\n    {prefix && (\n      <span className={clsx(styles['label-prefix'], triggerVariant && styles['trigger-variant'])}>{prefix} </span>\n    )}\n    <HighlightMatch str={label} highlightText={highlightText} />\n  </span>\n);\n\ninterface LabelTagProps {\n  labelTag?: string;\n  highlightText?: string;\n  triggerVariant: boolean;\n}\nexport const LabelTag = ({ labelTag, highlightText, triggerVariant }: LabelTagProps) =>\n  labelTag ? (\n    <span className={clsx(styles['label-tag'], triggerVariant && styles['trigger-variant'])}>\n      <HighlightMatch str={labelTag} highlightText={highlightText} />\n    </span>\n  ) : null;\n\ninterface DescriptionProps {\n  description?: string;\n  highlightedOption: boolean;\n  highlightText?: string;\n  selectedOption: boolean;\n  triggerVariant: boolean;\n}\nexport const Description = ({\n  description,\n  highlightedOption,\n  highlightText,\n  selectedOption,\n  triggerVariant,\n}: DescriptionProps) =>\n  description ? (\n    <span\n      className={clsx(styles.description, {\n        [styles['trigger-variant']]: triggerVariant,\n        [styles.highlighted]: highlightedOption,\n        [styles.selected]: selectedOption,\n      })}\n    >\n      <HighlightMatch str={description} highlightText={highlightText} />\n    </span>\n  ) : null;\n\ninterface TagsProps {\n  tags?: ReadonlyArray<string>;\n  highlightedOption: boolean;\n  highlightText?: string;\n  selectedOption: boolean;\n  triggerVariant: boolean;\n}\nexport const Tags = ({ tags, highlightedOption, highlightText, selectedOption, triggerVariant }: TagsProps) =>\n  tags ? (\n    <span\n      className={clsx(styles.tags, {\n        [styles.highlighted]: highlightedOption,\n        [styles.selected]: selectedOption,\n      })}\n    >\n      {tags.map((tag, idx) => (\n        <span key={idx} className={clsx(styles.tag, triggerVariant && styles['trigger-variant'])}>\n          <HighlightMatch str={tag} highlightText={highlightText} />\n        </span>\n      ))}\n    </span>\n  ) : null;\n\ninterface FilteringTagProps {\n  filteringTags?: ReadonlyArray<string>;\n  highlightedOption: boolean;\n  highlightText?: string;\n  selectedOption: boolean;\n  triggerVariant: boolean;\n}\nexport const FilteringTags = ({\n  filteringTags,\n  highlightedOption,\n  highlightText,\n  selectedOption,\n  triggerVariant,\n}: FilteringTagProps) => {\n  if (!highlightText || !filteringTags) {\n    return null;\n  }\n\n  const searchElement = highlightText.toLowerCase();\n\n  return (\n    <span\n      className={clsx(styles.tags, {\n        [styles.highlighted]: highlightedOption,\n        [styles.selected]: selectedOption,\n      })}\n    >\n      {filteringTags.map((filteringTag, key) => {\n        const match = filteringTag.toLowerCase().indexOf(searchElement) !== -1;\n        if (match) {\n          return (\n            <span\n              className={clsx(styles.tag, triggerVariant && styles['trigger-variant'])}\n              key={key}\n              aria-disabled={true}\n            >\n              <HighlightMatch str={filteringTag} highlightText={highlightText} />\n            </span>\n          );\n        }\n        return null;\n      })}\n    </span>\n  );\n};\n\nexport const OptionIcon = (props: IconProps) => {\n  if (!props.name && !props.url && !props.svg) {\n    return null;\n  }\n\n  return (\n    <span className={clsx(styles.icon, props.size === 'big' && [styles[`icon-size-big`]])}>\n      <InternalIcon {...props} />\n    </span>\n  );\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { OptionProps } from './interfaces';\nimport { Label, LabelTag, Description, Tags, FilteringTags, OptionIcon } from './option-parts';\nimport { getBaseProps } from '../../base-component';\nimport { warnOnce } from '../../logging';\nimport { isDevelopment } from '../../is-development';\n\nexport { OptionProps };\n\nfunction validateStringValue(value: string | undefined, propertyName: string) {\n  if (typeof value !== 'undefined' && typeof value !== 'string') {\n    warnOnce(\n      'DropdownOption',\n      `This component only supports string values, but \"option.${propertyName}\" has ${typeof value} type. The component may work incorrectly.`\n    );\n  }\n}\n\nconst Option = ({\n  option,\n  highlightText,\n  triggerVariant = false,\n  isGroupOption = false,\n  isGenericGroup = true,\n  highlightedOption = false,\n  selectedOption = false,\n  ...restProps\n}: OptionProps) => {\n  if (!option) {\n    return null;\n  }\n  const { disabled } = option;\n  const baseProps = getBaseProps(restProps);\n\n  if (isDevelopment) {\n    validateStringValue(option.label, 'label');\n    validateStringValue(option.description, 'description');\n    validateStringValue(option.labelTag, 'labelTag');\n    option.tags?.forEach((tag, index) => {\n      validateStringValue(tag, `tags[${index}]`);\n    });\n    option.filteringTags?.forEach((tag, index) => {\n      validateStringValue(tag, `filteringTags[${index}]`);\n    });\n  }\n\n  const className = clsx(\n    styles.option,\n    disabled && styles.disabled,\n    isGroupOption && styles.parent,\n    highlightedOption && styles.highlighted\n  );\n\n  const icon = option.__customIcon || (\n    <OptionIcon\n      name={option.iconName}\n      url={option.iconUrl}\n      svg={option.iconSvg}\n      alt={option.iconAlt}\n      size={option.description || option.tags ? 'big' : 'normal'}\n    />\n  );\n\n  // The option is conditionally assigned 'title' and 'aria-disabled' attributes to ensure it is viewed as a (generic) group  by assistive technology only when necessary.\n  // Omitting the props might be necessary if they are provided on the parent element to avoid nested groups.\n  // See https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/generic_role\n  const genericGroupProps = isGenericGroup\n    ? {\n        title: option.label ?? option.value,\n        'aria-disabled': disabled,\n      }\n    : undefined;\n\n  return (\n    <span data-value={option.value} className={className} lang={option.lang} {...genericGroupProps} {...baseProps}>\n      {icon}\n      <span className={clsx(styles.content)}>\n        <span className={clsx(styles['label-content'])}>\n          <Label\n            label={option.label ?? option.value}\n            prefix={option.__labelPrefix}\n            highlightText={highlightText}\n            triggerVariant={triggerVariant}\n          />\n          <LabelTag labelTag={option.labelTag} highlightText={highlightText} triggerVariant={triggerVariant} />\n        </span>\n        <Description\n          description={option.description}\n          highlightedOption={highlightedOption}\n          selectedOption={selectedOption}\n          highlightText={highlightText}\n          triggerVariant={triggerVariant}\n        />\n        <Tags\n          tags={option.tags}\n          highlightedOption={highlightedOption}\n          selectedOption={selectedOption}\n          highlightText={highlightText}\n          triggerVariant={triggerVariant}\n        />\n        <FilteringTags\n          filteringTags={option.filteringTags}\n          highlightedOption={highlightedOption}\n          selectedOption={selectedOption}\n          highlightText={highlightText}\n          triggerVariant={triggerVariant}\n        />\n      </span>\n    </span>\n  );\n};\n\nexport default Option;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { useMergeRefs } from '../../internal/hooks/use-merge-refs';\nimport clsx from 'clsx';\nimport ButtonTrigger from '../../internal/components/button-trigger';\nimport { SelectProps } from '../interfaces';\nimport styles from './styles.css.js';\nimport { OptionDefinition } from '../../internal/components/option/interfaces';\nimport { FormFieldValidationControlProps } from '../../internal/context/form-field-context';\nimport Option from '../../internal/components/option';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\nimport { SelectTriggerProps } from '../utils/use-select';\nimport { joinStrings } from '../../internal/utils/strings';\n\nexport interface TriggerProps extends FormFieldValidationControlProps {\n  placeholder: string | undefined;\n  disabled: boolean | undefined;\n  triggerProps: SelectTriggerProps;\n  selectedOption: OptionDefinition | null;\n  isOpen?: boolean;\n  triggerVariant?: SelectProps.TriggerVariant;\n  inFilteringToken?: boolean;\n}\n\nconst Trigger = React.forwardRef(\n  (\n    {\n      ariaLabelledby,\n      ariaDescribedby,\n      controlId,\n      invalid,\n      triggerProps,\n      selectedOption,\n      triggerVariant,\n      inFilteringToken,\n      isOpen,\n      placeholder,\n      disabled,\n    }: TriggerProps,\n    ref: React.Ref<HTMLButtonElement>\n  ) => {\n    const generatedId = useUniqueId();\n    const id = controlId ?? generatedId;\n    const triggerContentId = useUniqueId('trigger-content-');\n\n    let triggerContent = null;\n    if (!selectedOption) {\n      triggerContent = (\n        <span aria-disabled=\"true\" className={clsx(styles.placeholder, styles.trigger)} id={triggerContentId}>\n          {placeholder}\n        </span>\n      );\n    } else if (triggerVariant === 'option') {\n      triggerContent = <Option id={triggerContentId} option={{ ...selectedOption, disabled }} triggerVariant={true} />;\n    } else {\n      triggerContent = (\n        <span id={triggerContentId} className={styles.trigger}>\n          {selectedOption.label || selectedOption.value}\n        </span>\n      );\n    }\n\n    const mergedRef = useMergeRefs(triggerProps.ref, ref);\n\n    return (\n      <ButtonTrigger\n        {...triggerProps}\n        id={id}\n        ref={mergedRef}\n        pressed={isOpen}\n        disabled={disabled}\n        invalid={invalid}\n        inFilteringToken={inFilteringToken}\n        ariaDescribedby={ariaDescribedby}\n        ariaLabelledby={joinStrings(ariaLabelledby, triggerContentId)}\n      >\n        {triggerContent}\n      </ButtonTrigger>\n    );\n  }\n);\n\nexport default Trigger;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { DropdownOption, OptionDefinition, OptionGroup } from '../interfaces';\n\ntype SearchableField = 'value' | 'label' | 'description' | 'labelTag';\ntype SearchableTagField = 'tags' | 'filteringTags';\n\nconst searchableFields: SearchableField[] = ['value', 'label', 'description', 'labelTag'];\n\nexport const matchesString = (value: string | undefined, searchText: string, strictMatching: boolean): boolean => {\n  if (!value) {\n    return false;\n  }\n  const index = value.toLowerCase().indexOf(searchText);\n  return strictMatching ? index === 0 : index > -1;\n};\n\nconst matchesSingleOption = (dropdownOption: DropdownOption, text: string, strictMatching: boolean): boolean => {\n  const searchText = text.toLowerCase();\n\n  const option: OptionDefinition = dropdownOption.option;\n  const searchStrFields = (attr: SearchableField) => matchesString(option[attr], searchText, strictMatching);\n  const searchTagsFields = (attr: SearchableTagField) =>\n    option[attr]?.some(value => matchesString(value, searchText, strictMatching));\n\n  const searchableTagFields: SearchableTagField[] = ['tags'];\n  if (!strictMatching) {\n    searchableTagFields.push('filteringTags');\n  }\n\n  return searchableFields.some(searchStrFields) || searchableTagFields.some(searchTagsFields);\n};\n\nexport const filterOptions = (\n  options: ReadonlyArray<DropdownOption>,\n  searchText: string,\n  strictMatching = false\n): ReadonlyArray<DropdownOption> => {\n  if (searchText === '') {\n    return options;\n  }\n\n  let currentGroup: DropdownOption | null = null;\n  let parentMatched = false;\n  return options.reduce<DropdownOption[]>((acc, option) => {\n    if (option.type === 'parent') {\n      parentMatched = false;\n      currentGroup = option;\n      if (matchesSingleOption(option, searchText, strictMatching)) {\n        parentMatched = true;\n        acc.push(currentGroup);\n      }\n      return acc;\n    }\n    if (option.type !== 'child') {\n      currentGroup = null;\n      parentMatched = false;\n    }\n    if (parentMatched) {\n      acc.push(option);\n    } else if (matchesSingleOption(option, searchText, strictMatching)) {\n      if (currentGroup) {\n        acc.push(currentGroup);\n        currentGroup = null;\n      }\n      acc.push(option);\n    }\n    return acc;\n  }, []);\n};\n\nexport const isInteractive = (option?: DropdownOption) => !!option && !option.disabled && option.type !== 'parent';\n\nexport const isGroupInteractive = (option?: DropdownOption) => !!option && !option.disabled;\n\nexport const isGroup = (option?: OptionDefinition | OptionGroup): option is OptionGroup =>\n  !!option && 'options' in option;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\ninterface ListItem {\n  type?: string;\n}\ninterface TestIndexes {\n  throughIndex?: number;\n  groupIndex?: number;\n  inGroupIndex?: number;\n}\nconst testIndexMap = new WeakMap<ListItem, TestIndexes>();\n//retrieves the test indexes of the option for the findOption and findOptionInGroup test-utils\nexport const getTestOptionIndexes = <T extends ListItem>(item: T) => testIndexMap.get(item);\nexport const generateTestIndexes = <T extends ListItem, Group extends object>(\n  filteredItems: ReadonlyArray<T>,\n  getParentGroup: (item: T) => Group | undefined\n) => {\n  let throughIndex = 1;\n  let groupIndex = 0;\n  let inGroupIndex = 1;\n  let currentGroup: Group | null = null;\n  filteredItems.forEach(item => {\n    if (!('type' in item)) {\n      testIndexMap.set(item, { throughIndex: throughIndex++ });\n    } else if (item.type === 'child') {\n      const parentGroup = getParentGroup(item);\n      if (parentGroup && parentGroup !== currentGroup) {\n        currentGroup = parentGroup;\n        inGroupIndex = 1;\n        testIndexMap.set(item, {\n          throughIndex: throughIndex++,\n          groupIndex: ++groupIndex,\n          inGroupIndex: inGroupIndex++,\n        });\n      } else {\n        testIndexMap.set(item, { throughIndex: throughIndex++, groupIndex, inGroupIndex: inGroupIndex++ });\n      }\n    }\n  });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { flattenOptions } from './flatten-options';\nimport { filterOptions } from './filter-options';\nimport { generateTestIndexes } from '../../options-list/utils/test-indexes';\nimport { SelectProps } from '../../../../select/interfaces';\n\nexport function prepareOptions(\n  options: SelectProps.Options,\n  filteringType: SelectProps.FilteringType,\n  filteringText: string\n) {\n  const { flatOptions, parentMap } = flattenOptions(options);\n  const filteredOptions = filteringType !== 'auto' ? flatOptions : filterOptions(flatOptions, filteringText);\n  generateTestIndexes(filteredOptions, parentMap.get.bind(parentMap));\n  return {\n    filteredOptions,\n    parentMap,\n    totalCount: flatOptions.length,\n    matchesCount: filteredOptions.length,\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { OptionGroup, OptionDefinition, DropdownOption } from '../interfaces';\n\nexport const flattenOptions = (options: ReadonlyArray<OptionDefinition | OptionGroup>) => {\n  const parentMap = new Map<DropdownOption, DropdownOption>();\n\n  const flatOptions = options.reduce<DropdownOption[]>((acc, option) => {\n    if ('options' in option) {\n      const { options, ...rest } = option;\n      const parentDropdownOption: DropdownOption = { type: 'parent', option };\n      const allOptionsDisabled = options.every(option => option.disabled);\n      if (option.disabled || allOptionsDisabled) {\n        parentDropdownOption.disabled = true;\n      }\n      acc.push(parentDropdownOption);\n      options.forEach(child => {\n        const childDropdownOption: DropdownOption = { type: 'child', option: child };\n        if (rest.disabled || child.disabled) {\n          childDropdownOption.disabled = true;\n        }\n        acc.push(childDropdownOption);\n        parentMap.set(childDropdownOption, parentDropdownOption);\n      });\n    } else {\n      const dropdownOption: DropdownOption = { option };\n      if (option.disabled) {\n        dropdownOption.disabled = true;\n      }\n      acc.push(dropdownOption);\n    }\n\n    return acc;\n  }, []);\n\n  return {\n    flatOptions,\n    parentMap,\n  };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useCallback, useState } from 'react';\n\nexport type HighlightType = 'keyboard' | 'mouse';\n\nexport interface HighlightedOptionProps<OptionType> {\n  options: readonly OptionType[];\n  isHighlightable: (option: OptionType) => boolean;\n}\n\nexport interface HighlightedOptionState<OptionType> {\n  highlightType: HighlightType;\n  highlightedIndex: number;\n  highlightedOption?: OptionType;\n}\n\nexport interface HighlightedOptionHandlers<OptionType> {\n  // Mouse handlers\n  setHighlightedIndexWithMouse(index: number): void;\n  // Keyboard handlers\n  moveHighlightWithKeyboard(direction: -1 | 1): void;\n  highlightOptionWithKeyboard(option: OptionType): void;\n  resetHighlightWithKeyboard(): void;\n  goHomeWithKeyboard(): void;\n  goEndWithKeyboard(): void;\n}\n\nexport function useHighlightedOption<OptionType>({\n  options,\n  isHighlightable,\n}: HighlightedOptionProps<OptionType>): [HighlightedOptionState<OptionType>, HighlightedOptionHandlers<OptionType>] {\n  const [highlightedIndex, setHighlightedIndexState] = useState(-1);\n  const [highlightType, setHighlightType] = useState<HighlightType>('keyboard');\n  const setHighlightedIndex = useCallback((index: number, highlightType: HighlightType) => {\n    setHighlightedIndexState(index);\n    setHighlightType(highlightType);\n  }, []);\n\n  const highlightedOption =\n    options[highlightedIndex] && isHighlightable(options[highlightedIndex]) ? options[highlightedIndex] : undefined;\n\n  const moveHighlightFrom = (direction: -1 | 1, startIndex = highlightedIndex, highlightType: HighlightType) => {\n    let newIndex = startIndex;\n    do {\n      newIndex += direction;\n    } while (options[newIndex] && !isHighlightable(options[newIndex]));\n\n    if (options[newIndex]) {\n      setHighlightedIndex(newIndex, highlightType);\n    }\n  };\n\n  const moveHighlight = (direction: -1 | 1, highlightType: HighlightType) =>\n    moveHighlightFrom(direction, highlightedIndex, highlightType);\n\n  const highlightOption = useCallback(\n    (option: OptionType, highlightType: HighlightType) => {\n      const index = options.indexOf(option);\n      setHighlightedIndex(index, highlightType);\n    },\n    [options, setHighlightedIndex]\n  );\n\n  return [\n    { highlightType, highlightedIndex, highlightedOption },\n    {\n      setHighlightedIndexWithMouse: (index: number) => setHighlightedIndex(index, 'mouse'),\n      moveHighlightWithKeyboard: (direction: -1 | 1) => moveHighlight(direction, 'keyboard'),\n      highlightOptionWithKeyboard: (option: OptionType) => highlightOption(option, 'keyboard'),\n      resetHighlightWithKeyboard: () => setHighlightedIndex(-1, 'keyboard'),\n      goHomeWithKeyboard: () => moveHighlightFrom(1, -1, 'keyboard'),\n      goEndWithKeyboard: () => moveHighlightFrom(-1, options.length, 'keyboard'),\n    },\n  ];\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useState } from 'react';\n\ninterface OpenStateProps {\n  onOpen?: () => void;\n  onClose?: () => void;\n}\n\nexport const useOpenState = ({ onOpen, onClose }: OpenStateProps) => {\n  const [isOpen, setIsOpen] = useState(false);\n\n  const openDropdown = () => {\n    if (!isOpen) {\n      setIsOpen(true);\n      onOpen?.();\n    }\n  };\n\n  const closeDropdown = () => {\n    if (isOpen) {\n      setIsOpen(false);\n      onClose?.();\n    }\n  };\n\n  const toggleDropdown = () => {\n    if (isOpen) {\n      closeDropdown();\n    } else {\n      openDropdown();\n    }\n  };\n\n  return { isOpen, openDropdown, closeDropdown, toggleDropdown };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const getOptionId = (menuId: string, index: number) => {\n  if (index < 0) {\n    return undefined;\n  }\n  return `${menuId}-option-${index}`;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { DropdownOption, OptionDefinition } from '../../internal/components/option/interfaces';\n\nexport const connectOptionsByValue = (\n  options: ReadonlyArray<DropdownOption>,\n  selectedOptions: ReadonlyArray<OptionDefinition>\n): ReadonlyArray<DropdownOption> => {\n  return (selectedOptions || []).map(selectedOption => {\n    for (const dropdownOption of options) {\n      if (\n        dropdownOption.type !== 'parent' &&\n        (dropdownOption.option as OptionDefinition).value === selectedOption.value\n      ) {\n        return dropdownOption;\n      }\n    }\n    return { option: selectedOption };\n  });\n};\n\nexport const findOptionIndex = (options: ReadonlyArray<OptionDefinition>, option: OptionDefinition) => {\n  for (let index = 0; index < options.length; index++) {\n    const __option = options[index];\n    if (__option === option || __option.value === option.value) {\n      return index;\n    }\n  }\n  return -1;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { RefObject } from 'react';\nimport { DropdownProps } from '../../internal/components/dropdown/interfaces';\nimport { DropdownOption, OptionDefinition, OptionGroup } from '../../internal/components/option/interfaces';\nimport { isInteractive, isGroupInteractive, isGroup } from '../../internal/components/option/utils/filter-options';\nimport { useEffect, useRef } from 'react';\nimport { useHighlightedOption } from '../../internal/components/options-list/utils/use-highlight-option';\nimport { useOpenState } from '../../internal/components/options-list/utils/use-open-state';\nimport { useMenuKeyboard, useTriggerKeyboard } from '../../internal/components/options-list/utils/use-keyboard';\nimport { getOptionId } from '../../internal/components/options-list/utils/use-ids';\nimport { connectOptionsByValue } from './connect-options';\nimport useForwardFocus from '../../internal/hooks/forward-focus';\nimport { OptionsListProps } from '../../internal/components/options-list';\nimport { FilterProps } from '../parts/filter';\nimport { ItemProps } from '../parts/item';\nimport { usePrevious } from '../../internal/hooks/use-previous';\nimport { BaseKeyDetail, NonCancelableEventHandler, fireNonCancelableEvent } from '../../internal/events';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\nimport { DropdownStatusProps } from '../../internal/components/dropdown-status';\n\nexport type MenuProps = Omit<OptionsListProps, 'children'> & { ref: React.RefObject<HTMLUListElement> };\nexport type GetOptionProps = (option: DropdownOption, index: number) => ItemProps;\n\ninterface UseSelectProps {\n  selectedOptions: ReadonlyArray<OptionDefinition>;\n  updateSelectedOption: (option: OptionDefinition) => void;\n  options: ReadonlyArray<DropdownOption>;\n  filteringType: string;\n  keepOpen?: boolean;\n  onBlur?: NonCancelableEventHandler;\n  onFocus?: NonCancelableEventHandler;\n  externalRef: React.Ref<any>;\n  fireLoadItems: (filteringText: string) => void;\n  setFilteringValue: (filteringText: string) => void;\n  useInteractiveGroups?: boolean;\n  statusType: DropdownStatusProps.StatusType;\n}\n\nexport interface SelectTriggerProps {\n  ref: RefObject<HTMLButtonElement>;\n  onMouseDown?: (event: CustomEvent) => void;\n  onKeyDown?: (event: CustomEvent<BaseKeyDetail>) => void;\n  onFocus: NonCancelableEventHandler;\n  autoFocus?: boolean;\n}\n\nexport function useSelect({\n  selectedOptions,\n  updateSelectedOption,\n  options,\n  filteringType,\n  onBlur,\n  onFocus,\n  externalRef,\n  keepOpen,\n  fireLoadItems,\n  setFilteringValue,\n  useInteractiveGroups = false,\n  statusType,\n}: UseSelectProps) {\n  const interactivityCheck = useInteractiveGroups ? isGroupInteractive : isInteractive;\n\n  const isHighlightable = (option?: DropdownOption) => !!option && (useInteractiveGroups || option.type !== 'parent');\n\n  const filterRef = useRef<HTMLInputElement>(null);\n  const triggerRef = useRef<HTMLButtonElement>(null);\n  const menuRef = useRef<HTMLUListElement>(null);\n  const hasFilter = filteringType !== 'none';\n  const activeRef = hasFilter ? filterRef : menuRef;\n  const __selectedOptions = connectOptionsByValue(options, selectedOptions);\n  const __selectedValuesSet = selectedOptions.reduce((selectedValuesSet: Set<string>, item: OptionDefinition) => {\n    if (item.value) {\n      selectedValuesSet.add(item.value);\n    }\n    return selectedValuesSet;\n  }, new Set<string>());\n  const [\n    { highlightType, highlightedOption, highlightedIndex },\n    {\n      moveHighlightWithKeyboard,\n      resetHighlightWithKeyboard,\n      setHighlightedIndexWithMouse,\n      highlightOptionWithKeyboard,\n      goHomeWithKeyboard,\n      goEndWithKeyboard,\n    },\n  ] = useHighlightedOption({ options, isHighlightable });\n\n  const { isOpen, openDropdown, closeDropdown, toggleDropdown } = useOpenState({\n    onOpen: () => fireLoadItems(''),\n    onClose: () => {\n      resetHighlightWithKeyboard();\n      setFilteringValue('');\n    },\n  });\n\n  const handleFocus = () => {\n    fireNonCancelableEvent(onFocus, {});\n  };\n\n  const handleBlur = () => {\n    fireNonCancelableEvent(onBlur, {});\n    closeDropdown();\n  };\n\n  const hasSelectedOption = __selectedOptions.length > 0;\n  const menuId = useUniqueId('option-list');\n  const highlightedOptionId = getOptionId(menuId, highlightedIndex);\n\n  const selectOption = (option?: DropdownOption) => {\n    const optionToSelect = option || highlightedOption;\n    if (!optionToSelect || !interactivityCheck(optionToSelect)) {\n      return;\n    }\n    updateSelectedOption(optionToSelect.option);\n    if (!keepOpen) {\n      triggerRef.current?.focus();\n      closeDropdown();\n    }\n  };\n\n  const activeKeyDownHandler = useMenuKeyboard({\n    moveHighlight: moveHighlightWithKeyboard,\n    selectOption,\n    goHome: goHomeWithKeyboard,\n    goEnd: goEndWithKeyboard,\n    closeDropdown: () => {\n      triggerRef.current?.focus();\n      closeDropdown();\n    },\n    preventNativeSpace: !hasFilter,\n  });\n\n  const triggerKeyDownHandler = useTriggerKeyboard({ openDropdown, goHome: goHomeWithKeyboard });\n\n  const getDropdownProps: () => Pick<DropdownProps, 'onFocus' | 'onBlur'> = () => ({\n    onFocus: handleFocus,\n    onBlur: handleBlur,\n  });\n\n  const getTriggerProps = (disabled = false, autoFocus = false) => {\n    const triggerProps: SelectTriggerProps = {\n      ref: triggerRef,\n      onFocus: () => closeDropdown(),\n      autoFocus,\n    };\n    if (!disabled) {\n      triggerProps.onMouseDown = (event: CustomEvent) => {\n        event.preventDefault(); // prevent current focus from blurring as it immediately closes the dropdown\n        if (isOpen) {\n          triggerRef.current?.focus();\n        }\n        toggleDropdown();\n      };\n      triggerProps.onKeyDown = triggerKeyDownHandler;\n    }\n    return triggerProps;\n  };\n\n  const getFilterProps = (): Partial<FilterProps> => {\n    if (!hasFilter) {\n      return {};\n    }\n\n    return {\n      ref: filterRef,\n      onKeyDown: activeKeyDownHandler,\n      onChange: event => {\n        setFilteringValue(event.detail.value);\n        resetHighlightWithKeyboard();\n      },\n      __onDelayedInput: event => {\n        fireLoadItems(event.detail.value);\n      },\n      __nativeAttributes: {\n        'aria-activedescendant': highlightedOptionId,\n        ['aria-owns']: menuId,\n        ['aria-controls']: menuId,\n      },\n    };\n  };\n\n  const getMenuProps = () => {\n    const menuProps: MenuProps = {\n      id: menuId,\n      ref: menuRef,\n      open: isOpen,\n      onMouseUp: itemIndex => {\n        if (itemIndex > -1) {\n          selectOption(options[itemIndex]);\n        }\n      },\n      onMouseMove: itemIndex => {\n        if (itemIndex > -1) {\n          setHighlightedIndexWithMouse(itemIndex);\n        }\n      },\n      statusType,\n    };\n    if (!hasFilter) {\n      menuProps.onKeyDown = activeKeyDownHandler;\n      menuProps.nativeAttributes = {\n        'aria-activedescendant': highlightedOptionId,\n      };\n    }\n    return menuProps;\n  };\n  const getGroupState = (option: OptionGroup) => {\n    const totalSelected = option.options.filter(item => !!item.value && __selectedValuesSet.has(item.value)).length;\n    const hasSelected = totalSelected > 0;\n    const allSelected = totalSelected === option.options.length;\n    return {\n      selected: hasSelected && allSelected,\n      indeterminate: hasSelected && !allSelected,\n    };\n  };\n\n  const getOptionProps = (option: DropdownOption, index: number) => {\n    const highlighted = option === highlightedOption;\n    const groupState = isGroup(option.option) ? getGroupState(option.option) : undefined;\n    const selected = __selectedOptions.indexOf(option) > -1 || !!groupState?.selected;\n    const nextOption = options[index + 1]?.option;\n    const isNextSelected =\n      !!nextOption && isGroup(nextOption)\n        ? getGroupState(nextOption).selected\n        : __selectedOptions.indexOf(options[index + 1]) > -1;\n\n    const optionProps: any = {\n      key: index,\n      option,\n      highlighted,\n      selected,\n      isNextSelected,\n      indeterminate: !!groupState?.indeterminate,\n      ['data-mouse-target']: isHighlightable(option) ? index : -1,\n      id: getOptionId(menuId, index),\n    };\n\n    return optionProps;\n  };\n\n  const prevOpen = usePrevious<boolean>(isOpen);\n  useEffect(() => {\n    // highlight the first selected option, when opening the Select component without filter input\n    // keep the focus in the filter input when opening, so that screenreader can recognize the combobox\n    if (isOpen && !prevOpen && hasSelectedOption && !hasFilter) {\n      setHighlightedIndexWithMouse(options.indexOf(__selectedOptions[0]));\n    }\n  }, [isOpen, __selectedOptions, hasSelectedOption, setHighlightedIndexWithMouse, options, prevOpen, hasFilter]);\n\n  useEffect(() => {\n    if (isOpen) {\n      // dropdown-fit calculations ensure that the dropdown will fit inside the current\n      // viewport, so prevent the browser from trying to scroll it into view (e.g. if\n      // scroll-padding-top is set on a parent)\n      activeRef.current?.focus({ preventScroll: true });\n    }\n  }, [isOpen, activeRef]);\n\n  useForwardFocus(externalRef, triggerRef as React.RefObject<HTMLElement>);\n  const highlightedGroupSelected =\n    !!highlightedOption && isGroup(highlightedOption.option) && getGroupState(highlightedOption.option).selected;\n  const announceSelected =\n    !!highlightedOption && (__selectedOptions.indexOf(highlightedOption) > -1 || highlightedGroupSelected);\n\n  return {\n    isOpen,\n    highlightedOption,\n    highlightedIndex,\n    highlightType,\n    getTriggerProps,\n    getDropdownProps,\n    getMenuProps,\n    getFilterProps,\n    getOptionProps,\n    highlightOption: highlightOptionWithKeyboard,\n    selectOption,\n    announceSelected,\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useCallback } from 'react';\nimport { KeyCode } from '../../../keycode';\nimport { BaseKeyDetail, CancelableEventHandler } from '../../../events';\n\nconst HOME = 36;\nconst END = 35;\n\ninterface UseMenuKeyboard {\n  (inputProps: {\n    moveHighlight: (direction: -1 | 1, startIndex?: number) => void;\n    selectOption: () => void;\n    goHome: () => void;\n    goEnd: () => void;\n    closeDropdown: () => void;\n    preventNativeSpace?: boolean;\n  }): CancelableEventHandler<BaseKeyDetail>;\n}\n\nexport const useMenuKeyboard: UseMenuKeyboard = ({\n  moveHighlight,\n  selectOption,\n  goHome,\n  goEnd,\n  closeDropdown,\n  preventNativeSpace = false,\n}) => {\n  return useCallback(\n    (e: CustomEvent<BaseKeyDetail>) => {\n      switch (e.detail.keyCode) {\n        case KeyCode.up:\n          e.preventDefault();\n          moveHighlight(-1);\n          break;\n        case KeyCode.down:\n          e.preventDefault();\n          moveHighlight(1);\n          break;\n        case HOME:\n          goHome();\n          break;\n        case END:\n          goEnd();\n          break;\n        case KeyCode.escape:\n          closeDropdown();\n          break;\n        case KeyCode.enter:\n          e.preventDefault();\n          selectOption();\n          break;\n        case KeyCode.space:\n          if (preventNativeSpace) {\n            e.preventDefault();\n            selectOption();\n          }\n      }\n    },\n    [moveHighlight, selectOption, goHome, goEnd, closeDropdown, preventNativeSpace]\n  );\n};\n\ninterface UseTriggerKeyboard {\n  (inputProps: { openDropdown: () => void; goHome: () => void }): CancelableEventHandler<BaseKeyDetail>;\n}\n\nexport const useTriggerKeyboard: UseTriggerKeyboard = ({ openDropdown, goHome }) => {\n  return useCallback(\n    (e: CustomEvent<BaseKeyDetail>) => {\n      switch (e.detail.keyCode) {\n        case KeyCode.up:\n        case KeyCode.down:\n          e.preventDefault();\n          goHome();\n          openDropdown();\n          break;\n        case KeyCode.space:\n        case KeyCode.enter:\n          e.preventDefault();\n          openDropdown();\n          break;\n      }\n    },\n    [openDropdown, goHome]\n  );\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isDevelopment } from '../../internal/is-development';\nimport { warnOnce } from '../../internal/logging';\n\nexport function checkOptionValueField<ValueType extends ReadonlyArray<any>>(\n  componentName: string,\n  propertyName: string,\n  propertyValue: ValueType | undefined\n) {\n  if (isDevelopment) {\n    if (!propertyValue) {\n      return;\n    }\n\n    const valuePropertyMissing = !propertyValue.every(element => {\n      return 'options' in element || 'value' in element;\n    });\n\n    if (valuePropertyMissing) {\n      warnOnce(\n        componentName,\n        `You provided an \\`${propertyName}\\` prop where at least one non-group array element is missing the \\`value\\` field. This field is required for all options without sub-items.`\n      );\n    }\n  }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef } from 'react';\nimport { KeyCode } from '../../internal/keycode';\nimport {\n  filterOptions,\n  isInteractive,\n  isGroupInteractive,\n  isGroup,\n} from '../../internal/components/option/utils/filter-options';\nimport { DropdownOption, OptionDefinition, OptionGroup } from '../../internal/components/option/interfaces';\nimport { useDebounceCallback } from '../../internal/hooks/use-debounce-callback';\n\nexport const isChar = (keyCode: number): boolean => {\n  return [0, KeyCode.enter, KeyCode.space, KeyCode.tab].indexOf(keyCode) === -1;\n};\n\nexport const isRepeatedChar = (str: string) => str.split('').every(c => c === str[0]);\n\ninterface UseNativeSearchProps {\n  isEnabled: boolean;\n  options: ReadonlyArray<DropdownOption>;\n  highlightOption: (option: DropdownOption) => void;\n  highlightedOption: OptionDefinition | undefined | null;\n  useInteractiveGroups?: boolean;\n}\n\nfunction findMatchingOption(\n  options: ReadonlyArray<DropdownOption>,\n  searchText: string,\n  currentHighlight: OptionDefinition | OptionGroup | undefined | null,\n  useInteractiveGroups?: boolean\n) {\n  const interactivityCheck = useInteractiveGroups ? isGroupInteractive : isInteractive;\n  const filter = (searchText: string) =>\n    filterOptions(options, searchText, true).filter(option => interactivityCheck(option));\n  const matchingOptions = filter(searchText);\n\n  if (matchingOptions.length === 1) {\n    return matchingOptions[0];\n  }\n\n  // Hit the same char over and over, we assume they want to cycle through\n  if (currentHighlight && searchText.length > 1 && isRepeatedChar(searchText)) {\n    const matchingOptions = filter(searchText[0]);\n\n    if (matchingOptions.length > 0) {\n      //handling OptionGroups when useInteractiveGroups is set\n      let active: number = isGroup(currentHighlight)\n        ? matchingOptions.map(({ option }) => option).indexOf(currentHighlight)\n        : matchingOptions\n            .map(({ option }) => (option as OptionDefinition).value)\n            .indexOf((currentHighlight as OptionDefinition).value);\n\n      // Pick the next thing (if something with this prefix wasn't selected\n      // we'll end up with the first option)\n      active += 1;\n      active = active % matchingOptions.length;\n      return matchingOptions[active];\n    }\n  }\n\n  // We have multiple things that start with this prefix.  Based on the\n  // behavior of native select, this is considered after the repeated case\n  if (matchingOptions.length > 0) {\n    return matchingOptions[0];\n  }\n  return null;\n}\n\nexport function useNativeSearch({\n  isEnabled,\n  options,\n  highlightOption,\n  highlightedOption,\n  useInteractiveGroups,\n}: UseNativeSearchProps) {\n  const value = useRef('');\n\n  const delayedResetValue = useDebounceCallback(() => (value.current = ''), 500);\n\n  return (event: React.KeyboardEvent) => {\n    if (!isEnabled) {\n      return;\n    }\n\n    const { charCode } = event;\n    if (!isChar(charCode)) {\n      return;\n    }\n    delayedResetValue();\n    const newValue = value.current + String.fromCharCode(charCode);\n    value.current = newValue;\n\n    const nextHighlight = findMatchingOption(options, newValue, highlightedOption, useInteractiveGroups);\n    if (nextHighlight) {\n      highlightOption(nextHighlight);\n    }\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useRef } from 'react';\nimport { fireNonCancelableEvent } from '../../internal/events';\nimport { SelectProps } from '../interfaces';\nimport { OptionDefinition, OptionGroup } from '../../internal/components/option/interfaces';\nimport { DropdownStatusProps } from '../../internal/components/dropdown-status';\n\ninterface UseLoadItemsProps {\n  onLoadItems: SelectProps['onLoadItems'];\n  options: ReadonlyArray<OptionDefinition | OptionGroup>;\n  statusType: DropdownStatusProps.StatusType;\n}\n\nexport const useLoadItems = ({ onLoadItems, options, statusType }: UseLoadItemsProps) => {\n  const prevFilteringText = useRef<string | undefined>(undefined);\n\n  const fireLoadItems = (filteringText: string) => {\n    if (prevFilteringText.current === filteringText) {\n      return;\n    }\n    prevFilteringText.current = filteringText;\n    fireNonCancelableEvent(onLoadItems, { filteringText, firstPage: true, samePage: false });\n  };\n\n  const handleLoadMore = () => {\n    const firstPage = options.length === 0;\n    statusType === 'pending' &&\n      fireNonCancelableEvent(onLoadItems, {\n        firstPage,\n        samePage: false,\n        filteringText: prevFilteringText.current || '',\n      });\n  };\n\n  const handleRecoveryClick = () =>\n    fireNonCancelableEvent(onLoadItems, {\n      firstPage: false,\n      samePage: true,\n      filteringText: prevFilteringText.current || '',\n    });\n\n  return {\n    fireLoadItems,\n    handleLoadMore,\n    handleRecoveryClick,\n  };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { OptionDefinition, OptionGroup } from './interfaces';\n\nfunction defaultOptionDescription(option: OptionDefinition, parentGroup: OptionGroup | undefined) {\n  return [\n    parentGroup && parentGroup.label,\n    option.__labelPrefix,\n    option.label || option.value,\n    option.description,\n    option.labelTag,\n  ]\n    .concat(option.tags)\n    .filter(el => !!el)\n    .join(' ');\n}\n\nexport default defaultOptionDescription;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { OptionDefinition, OptionGroup } from '../../internal/components/option/interfaces';\nimport { SelectProps } from '../interfaces';\nimport { useEffect, useRef } from 'react';\nimport defaultOptionDescription from '../../internal/components/option/option-announcer';\n\ninterface OptionHolder {\n  option?: OptionDefinition | OptionGroup;\n}\n\n/**\n * The hook produces the live region string to be announced when an option is highlighted.\n * This is a workaround to account for the issues with assistive technologies.\n *\n * If the testing reveals no issues with the native announcements the live-region can be removed.\n */\nexport function useAnnouncement<Option extends OptionHolder>({\n  announceSelected,\n  highlightedOption,\n  getParent,\n  selectedAriaLabel,\n  renderHighlightedAriaLive,\n}: {\n  announceSelected: boolean;\n  highlightedOption?: Option;\n  getParent: (option: Option) => undefined | OptionGroup;\n  selectedAriaLabel?: string;\n  renderHighlightedAriaLive?: SelectProps.ContainingOptionAndGroupString;\n}) {\n  const prevAnnouncedGroup = useRef<OptionGroup | undefined>(undefined);\n\n  // Record previously announced group with a delay to account for possible re-renders of the hook.\n  useEffect(() => {\n    if (highlightedOption) {\n      const frameId = requestAnimationFrame(() => {\n        prevAnnouncedGroup.current = getParent(highlightedOption);\n      });\n      return () => cancelAnimationFrame(frameId);\n    }\n  });\n\n  if (!highlightedOption) {\n    return '';\n  }\n\n  const option = highlightedOption.option as OptionDefinition;\n  const parent = getParent(highlightedOption);\n  // Only announce parent group if it wasn't announced with previous option.\n  const group = parent && parent !== prevAnnouncedGroup.current ? parent : undefined;\n\n  // Use custom renderer if provided.\n  if (renderHighlightedAriaLive) {\n    return renderHighlightedAriaLive(option, group);\n  }\n\n  // Use default renderer with selected ARIA label if defined and relevant.\n  const selectedAnnouncement = announceSelected && selectedAriaLabel ? selectedAriaLabel : '';\n  const defaultDescription = defaultOptionDescription(option, group);\n  return [selectedAnnouncement, defaultDescription].filter(Boolean).join(' ');\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"options-list\": \"awsui_options-list_19gcf_1xlow_93\",\n  \"decrease-top-margin\": \"awsui_decrease-top-margin_19gcf_1xlow_115\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport { useMergeRefs } from '../../hooks/use-merge-refs';\nimport React, { useEffect, useRef } from 'react';\nimport { BaseComponentProps, getBaseProps } from '../../base-component';\nimport {\n  fireNonCancelableEvent,\n  NonCancelableEventHandler,\n  CancelableEventHandler,\n  BaseKeyDetail,\n  fireKeyboardEvent,\n} from '../../events';\nimport { findUpUntil } from '../../utils/dom';\nimport styles from './styles.css.js';\nimport { useStableEventHandler } from '../../hooks/use-stable-event-handler';\nimport { DropdownStatusProps } from '../dropdown-status';\n\nexport interface OptionsListProps extends BaseComponentProps {\n  open?: boolean;\n  statusType: DropdownStatusProps.StatusType;\n  /**\n   * Options list\n   */\n  children: React.ReactNode;\n  nativeAttributes?: Record<string, any>;\n  /**\n   * Called when more items need to be loaded.\n   */\n  onLoadMore?: NonCancelableEventHandler;\n  onKeyDown?: CancelableEventHandler<BaseKeyDetail>;\n  onBlur?: NonCancelableEventHandler<{ relatedTarget: Node | null }>;\n  onFocus?: NonCancelableEventHandler;\n  onMouseUp?: (itemIndex: number) => void;\n  onMouseMove?: (itemIndex: number) => void;\n  position?: React.CSSProperties['position'];\n  role?: 'listbox' | 'list' | 'menu';\n  ariaLabelledby?: string;\n  ariaDescribedby?: string;\n  decreaseTopMargin?: boolean;\n}\n\nconst BOTTOM_TRIGGER_OFFSET = 80;\n\nconst getItemIndex = (containerRef: React.RefObject<HTMLElement>, event: React.MouseEvent) => {\n  const target = findUpUntil(\n    event.target as HTMLElement,\n    element => element === containerRef.current || !!element.dataset.mouseTarget\n  );\n  const mouseTarget = target?.dataset.mouseTarget;\n  return mouseTarget ? parseInt(mouseTarget) : -1;\n};\n\nconst OptionsList = (\n  {\n    open,\n    statusType,\n    children,\n    nativeAttributes = {},\n    onKeyDown,\n    onBlur,\n    onFocus,\n    onLoadMore,\n    onMouseUp,\n    onMouseMove,\n    position = 'relative',\n    role = 'listbox',\n    decreaseTopMargin = false,\n    ariaLabelledby,\n    ariaDescribedby,\n    ...restProps\n  }: OptionsListProps,\n  ref: React.Ref<HTMLUListElement>\n) => {\n  const baseProps = getBaseProps(restProps);\n  const menuRef = useRef<HTMLUListElement>(null);\n\n  const handleScroll = useStableEventHandler(() => {\n    const scrollContainer = menuRef?.current;\n    if (scrollContainer) {\n      const bottomEdgePosition = scrollContainer.scrollTop + scrollContainer.clientHeight;\n      const remainingScrollHeight = scrollContainer.scrollHeight - bottomEdgePosition;\n      if (remainingScrollHeight < BOTTOM_TRIGGER_OFFSET) {\n        fireNonCancelableEvent(onLoadMore);\n      }\n    }\n  });\n\n  useEffect(() => {\n    if (open && statusType === 'pending') {\n      handleScroll();\n    }\n  }, [open, statusType, handleScroll]);\n\n  const className = clsx(styles['options-list'], {\n    [styles['decrease-top-margin']]: decreaseTopMargin,\n  });\n\n  const mergedRef = useMergeRefs(ref, menuRef);\n\n  return (\n    <ul\n      {...baseProps}\n      {...nativeAttributes}\n      className={className}\n      ref={mergedRef}\n      style={{ position }}\n      role={role}\n      onScroll={handleScroll}\n      onKeyDown={event => onKeyDown && fireKeyboardEvent(onKeyDown, event)}\n      onMouseMove={event => onMouseMove?.(getItemIndex(menuRef, event))}\n      onMouseUp={event => onMouseUp?.(getItemIndex(menuRef, event))}\n      onBlur={event => fireNonCancelableEvent(onBlur, { relatedTarget: event.relatedTarget })}\n      onFocus={() => fireNonCancelableEvent(onFocus)}\n      tabIndex={-1}\n      aria-labelledby={ariaLabelledby}\n      aria-describedby={ariaDescribedby}\n    >\n      {open && children}\n    </ul>\n  );\n};\n\nexport default React.forwardRef(OptionsList);\n","\n    import './styles.scoped.css';\n    export default {\n  \"selectable-item\": \"awsui_selectable-item_15o6u_1nn8q_93\",\n  \"pad-bottom\": \"awsui_pad-bottom_15o6u_1nn8q_115\",\n  \"has-background\": \"awsui_has-background_15o6u_1nn8q_124\",\n  \"highlighted\": \"awsui_highlighted_15o6u_1nn8q_127\",\n  \"selected\": \"awsui_selected_15o6u_1nn8q_127\",\n  \"disabled\": \"awsui_disabled_15o6u_1nn8q_141\",\n  \"next-item-selected\": \"awsui_next-item-selected_15o6u_1nn8q_149\",\n  \"is-keyboard\": \"awsui_is-keyboard_15o6u_1nn8q_157\",\n  \"parent\": \"awsui_parent_15o6u_1nn8q_161\",\n  \"interactiveGroups\": \"awsui_interactiveGroups_15o6u_1nn8q_165\",\n  \"child\": \"awsui_child_15o6u_1nn8q_180\",\n  \"virtual\": \"awsui_virtual_15o6u_1nn8q_195\",\n  \"measure-strut\": \"awsui_measure-strut_15o6u_1nn8q_206\",\n  \"measure-strut-first\": \"awsui_measure-strut-first_15o6u_1nn8q_215\",\n  \"screenreader-content\": \"awsui_screenreader-content_15o6u_1nn8q_219\",\n  \"option-content\": \"awsui_option-content_15o6u_1nn8q_225\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef, useLayoutEffect } from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { BaseComponentProps, getBaseProps } from '../../base-component';\nimport { HighlightType } from '../options-list/utils/use-highlight-option.js';\n\nexport type SelectableItemProps = BaseComponentProps & {\n  children: React.ReactNode;\n  selected?: boolean;\n  highlighted?: boolean;\n  disabled?: boolean;\n  hasBackground?: boolean;\n  isParent?: boolean;\n  isChild?: boolean;\n  virtualPosition?: number;\n  padBottom?: boolean;\n  isNextSelected?: boolean;\n  useInteractiveGroups?: boolean;\n  screenReaderContent?: string;\n  ariaPosinset?: number;\n  ariaSetsize?: number;\n  highlightType?: HighlightType;\n} & ({ ariaSelected?: boolean; ariaChecked?: never } | { ariaSelected?: never; ariaChecked?: boolean | 'mixed' });\n\nconst SelectableItem = (\n  {\n    children: content,\n    ariaSelected,\n    ariaChecked,\n    selected,\n    highlighted,\n    disabled,\n    hasBackground,\n    isParent,\n    isChild,\n    virtualPosition,\n    padBottom,\n    isNextSelected,\n    useInteractiveGroups,\n    screenReaderContent,\n    ariaPosinset,\n    ariaSetsize,\n    highlightType,\n    ...restProps\n  }: SelectableItemProps,\n  ref: React.Ref<HTMLDivElement>\n) => {\n  const { className, ...rest } = getBaseProps(restProps);\n  const classNames = clsx(className, styles['selectable-item'], {\n    [styles.selected]: selected,\n    [styles.highlighted]: highlighted,\n    [styles['has-background']]: hasBackground,\n    [styles.parent]: isParent,\n    [styles.child]: isChild,\n    [styles['is-keyboard']]: highlightType === 'keyboard',\n    [styles.disabled]: disabled,\n    [styles.virtual]: virtualPosition !== undefined,\n    [styles['pad-bottom']]: padBottom,\n    [styles['next-item-selected']]: isNextSelected,\n    [styles.interactiveGroups]: useInteractiveGroups,\n  });\n\n  const contentRef = useRef<HTMLDivElement>(null);\n  const screenReaderContentRef = useRef<HTMLDivElement>(null);\n\n  useLayoutEffect(() => {\n    // the state of aria-hidden and announcement is not set back because NVDA+Firefox would announce\n    // the item which lost highlight\n    // set aria-hidden true when there is announcement content, so that screen reader still announce\n    // meaningful content when navigate with screen reader cursor\n    // imperatively update to avoid announcement made multiple times when content updates\n    if (highlighted && screenReaderContent) {\n      if (contentRef.current) {\n        contentRef.current.setAttribute('aria-hidden', 'true');\n      }\n      if (screenReaderContentRef.current) {\n        screenReaderContentRef.current.textContent = screenReaderContent;\n      }\n    }\n  }, [highlighted, screenReaderContent, contentRef, screenReaderContentRef]);\n\n  const style =\n    virtualPosition !== undefined\n      ? {\n          transform: `translateY(${virtualPosition}px)`,\n        }\n      : undefined;\n\n  const a11yProperties: Record<string, string | number | boolean | undefined> = {\n    'aria-disabled': disabled,\n  };\n\n  if (isParent && !useInteractiveGroups) {\n    a11yProperties['aria-hidden'] = true;\n  }\n\n  if (ariaSelected !== undefined) {\n    a11yProperties['aria-selected'] = ariaSelected;\n  }\n\n  // Safari+VO needs aria-checked for multi-selection. Otherwise it only announces selected option even though another option is highlighted.\n  if (ariaChecked !== undefined) {\n    a11yProperties['aria-checked'] = ariaChecked;\n  }\n\n  if (ariaPosinset && ariaSetsize) {\n    a11yProperties['aria-posinset'] = ariaPosinset;\n    a11yProperties['aria-setsize'] = ariaSetsize;\n  }\n\n  return (\n    <li role=\"option\" className={classNames} style={style} {...a11yProperties} {...rest}>\n      <div className={styles['option-content']} ref={contentRef}>\n        {content}\n      </div>\n      <div className={styles['measure-strut']} ref={ref} />\n      <div className={styles['screenreader-content']} ref={screenReaderContentRef}></div>\n    </li>\n  );\n};\n\nexport default React.forwardRef(SelectableItem);\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_1fn7j_9npsa_93\",\n  \"styled-box\": \"awsui_styled-box_1fn7j_9npsa_100\",\n  \"styled-box-checked\": \"awsui_styled-box-checked_1fn7j_9npsa_106\",\n  \"styled-box-indeterminate\": \"awsui_styled-box-indeterminate_1fn7j_9npsa_106\",\n  \"styled-box-disabled\": \"awsui_styled-box-disabled_1fn7j_9npsa_110\",\n  \"styled-line\": \"awsui_styled-line_1fn7j_9npsa_124\",\n  \"styled-line-disabled\": \"awsui_styled-line-disabled_1fn7j_9npsa_129\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { BaseComponentProps, getBaseProps } from '../../base-component';\nimport { useVisualRefresh } from '../../hooks/use-visual-mode';\nimport styles from './styles.css.js';\n\nexport interface CheckboxIconProps extends BaseComponentProps {\n  checked?: boolean;\n  indeterminate?: boolean;\n  disabled?: boolean;\n}\nexport interface Dimension {\n  viewBox: string;\n  indeterminate: string;\n  checked: string;\n  xy: number;\n  r: number;\n  size: number;\n}\n\n// Can't use css variables for svg attributes\nexport const dimensionsByTheme: Record<NonNullable<'default' | 'refresh'>, Dimension> = {\n  default: {\n    viewBox: '0 0 14 14',\n    indeterminate: '2.5,7 11.5,7',\n    checked: '2.5,7 6,10 11,3',\n    xy: 0.5,\n    r: 1.5,\n    size: 13,\n  },\n  refresh: {\n    viewBox: '0 0 16 16',\n    indeterminate: '3.5,8 12.5,8',\n    checked: '3.5,8 7,11 12,4',\n    xy: 1,\n    r: 2,\n    size: 14,\n  },\n};\n\nconst CheckboxIcon = ({ checked, indeterminate, disabled = false, ...restProps }: CheckboxIconProps) => {\n  const baseProps = getBaseProps(restProps);\n  const theme = useVisualRefresh() ? 'refresh' : 'default';\n  const dimensions = dimensionsByTheme[theme];\n  return (\n    <svg className={styles.root} viewBox={dimensions.viewBox} aria-hidden=\"true\" focusable=\"false\" {...baseProps}>\n      <rect\n        className={clsx(styles['styled-box'], {\n          [styles['styled-box-checked']]: checked,\n          [styles['styled-box-indeterminate']]: indeterminate,\n          [styles['styled-box-disabled']]: disabled,\n        })}\n        x={dimensions.xy}\n        y={dimensions.xy}\n        rx={dimensions.r}\n        ry={dimensions.r}\n        width={dimensions.size}\n        height={dimensions.size}\n      />\n      {checked || indeterminate ? (\n        <polyline\n          className={clsx(styles['styled-line'], { [styles['styled-line-disabled']]: disabled })}\n          points={indeterminate ? dimensions.indeterminate : dimensions.checked}\n        />\n      ) : null}\n    </svg>\n  );\n};\n\nexport default CheckboxIcon;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport Option from '../../internal/components/option';\nimport SelectableItem from '../../internal/components/selectable-item';\nimport { getBaseProps } from '../../internal/base-component';\nimport { DropdownOption, OptionDefinition } from '../../internal/components/option/interfaces';\nimport CheckboxIcon from '../../internal/components/checkbox-icon';\nimport InternalIcon from '../../icon/internal.js';\nimport { HighlightType } from '../../internal/components/options-list/utils/use-highlight-option.js';\n\nexport interface ItemProps {\n  option: DropdownOption;\n  highlighted?: boolean;\n  selected?: boolean;\n  filteringValue?: string;\n  hasCheckbox?: boolean;\n  virtualPosition?: number;\n  padBottom?: boolean;\n  isNextSelected?: boolean;\n  screenReaderContent?: string;\n  ariaPosinset?: number;\n  ariaSetsize?: number;\n  highlightType?: HighlightType;\n}\n\nconst Item = (\n  {\n    option,\n    highlighted,\n    selected,\n    filteringValue,\n    hasCheckbox,\n    virtualPosition,\n    padBottom,\n    isNextSelected,\n    screenReaderContent,\n    ariaPosinset,\n    ariaSetsize,\n    highlightType,\n    ...restProps\n  }: ItemProps,\n  ref: React.Ref<HTMLDivElement>\n) => {\n  const baseProps = getBaseProps(restProps);\n\n  const isParent = option.type === 'parent';\n  const isChild = option.type === 'child';\n  const wrappedOption: OptionDefinition = option.option;\n  const disabled = option.disabled || wrappedOption.disabled;\n\n  return (\n    <SelectableItem\n      ariaSelected={Boolean(selected)}\n      selected={selected}\n      isNextSelected={isNextSelected}\n      highlighted={highlighted}\n      disabled={option.disabled}\n      isParent={isParent}\n      isChild={isChild}\n      ref={ref}\n      virtualPosition={virtualPosition}\n      padBottom={padBottom}\n      screenReaderContent={screenReaderContent}\n      ariaPosinset={ariaPosinset}\n      ariaSetsize={ariaSetsize}\n      highlightType={highlightType}\n      {...baseProps}\n    >\n      <div className={clsx(styles.item, !isParent && wrappedOption.labelTag && styles['show-label-tag'])}>\n        {hasCheckbox && !isParent && (\n          <div className={styles.checkbox}>\n            <CheckboxIcon checked={selected || false} disabled={option.disabled} />\n          </div>\n        )}\n        {isParent ? (\n          <span>{wrappedOption.label || wrappedOption.value}</span>\n        ) : (\n          <Option\n            option={{ ...wrappedOption, disabled }}\n            highlightedOption={highlighted}\n            selectedOption={selected}\n            highlightText={filteringValue}\n          />\n        )}\n        {!hasCheckbox && !isParent && selected && (\n          <div className={styles['selected-icon']}>\n            <InternalIcon name=\"check\" />\n          </div>\n        )}\n      </div>\n    </SelectableItem>\n  );\n};\n\nexport default React.memo(React.forwardRef(Item));\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport Option from '../../internal/components/option';\nimport SelectableItem from '../../internal/components/selectable-item';\nimport { getBaseProps } from '../../internal/base-component';\nimport { DropdownOption, OptionDefinition } from '../../internal/components/option/interfaces';\nimport CheckboxIcon from '../../internal/components/checkbox-icon';\nimport { HighlightType } from '../../internal/components/options-list/utils/use-highlight-option.js';\nexport interface ItemProps {\n  option: DropdownOption;\n  highlighted?: boolean;\n  selected?: boolean;\n  indeterminate?: boolean;\n  filteringValue?: string;\n  hasCheckbox?: boolean;\n  virtualPosition?: number;\n  padBottom?: boolean;\n  isNextSelected?: boolean;\n  screenReaderContent?: string;\n  ariaPosinset?: number;\n  ariaSetsize?: number;\n  highlightType?: HighlightType;\n}\n\nconst MultiSelectItem = (\n  {\n    option,\n    highlighted,\n    selected,\n    filteringValue,\n    hasCheckbox,\n    virtualPosition,\n    padBottom,\n    isNextSelected,\n    indeterminate,\n    screenReaderContent,\n    ariaPosinset,\n    ariaSetsize,\n    highlightType,\n    ...restProps\n  }: ItemProps,\n  ref: React.Ref<HTMLDivElement>\n) => {\n  const baseProps = getBaseProps(restProps);\n\n  const isParent = option.type === 'parent';\n  const isChild = option.type === 'child';\n  const wrappedOption: OptionDefinition = option.option;\n  const disabled = option.disabled || wrappedOption.disabled;\n  const className = clsx(styles.item, {\n    [styles.disabled]: disabled,\n  });\n\n  return (\n    <SelectableItem\n      ariaChecked={isParent && indeterminate ? 'mixed' : Boolean(selected)}\n      selected={selected}\n      isNextSelected={isNextSelected}\n      highlighted={highlighted}\n      disabled={disabled}\n      isParent={isParent}\n      isChild={isChild}\n      highlightType={highlightType}\n      ref={ref}\n      virtualPosition={virtualPosition}\n      padBottom={padBottom}\n      useInteractiveGroups={true}\n      screenReaderContent={screenReaderContent}\n      ariaPosinset={ariaPosinset}\n      ariaSetsize={ariaSetsize}\n      {...baseProps}\n    >\n      <div className={className}>\n        {hasCheckbox && (\n          <div className={styles.checkbox}>\n            <CheckboxIcon checked={selected} indeterminate={isParent && indeterminate} disabled={option.disabled} />\n          </div>\n        )}\n        <Option\n          option={{ ...wrappedOption, disabled }}\n          highlightedOption={highlighted}\n          selectedOption={selected}\n          highlightText={filteringValue}\n          isGroupOption={isParent}\n        />\n      </div>\n    </SelectableItem>\n  );\n};\n\nexport default React.memo(React.forwardRef(MultiSelectItem));\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { DropdownOption } from '../../internal/components/option/interfaces';\nimport { getTestOptionIndexes } from '../../internal/components/options-list/utils/test-indexes';\n\ninterface ItemProps {\n  option: DropdownOption;\n  index: number;\n  getOptionProps: any;\n  filteringValue: string;\n  checkboxes: boolean;\n}\n\nexport const getItemProps = ({ option, index, getOptionProps, filteringValue, checkboxes = false }: ItemProps) => {\n  const optionProps = getOptionProps(option, index);\n  optionProps.filteringValue = filteringValue;\n  const { inGroupIndex, groupIndex, throughIndex } = getTestOptionIndexes(option) || {};\n  return {\n    ...optionProps,\n    hasCheckbox: checkboxes,\n    ['data-group-index']: groupIndex,\n    ['data-child-index']: inGroupIndex,\n    ['data-test-index']: throughIndex,\n  };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { VirtualItem } from 'react-virtual';\nimport Item from '../parts/item';\nimport MutliselectItem from '../parts/multiselect-item';\nimport { DropdownOption } from '../../internal/components/option/interfaces';\nimport { getItemProps } from './get-item-props';\nimport { HighlightType } from '../../internal/components/options-list/utils/use-highlight-option';\n\nexport interface RenderOptionProps {\n  options: ReadonlyArray<DropdownOption>;\n  getOptionProps: any;\n  filteringValue: string;\n  highlightType: HighlightType;\n  checkboxes?: boolean;\n  hasDropdownStatus?: boolean;\n  virtualItems?: VirtualItem[];\n  useInteractiveGroups?: boolean;\n  screenReaderContent?: string;\n  ariaSetsize?: number;\n}\n\nexport const renderOptions = ({\n  options,\n  getOptionProps,\n  filteringValue,\n  highlightType,\n  checkboxes = false,\n  hasDropdownStatus,\n  virtualItems,\n  useInteractiveGroups,\n  screenReaderContent,\n  ariaSetsize,\n}: RenderOptionProps) => {\n  return options.map((option, index) => {\n    const virtualItem = virtualItems && virtualItems[index];\n    const globalIndex = virtualItem ? virtualItem.index : index;\n    const props = getItemProps({\n      option,\n      index: globalIndex,\n      getOptionProps,\n      filteringValue,\n      checkboxes,\n    });\n\n    const isLastItem = index === options.length - 1;\n    const padBottom = !hasDropdownStatus && isLastItem;\n    const ListItem = useInteractiveGroups ? MutliselectItem : Item;\n\n    return (\n      <ListItem\n        key={globalIndex}\n        {...props}\n        virtualPosition={virtualItem && virtualItem.start}\n        ref={virtualItem && virtualItem.measureRef}\n        padBottom={padBottom}\n        screenReaderContent={screenReaderContent}\n        ariaPosinset={globalIndex + 1}\n        ariaSetsize={ariaSetsize}\n        highlightType={highlightType}\n      />\n    );\n  });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport OptionsList from '../../internal/components/options-list';\nimport React, { forwardRef, useImperativeHandle } from 'react';\nimport { renderOptions } from '../utils/render-options';\nimport { MenuProps, GetOptionProps } from '../utils/use-select';\nimport { DropdownOption } from '../../internal/components/option/interfaces';\nimport { scrollElementIntoView } from '../../internal/utils/scrollable-containers';\n\nimport styles from './styles.css.js';\nimport { HighlightType } from '../../internal/components/options-list/utils/use-highlight-option';\n\nexport interface SelectListProps {\n  menuProps: MenuProps;\n  getOptionProps: GetOptionProps;\n  filteredOptions: ReadonlyArray<DropdownOption>;\n  filteringValue: string;\n  highlightType: HighlightType;\n  checkboxes?: boolean;\n  hasDropdownStatus?: boolean;\n  listBottom?: React.ReactNode;\n  useInteractiveGroups?: boolean;\n  screenReaderContent?: string;\n}\n\nexport namespace SelectListProps {\n  export type SelectListRef = (index: number) => void;\n}\n\nconst PlainList = (\n  {\n    menuProps,\n    getOptionProps,\n    filteredOptions,\n    filteringValue,\n    highlightType,\n    checkboxes,\n    hasDropdownStatus,\n    listBottom,\n    useInteractiveGroups,\n    screenReaderContent,\n  }: SelectListProps,\n  ref: React.Ref<SelectListProps.SelectListRef>\n) => {\n  const menuRef = menuProps.ref;\n  useImperativeHandle(\n    ref,\n    () => (index: number) => {\n      const item = menuRef.current?.querySelector<HTMLElement>(`[data-mouse-target=\"${index}\"]`);\n      if (highlightType === 'keyboard' && item) {\n        scrollElementIntoView(item);\n      }\n    },\n    [highlightType, menuRef]\n  );\n\n  return (\n    <OptionsList {...menuProps}>\n      {renderOptions({\n        options: filteredOptions,\n        getOptionProps,\n        filteringValue,\n        highlightType,\n        checkboxes,\n        hasDropdownStatus,\n        useInteractiveGroups,\n        screenReaderContent,\n      })}\n      {listBottom ? (\n        <li role=\"option\" className={styles['list-bottom']}>\n          {listBottom}\n        </li>\n      ) : null}\n    </OptionsList>\n  );\n};\n\nexport default forwardRef(PlainList);\n","var props = ['bottom', 'height', 'left', 'right', 'top', 'width'];\n\nvar rectChanged = function rectChanged(a, b) {\n  if (a === void 0) {\n    a = {};\n  }\n\n  if (b === void 0) {\n    b = {};\n  }\n\n  return props.some(function (prop) {\n    return a[prop] !== b[prop];\n  });\n};\n\nvar observedNodes =\n/*#__PURE__*/\nnew Map();\nvar rafId;\n\nvar run = function run() {\n  var changedStates = [];\n  observedNodes.forEach(function (state, node) {\n    var newRect = node.getBoundingClientRect();\n\n    if (rectChanged(newRect, state.rect)) {\n      state.rect = newRect;\n      changedStates.push(state);\n    }\n  });\n  changedStates.forEach(function (state) {\n    state.callbacks.forEach(function (cb) {\n      return cb(state.rect);\n    });\n  });\n  rafId = window.requestAnimationFrame(run);\n};\n\nfunction observeRect(node, cb) {\n  return {\n    observe: function observe() {\n      var wasEmpty = observedNodes.size === 0;\n\n      if (observedNodes.has(node)) {\n        observedNodes.get(node).callbacks.push(cb);\n      } else {\n        observedNodes.set(node, {\n          rect: undefined,\n          hasRectChanged: false,\n          callbacks: [cb]\n        });\n      }\n\n      if (wasEmpty) run();\n    },\n    unobserve: function unobserve() {\n      var state = observedNodes.get(node);\n\n      if (state) {\n        // Remove the callback\n        var index = state.callbacks.indexOf(cb);\n        if (index >= 0) state.callbacks.splice(index, 1); // Remove the node reference\n\n        if (!state.callbacks.length) observedNodes[\"delete\"](node); // Stop the loop\n\n        if (!observedNodes.size) cancelAnimationFrame(rafId);\n      }\n    }\n  };\n}\n\nexport default observeRect;\n//# sourceMappingURL=observe-rect.esm.js.map\n","import React from 'react'\n\nexport default typeof window !== 'undefined'\n  ? React.useLayoutEffect\n  : React.useEffect\n","import React from 'react'\nimport observeRect from '@reach/observe-rect'\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect'\n\nexport default function useRect(\n  nodeRef,\n  initialRect = { width: 0, height: 0 }\n) {\n  const [element, setElement] = React.useState(nodeRef.current)\n  const [rect, dispatch] = React.useReducer(rectReducer, initialRect)\n  const initialRectSet = React.useRef(false)\n\n  useIsomorphicLayoutEffect(() => {\n    if (nodeRef.current !== element) {\n      setElement(nodeRef.current)\n    }\n  })\n\n  useIsomorphicLayoutEffect(() => {\n    if (element && !initialRectSet.current) {\n      initialRectSet.current = true\n      const rect = element.getBoundingClientRect()\n      dispatch({ rect })\n    }\n  }, [element])\n\n  React.useEffect(() => {\n    if (!element) {\n      return\n    }\n\n    const observer = observeRect(element, rect => {\n      dispatch({ rect })\n    })\n\n    observer.observe()\n\n    return () => {\n      observer.unobserve()\n    }\n  }, [element])\n\n  return rect\n}\n\nfunction rectReducer(state, action) {\n  const rect = action.rect\n  if (state.height !== rect.height || state.width !== rect.width) {\n    return rect\n  }\n  return state\n}\n","import React from 'react'\nimport useRect from './useRect'\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect'\n\nconst defaultEstimateSize = () => 50\n\nconst defaultKeyExtractor = index => index\n\nconst defaultMeasureSize = (el, horizontal) => {\n  const key = horizontal ? 'offsetWidth' : 'offsetHeight'\n\n  return el[key]\n}\n\nexport const defaultRangeExtractor = range => {\n  const start = Math.max(range.start - range.overscan, 0)\n  const end = Math.min(range.end + range.overscan, range.size - 1)\n\n  const arr = []\n\n  for (let i = start; i <= end; i++) {\n    arr.push(i)\n  }\n\n  return arr\n}\n\nexport function useVirtual({\n  size = 0,\n  estimateSize = defaultEstimateSize,\n  overscan = 1,\n  paddingStart = 0,\n  paddingEnd = 0,\n  parentRef,\n  horizontal,\n  scrollToFn,\n  useObserver,\n  initialRect,\n  onScrollElement,\n  scrollOffsetFn,\n  keyExtractor = defaultKeyExtractor,\n  measureSize = defaultMeasureSize,\n  rangeExtractor = defaultRangeExtractor,\n}) {\n  const sizeKey = horizontal ? 'width' : 'height'\n  const scrollKey = horizontal ? 'scrollLeft' : 'scrollTop'\n\n  const latestRef = React.useRef({\n    scrollOffset: 0,\n    measurements: [],\n  })\n\n  const [scrollOffset, setScrollOffset] = React.useState(0)\n  latestRef.current.scrollOffset = scrollOffset\n\n  const useMeasureParent = useObserver || useRect\n\n  const { [sizeKey]: outerSize } = useMeasureParent(parentRef, initialRect)\n\n  latestRef.current.outerSize = outerSize\n\n  const defaultScrollToFn = React.useCallback(\n    offset => {\n      if (parentRef.current) {\n        parentRef.current[scrollKey] = offset\n      }\n    },\n    [parentRef, scrollKey]\n  )\n\n  const resolvedScrollToFn = scrollToFn || defaultScrollToFn\n\n  scrollToFn = React.useCallback(\n    offset => {\n      resolvedScrollToFn(offset, defaultScrollToFn)\n    },\n    [defaultScrollToFn, resolvedScrollToFn]\n  )\n\n  const [measuredCache, setMeasuredCache] = React.useState({})\n\n  const measure = React.useCallback(() => setMeasuredCache({}), [])\n\n  const pendingMeasuredCacheIndexesRef = React.useRef([])\n\n  const measurements = React.useMemo(() => {\n    const min =\n      pendingMeasuredCacheIndexesRef.current.length > 0\n        ? Math.min(...pendingMeasuredCacheIndexesRef.current)\n        : 0\n    pendingMeasuredCacheIndexesRef.current = []\n\n    const measurements = latestRef.current.measurements.slice(0, min)\n\n    for (let i = min; i < size; i++) {\n      const key = keyExtractor(i)\n      const measuredSize = measuredCache[key]\n      const start = measurements[i - 1] ? measurements[i - 1].end : paddingStart\n      const size =\n        typeof measuredSize === 'number' ? measuredSize : estimateSize(i)\n      const end = start + size\n      measurements[i] = { index: i, start, size, end, key }\n    }\n    return measurements\n  }, [estimateSize, measuredCache, paddingStart, size, keyExtractor])\n\n  const totalSize = (measurements[size - 1]?.end || paddingStart) + paddingEnd\n\n  latestRef.current.measurements = measurements\n  latestRef.current.totalSize = totalSize\n\n  const element = onScrollElement ? onScrollElement.current : parentRef.current\n\n  const scrollOffsetFnRef = React.useRef(scrollOffsetFn)\n  scrollOffsetFnRef.current = scrollOffsetFn\n\n  useIsomorphicLayoutEffect(() => {\n    if (!element) {\n      setScrollOffset(0)\n\n      return\n    }\n\n    const onScroll = event => {\n      const offset = scrollOffsetFnRef.current\n        ? scrollOffsetFnRef.current(event)\n        : element[scrollKey]\n\n      setScrollOffset(offset)\n    }\n\n    onScroll()\n\n    element.addEventListener('scroll', onScroll, {\n      capture: false,\n      passive: true,\n    })\n\n    return () => {\n      element.removeEventListener('scroll', onScroll)\n    }\n  }, [element, scrollKey])\n\n  const { start, end } = calculateRange(latestRef.current)\n\n  const indexes = React.useMemo(\n    () =>\n      rangeExtractor({\n        start,\n        end,\n        overscan,\n        size: measurements.length,\n      }),\n    [start, end, overscan, measurements.length, rangeExtractor]\n  )\n\n  const measureSizeRef = React.useRef(measureSize)\n  measureSizeRef.current = measureSize\n\n  const virtualItems = React.useMemo(() => {\n    const virtualItems = []\n\n    for (let k = 0, len = indexes.length; k < len; k++) {\n      const i = indexes[k]\n      const measurement = measurements[i]\n\n      const item = {\n        ...measurement,\n        measureRef: el => {\n          if (el) {\n            const measuredSize = measureSizeRef.current(el, horizontal)\n\n            if (measuredSize !== item.size) {\n              const { scrollOffset } = latestRef.current\n\n              if (item.start < scrollOffset) {\n                defaultScrollToFn(scrollOffset + (measuredSize - item.size))\n              }\n\n              pendingMeasuredCacheIndexesRef.current.push(i)\n\n              setMeasuredCache(old => ({\n                ...old,\n                [item.key]: measuredSize,\n              }))\n            }\n          }\n        },\n      }\n\n      virtualItems.push(item)\n    }\n\n    return virtualItems\n  }, [indexes, defaultScrollToFn, horizontal, measurements])\n\n  const mountedRef = React.useRef(false)\n\n  useIsomorphicLayoutEffect(() => {\n    if (mountedRef.current) {\n      setMeasuredCache({})\n    }\n    mountedRef.current = true\n  }, [estimateSize])\n\n  const scrollToOffset = React.useCallback(\n    (toOffset, { align = 'start' } = {}) => {\n      const { scrollOffset, outerSize } = latestRef.current\n\n      if (align === 'auto') {\n        if (toOffset <= scrollOffset) {\n          align = 'start'\n        } else if (toOffset >= scrollOffset + outerSize) {\n          align = 'end'\n        } else {\n          align = 'start'\n        }\n      }\n\n      if (align === 'start') {\n        scrollToFn(toOffset)\n      } else if (align === 'end') {\n        scrollToFn(toOffset - outerSize)\n      } else if (align === 'center') {\n        scrollToFn(toOffset - outerSize / 2)\n      }\n    },\n    [scrollToFn]\n  )\n\n  const tryScrollToIndex = React.useCallback(\n    (index, { align = 'auto', ...rest } = {}) => {\n      const { measurements, scrollOffset, outerSize } = latestRef.current\n\n      const measurement = measurements[Math.max(0, Math.min(index, size - 1))]\n\n      if (!measurement) {\n        return\n      }\n\n      if (align === 'auto') {\n        if (measurement.end >= scrollOffset + outerSize) {\n          align = 'end'\n        } else if (measurement.start <= scrollOffset) {\n          align = 'start'\n        } else {\n          return\n        }\n      }\n\n      const toOffset =\n        align === 'center'\n          ? measurement.start + measurement.size / 2\n          : align === 'end'\n          ? measurement.end\n          : measurement.start\n\n      scrollToOffset(toOffset, { align, ...rest })\n    },\n    [scrollToOffset, size]\n  )\n\n  const scrollToIndex = React.useCallback(\n    (...args) => {\n      // We do a double request here because of\n      // dynamic sizes which can cause offset shift\n      // and end up in the wrong spot. Unfortunately,\n      // we can't know about those dynamic sizes until\n      // we try and render them. So double down!\n      tryScrollToIndex(...args)\n      requestAnimationFrame(() => {\n        tryScrollToIndex(...args)\n      })\n    },\n    [tryScrollToIndex]\n  )\n\n  return {\n    virtualItems,\n    totalSize,\n    scrollToOffset,\n    scrollToIndex,\n    measure,\n  }\n}\n\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n  while (low <= high) {\n    let middle = ((low + high) / 2) | 0\n    let currentValue = getCurrentValue(middle)\n\n    if (currentValue < value) {\n      low = middle + 1\n    } else if (currentValue > value) {\n      high = middle - 1\n    } else {\n      return middle\n    }\n  }\n\n  if (low > 0) {\n    return low - 1\n  } else {\n    return 0\n  }\n}\n\nfunction calculateRange({ measurements, outerSize, scrollOffset }) {\n  const size = measurements.length - 1\n  const getOffset = index => measurements[index].start\n\n  let start = findNearestBinarySearch(0, size, getOffset, scrollOffset)\n  let end = start\n\n  while (end < size && measurements[end].end < scrollOffset + outerSize) {\n    end++\n  }\n\n  return { start, end }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useMergeRefs } from '../../internal/hooks/use-merge-refs';\nimport React, { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\nimport OptionsList from '../../internal/components/options-list';\nimport { renderOptions } from '../utils/render-options';\nimport { useVirtual } from 'react-virtual';\nimport { SelectListProps } from './plain-list';\nimport { useContainerQuery } from '../../internal/hooks/container-queries';\n\nimport styles from './styles.css.js';\n\nconst VirtualList = (props: SelectListProps, ref: React.Ref<SelectListProps.SelectListRef>) => {\n  return props.menuProps.open ? <VirtualListOpen {...props} ref={ref} /> : <VirtualListClosed {...props} ref={ref} />;\n};\n\nconst VirtualListOpen = forwardRef(\n  (\n    {\n      menuProps,\n      getOptionProps,\n      filteredOptions,\n      filteringValue,\n      highlightType,\n      checkboxes,\n      hasDropdownStatus,\n      listBottom,\n      useInteractiveGroups,\n      screenReaderContent,\n    }: SelectListProps,\n    ref: React.Ref<SelectListProps.SelectListRef>\n  ) => {\n    // update component, when it gets wider or narrower to reposition items\n    const [width, menuMeasureRef] = useContainerQuery(rect => rect.width, []);\n    const menuRefObject = useRef(null);\n    const menuRef = useMergeRefs(menuMeasureRef, menuRefObject, menuProps.ref);\n\n    const { virtualItems, totalSize, scrollToIndex } = useVirtual({\n      size: filteredOptions.length,\n      parentRef: menuRefObject,\n      // estimateSize is a dependency of measurements memo. We update it to force full recalculation\n      // when the height of any option could have changed:\n      // 1: because the component got resized (width property got updated)\n      // 2: because the option changed its content (filteringValue property controls the highlight and the visibility of hidden tags)\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      estimateSize: useCallback(() => 31, [width, filteringValue]),\n      overscan: 5,\n    });\n    useImperativeHandle(\n      ref,\n      () => (index: number) => {\n        if (highlightType === 'keyboard') {\n          scrollToIndex(index);\n        }\n      },\n      [highlightType, scrollToIndex]\n    );\n    const finalOptions = renderOptions({\n      options: virtualItems.map(({ index }) => filteredOptions[index]),\n      getOptionProps,\n      filteringValue,\n      highlightType,\n      checkboxes,\n      hasDropdownStatus,\n      virtualItems,\n      useInteractiveGroups,\n      screenReaderContent,\n      ariaSetsize: filteredOptions.length,\n    });\n    return (\n      <OptionsList {...menuProps} ref={menuRef}>\n        <div aria-hidden=\"true\" key=\"total-size\" className={styles['layout-strut']} style={{ height: totalSize }} />\n        {finalOptions}\n        {listBottom ? (\n          <li role=\"option\" className={styles['list-bottom']}>\n            {listBottom}\n          </li>\n        ) : null}\n      </OptionsList>\n    );\n  }\n);\n\nconst VirtualListClosed = forwardRef(\n  ({ menuProps, listBottom }: SelectListProps, ref: React.Ref<SelectListProps.SelectListRef>) => {\n    useImperativeHandle(ref, () => () => {}, []);\n    return (\n      <OptionsList {...menuProps} ref={menuProps.ref}>\n        {listBottom ? (\n          <li role=\"option\" className={styles['list-bottom']}>\n            {listBottom}\n          </li>\n        ) : null}\n      </OptionsList>\n    );\n  }\n);\n\nexport default forwardRef(VirtualList);\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_1afi9_nvwch_93\",\n  \"hidden\": \"awsui_hidden_1afi9_nvwch_105\",\n  \"no-items\": \"awsui_no-items_1afi9_nvwch_108\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport styles from './styles.css.js';\nimport DropdownStatus from '../dropdown-status/index.js';\nimport LiveRegion from '../live-region/index.js';\n\ninterface DropdownFooter {\n  content?: React.ReactNode | null;\n  hasItems?: boolean;\n  id?: string;\n}\n\nconst DropdownFooter: React.FC<DropdownFooter> = ({ content, id, hasItems = true }: DropdownFooter) => (\n  <div className={clsx(styles.root, { [styles.hidden]: content === null, [styles['no-items']]: !hasItems })}>\n    <LiveRegion visible={true} tagName=\"div\" id={id}>\n      {content && <DropdownStatus>{content}</DropdownStatus>}\n    </LiveRegion>\n  </div>\n);\n\nexport default DropdownFooter;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isDevelopment } from '../../is-development';\nimport { warnOnce } from '../../logging';\nimport { NonCancelableEventHandler } from '../../events';\n\nexport default function checkControlled<ValueType, EventDetailType>(\n  componentName: string,\n  propertyName: string,\n  propertyValue: ValueType | undefined,\n  handlerName: string,\n  handlerValue: NonCancelableEventHandler<EventDetailType> | undefined\n) {\n  if (propertyValue !== undefined && handlerValue === undefined && isDevelopment) {\n    warnOnce(\n      componentName,\n      `You provided \\`${propertyName}\\` prop without an \\`${handlerName}\\` handler. This will render a read-only component. If the component should be mutable, set an \\`${handlerName}\\` handler.`\n    );\n  }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useState, useRef, useEffect } from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\n\nimport Dropdown from '../internal/components/dropdown';\nimport { useDropdownStatus } from '../internal/components/dropdown-status';\nimport Filter from './parts/filter';\nimport Trigger from './parts/trigger';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\n\nimport { getBaseProps } from '../internal/base-component';\nimport { SelectProps } from './interfaces';\nimport { prepareOptions } from '../internal/components/option/utils/prepare-options';\nimport { useSelect } from './utils/use-select';\nimport { checkOptionValueField } from './utils/check-option-value-field';\nimport { useNativeSearch } from './utils/use-native-search';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { useLoadItems } from './utils/use-load-items';\nimport { useAnnouncement } from './utils/use-announcement';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport PlainList, { SelectListProps } from './parts/plain-list';\nimport VirtualList from './parts/virtual-list';\nimport DropdownFooter from '../internal/components/dropdown-footer';\nimport checkControlled from '../internal/hooks/check-controlled';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { OptionGroup } from '../internal/components/option/interfaces.js';\nimport { SomeRequired } from '../internal/types';\nimport ScreenreaderOnly from '../internal/components/screenreader-only/index.js';\nimport { joinStrings } from '../internal/utils/strings/join-strings.js';\nimport { useInternalI18n } from '../internal/i18n/context.js';\n\nexport interface InternalSelectProps extends SomeRequired<SelectProps, 'options'>, InternalBaseComponentProps {\n  __inFilteringToken?: boolean;\n}\n\nconst InternalSelect = React.forwardRef(\n  (\n    {\n      options,\n      filteringType = 'none',\n      filteringPlaceholder,\n      filteringAriaLabel,\n      filteringClearAriaLabel,\n      filteringResultsText,\n      ariaRequired,\n      placeholder,\n      disabled,\n      ariaLabel,\n      statusType = 'finished',\n      empty,\n      loadingText,\n      finishedText,\n      errorText,\n      recoveryText,\n      noMatch,\n      triggerVariant = 'label',\n      renderHighlightedAriaLive,\n      selectedOption,\n      onBlur,\n      onFocus,\n      onLoadItems,\n      onChange,\n      virtualScroll,\n      expandToViewport,\n      autoFocus,\n      __inFilteringToken,\n      __internalRootRef = null,\n      ...restProps\n    }: InternalSelectProps,\n    externalRef: React.Ref<SelectProps.Ref>\n  ) => {\n    const baseProps = getBaseProps(restProps);\n    const formFieldContext = useFormFieldContext(restProps);\n\n    const i18n = useInternalI18n('select');\n    const errorIconAriaLabel = i18n('errorIconAriaLabel', restProps.errorIconAriaLabel);\n    const selectedAriaLabel = i18n('selectedAriaLabel', restProps.selectedAriaLabel);\n\n    const { handleLoadMore, handleRecoveryClick, fireLoadItems } = useLoadItems({\n      onLoadItems,\n      options,\n      statusType,\n    });\n\n    checkControlled('Select', 'selectedOption', selectedOption, 'onChange', onChange);\n\n    checkOptionValueField('Select', 'options', options);\n\n    const [filteringValue, setFilteringValue] = useState('');\n\n    const { filteredOptions, parentMap, totalCount, matchesCount } = prepareOptions(\n      options,\n      filteringType,\n      filteringValue\n    );\n\n    const rootRef = useRef<HTMLDivElement>(null);\n    const triggerRef = useRef<HTMLButtonElement>(null);\n\n    const selfControlId = useUniqueId('trigger');\n    const controlId = formFieldContext.controlId ?? selfControlId;\n\n    const scrollToIndex = useRef<SelectListProps.SelectListRef>(null);\n    const {\n      isOpen,\n      highlightType,\n      highlightedOption,\n      highlightedIndex,\n      getTriggerProps,\n      getDropdownProps,\n      getFilterProps,\n      getMenuProps,\n      getOptionProps,\n      highlightOption,\n      selectOption,\n      announceSelected,\n    } = useSelect({\n      selectedOptions: selectedOption ? [selectedOption] : [],\n      updateSelectedOption: option => fireNonCancelableEvent(onChange, { selectedOption: option }),\n      options: filteredOptions,\n      filteringType,\n      onBlur,\n      onFocus,\n      externalRef,\n      fireLoadItems,\n      setFilteringValue,\n      statusType,\n    });\n\n    const handleNativeSearch = useNativeSearch({\n      isEnabled: filteringType === 'none',\n      options: filteredOptions,\n      highlightOption: !isOpen ? selectOption : highlightOption,\n      highlightedOption: !isOpen ? selectedOption : highlightedOption?.option,\n    });\n\n    const selectAriaLabelId = useUniqueId('select-arialabel-');\n    const footerId = useUniqueId('footer');\n\n    useEffect(() => {\n      scrollToIndex.current?.(highlightedIndex);\n    }, [highlightedIndex]);\n\n    const filter = (\n      <Filter\n        clearAriaLabel={filteringClearAriaLabel}\n        filteringType={filteringType}\n        placeholder={filteringPlaceholder}\n        ariaLabel={filteringAriaLabel}\n        ariaRequired={ariaRequired}\n        value={filteringValue}\n        {...getFilterProps()}\n      />\n    );\n\n    const trigger = (\n      <Trigger\n        ref={triggerRef}\n        placeholder={placeholder}\n        disabled={disabled}\n        triggerVariant={triggerVariant}\n        triggerProps={getTriggerProps(disabled, autoFocus)}\n        selectedOption={selectedOption}\n        isOpen={isOpen}\n        inFilteringToken={__inFilteringToken}\n        {...formFieldContext}\n        controlId={controlId}\n        ariaLabelledby={joinStrings(formFieldContext.ariaLabelledby, selectAriaLabelId)}\n      />\n    );\n\n    const isEmpty = !options || options.length === 0;\n    const isNoMatch = filteredOptions && filteredOptions.length === 0;\n    const isFiltered =\n      filteringType !== 'none' && filteringValue.length > 0 && filteredOptions && filteredOptions.length > 0;\n    const filteredText = isFiltered ? filteringResultsText?.(matchesCount, totalCount) : undefined;\n\n    const dropdownStatus = useDropdownStatus({\n      statusType,\n      empty,\n      loadingText,\n      finishedText,\n      errorText,\n      recoveryText,\n      isEmpty,\n      isNoMatch,\n      noMatch,\n      isFiltered,\n      filteringResultsText: filteredText,\n      errorIconAriaLabel,\n      onRecoveryClick: handleRecoveryClick,\n    });\n\n    const menuProps = {\n      ...getMenuProps(),\n      onLoadMore: handleLoadMore,\n      ariaLabelledby: joinStrings(selectAriaLabelId, controlId),\n      ariaDescribedby: dropdownStatus.content ? footerId : undefined,\n    };\n\n    const announcement = useAnnouncement({\n      announceSelected,\n      highlightedOption,\n      getParent: option => parentMap.get(option)?.option as undefined | OptionGroup,\n      selectedAriaLabel,\n      renderHighlightedAriaLive,\n    });\n\n    const ListComponent = virtualScroll ? VirtualList : PlainList;\n\n    const handleMouseDown = (event: React.MouseEvent) => {\n      const target = event.target as HTMLElement;\n\n      if (target !== document.activeElement) {\n        // prevent currently focused element from losing it\n        event.preventDefault();\n      }\n    };\n\n    const mergedRef = useMergeRefs(rootRef, __internalRootRef);\n\n    return (\n      <div\n        {...baseProps}\n        ref={mergedRef}\n        className={clsx(styles.root, baseProps.className)}\n        onKeyPress={handleNativeSearch}\n      >\n        <Dropdown\n          {...getDropdownProps()}\n          open={isOpen}\n          stretchTriggerHeight={__inFilteringToken}\n          trigger={trigger}\n          header={filter}\n          onMouseDown={handleMouseDown}\n          footer={\n            dropdownStatus.isSticky ? (\n              <DropdownFooter content={isOpen ? dropdownStatus.content : null} id={footerId} />\n            ) : null\n          }\n          expandToViewport={expandToViewport}\n        >\n          <ListComponent\n            listBottom={\n              !dropdownStatus.isSticky ? (\n                <DropdownFooter content={isOpen ? dropdownStatus.content : null} id={footerId} />\n              ) : null\n            }\n            menuProps={menuProps}\n            getOptionProps={getOptionProps}\n            filteredOptions={filteredOptions}\n            filteringValue={filteringValue}\n            ref={scrollToIndex}\n            hasDropdownStatus={dropdownStatus.content !== null}\n            screenReaderContent={announcement}\n            highlightType={highlightType}\n          />\n        </Dropdown>\n        <ScreenreaderOnly id={selectAriaLabelId}>{ariaLabel}</ScreenreaderOnly>\n      </div>\n    );\n  }\n);\n\nexport default InternalSelect;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Method to filter out internal properties prefixed by \"__\"\n */\nexport const getExternalProps = <T extends Record<string, any>>(props: T): T => {\n  const externalPropNames = Object.keys(props).filter(\n    (propName: string) => propName.indexOf('__') !== 0\n  ) as (keyof T)[];\n  return externalPropNames.reduce<Partial<T>>((acc: Partial<T>, propName: keyof T) => {\n    acc[propName] = props[propName];\n    return acc;\n  }, {}) as T;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { SelectProps } from './interfaces';\nimport InternalSelect from './internal';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { getExternalProps } from '../internal/utils/external-props';\n\nexport { SelectProps };\n\nconst Select = React.forwardRef(\n  (\n    {\n      options = [],\n      filteringType = 'none',\n      statusType = 'finished',\n      triggerVariant = 'label',\n      ...restProps\n    }: SelectProps,\n    ref: React.Ref<SelectProps.Ref>\n  ) => {\n    const baseComponentProps = useBaseComponent('Select');\n    const externalProps = getExternalProps(restProps);\n    return (\n      <InternalSelect\n        options={options}\n        filteringType={filteringType}\n        statusType={statusType}\n        triggerVariant={triggerVariant}\n        {...externalProps}\n        {...baseComponentProps}\n        ref={ref}\n      />\n    );\n  }\n);\n\napplyDisplayName(Select, 'Select');\nexport default Select;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport InternalContainer from './internal';\nimport { ContainerProps } from './interfaces';\nimport { getExternalProps } from '../internal/utils/external-props';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { AnalyticsFunnelSubStep } from '../internal/analytics/components/analytics-funnel';\n\nexport { ContainerProps };\n\nexport default function Container({\n  variant = 'default',\n  disableHeaderPaddings = false,\n  disableContentPaddings = false,\n  ...props\n}: ContainerProps) {\n  const baseComponentProps = useBaseComponent('Container');\n  const externalProps = getExternalProps(props);\n  return (\n    <AnalyticsFunnelSubStep>\n      <InternalContainer\n        variant={variant}\n        disableHeaderPaddings={disableHeaderPaddings}\n        disableContentPaddings={disableContentPaddings}\n        {...externalProps}\n        {...baseComponentProps}\n      />\n    </AnalyticsFunnelSubStep>\n  );\n}\n\napplyDisplayName(Container, 'Container');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { HeaderProps } from './interfaces';\nimport InternalHeader from './internal';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { HeaderProps };\n\nexport default function Header({ variant = 'h2', ...props }: HeaderProps) {\n  const baseComponentProps = useBaseComponent('Header');\n  return <InternalHeader variant={variant} {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(Header, 'Header');\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_18582_wjytv_93\",\n  \"child\": \"awsui_child_18582_wjytv_97\",\n  \"horizontal\": \"awsui_horizontal_18582_wjytv_108\",\n  \"horizontal-xxxs\": \"awsui_horizontal-xxxs_18582_wjytv_112\",\n  \"horizontal-xxs\": \"awsui_horizontal-xxs_18582_wjytv_115\",\n  \"horizontal-xs\": \"awsui_horizontal-xs_18582_wjytv_118\",\n  \"horizontal-s\": \"awsui_horizontal-s_18582_wjytv_121\",\n  \"horizontal-m\": \"awsui_horizontal-m_18582_wjytv_124\",\n  \"horizontal-l\": \"awsui_horizontal-l_18582_wjytv_127\",\n  \"horizontal-xl\": \"awsui_horizontal-xl_18582_wjytv_130\",\n  \"horizontal-xxl\": \"awsui_horizontal-xxl_18582_wjytv_133\",\n  \"vertical\": \"awsui_vertical_18582_wjytv_140\",\n  \"vertical-xxxs\": \"awsui_vertical-xxxs_18582_wjytv_143\",\n  \"vertical-xxs\": \"awsui_vertical-xxs_18582_wjytv_146\",\n  \"vertical-xs\": \"awsui_vertical-xs_18582_wjytv_149\",\n  \"vertical-s\": \"awsui_vertical-s_18582_wjytv_152\",\n  \"vertical-m\": \"awsui_vertical-m_18582_wjytv_155\",\n  \"vertical-l\": \"awsui_vertical-l_18582_wjytv_158\",\n  \"vertical-xl\": \"awsui_vertical-xl_18582_wjytv_161\",\n  \"vertical-xxl\": \"awsui_vertical-xxl_18582_wjytv_164\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport styles from './styles.css.js';\nimport flattenChildren from 'react-keyed-flatten-children';\nimport { SpaceBetweenProps } from './interfaces';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\n\ntype InternalSpaceBetweenProps = SpaceBetweenProps & InternalBaseComponentProps;\n\nexport default function InternalSpaceBetween({\n  direction = 'vertical',\n  size,\n  children,\n  __internalRootRef,\n  ...props\n}: InternalSpaceBetweenProps) {\n  const baseProps = getBaseProps(props);\n\n  /*\n   Flattening the children allows us to \"see through\" React Fragments and nested arrays.\n   */\n  const flattenedChildren = flattenChildren(children);\n\n  return (\n    <div\n      {...baseProps}\n      className={clsx(baseProps.className, styles.root, styles[direction], styles[`${direction}-${size}`])}\n      ref={__internalRootRef}\n    >\n      {flattenedChildren.map(child => {\n        const key = typeof child === 'object' ? child.key : undefined;\n\n        return (\n          <div key={key} className={styles.child}>\n            {child}\n          </div>\n        );\n      })}\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport InternalSpaceBetween from './internal';\nimport { SpaceBetweenProps } from './interfaces';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { SpaceBetweenProps };\n\nexport default function SpaceBetween({ direction = 'vertical', ...props }: SpaceBetweenProps) {\n  const baseComponentProps = useBaseComponent('SpaceBetween');\n  return <InternalSpaceBetween direction={direction} {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(SpaceBetween, 'SpaceBetween');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport { ButtonProps } from './interfaces';\nimport { InternalButton } from './internal';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { ButtonProps };\n\nconst Button = React.forwardRef(\n  (\n    {\n      children,\n      iconName,\n      iconAlign = 'left',\n      iconUrl,\n      iconSvg,\n      iconAlt,\n      variant = 'normal',\n      loading = false,\n      loadingText,\n      disabled = false,\n      wrapText = true,\n      href,\n      target,\n      rel,\n      download,\n      formAction = 'submit',\n      ariaLabel,\n      ariaDescribedby,\n      onClick,\n      onFollow,\n      ariaExpanded,\n      fullWidth,\n      form,\n      ...props\n    }: ButtonProps,\n    ref: React.Ref<ButtonProps.Ref>\n  ) => {\n    const baseComponentProps = useBaseComponent('Button');\n    const baseProps = getBaseProps(props);\n    return (\n      <InternalButton\n        {...baseProps}\n        {...baseComponentProps}\n        ref={ref}\n        iconName={iconName}\n        iconAlign={iconAlign}\n        iconUrl={iconUrl}\n        iconSvg={iconSvg}\n        iconAlt={iconAlt}\n        variant={variant}\n        loading={loading}\n        loadingText={loadingText}\n        disabled={disabled}\n        wrapText={wrapText}\n        href={href}\n        target={target}\n        rel={rel}\n        download={download}\n        formAction={formAction}\n        ariaLabel={ariaLabel}\n        ariaDescribedby={ariaDescribedby}\n        onClick={onClick}\n        onFollow={onFollow}\n        ariaExpanded={ariaExpanded}\n        fullWidth={fullWidth}\n        form={form}\n      >\n        {children}\n      </InternalButton>\n    );\n  }\n);\n\napplyDisplayName(Button, 'Button');\nexport default Button;\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_qk1j1_am4u2_93\",\n  \"textarea\": \"awsui_textarea_qk1j1_am4u2_97\",\n  \"textarea-readonly\": \"awsui_textarea-readonly_qk1j1_am4u2_123\",\n  \"textarea-invalid\": \"awsui_textarea-invalid_qk1j1_am4u2_159\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { Ref, useRef } from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport { fireKeyboardEvent, fireNonCancelableEvent } from '../internal/events';\nimport { TextareaProps } from './interfaces';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { convertAutoComplete } from '../input/utils';\n\nexport { TextareaProps };\n\nconst Textarea = React.forwardRef(\n  (\n    {\n      value,\n      autoComplete = true,\n      disabled,\n      readOnly,\n      disableBrowserAutocorrect,\n      disableBrowserSpellcheck,\n      spellcheck,\n      onKeyDown,\n      onKeyUp,\n      onChange,\n      onBlur,\n      onFocus,\n      ariaRequired,\n      name,\n      rows,\n      placeholder,\n      autoFocus,\n      ariaLabel,\n      ...rest\n    }: TextareaProps,\n    ref: Ref<TextareaProps.Ref>\n  ) => {\n    const { __internalRootRef } = useBaseComponent('Textarea');\n    const { ariaLabelledby, ariaDescribedby, controlId, invalid } = useFormFieldContext(rest);\n    const baseProps = getBaseProps(rest);\n\n    const textareaRef = useRef<HTMLTextAreaElement>(null);\n    useForwardFocus(ref, textareaRef);\n\n    const attributes: React.TextareaHTMLAttributes<HTMLTextAreaElement> = {\n      'aria-label': ariaLabel,\n      'aria-labelledby': ariaLabelledby,\n      'aria-describedby': ariaDescribedby,\n      'aria-required': ariaRequired ? 'true' : undefined,\n      'aria-invalid': invalid ? 'true' : undefined,\n      name,\n      placeholder,\n      autoFocus,\n      className: clsx(styles.textarea, {\n        [styles['textarea-readonly']]: readOnly,\n        [styles['textarea-invalid']]: invalid,\n      }),\n      autoComplete: convertAutoComplete(autoComplete),\n      spellCheck: spellcheck,\n      disabled,\n      readOnly: readOnly ? true : undefined,\n      rows: rows || 3,\n      onKeyDown: onKeyDown && (event => fireKeyboardEvent(onKeyDown, event)),\n      onKeyUp: onKeyUp && (event => fireKeyboardEvent(onKeyUp, event)),\n      // We set a default value on the component in order to force it into the controlled mode.\n      value: value || '',\n      onChange: onChange && (event => fireNonCancelableEvent(onChange, { value: event.target.value })),\n      onBlur: onBlur && (() => fireNonCancelableEvent(onBlur)),\n      onFocus: onFocus && (() => fireNonCancelableEvent(onFocus)),\n    };\n\n    if (disableBrowserAutocorrect) {\n      attributes.autoCorrect = 'off';\n      attributes.autoCapitalize = 'off';\n    }\n\n    if (disableBrowserSpellcheck) {\n      attributes.spellCheck = 'false';\n    }\n\n    return (\n      <span {...baseProps} className={clsx(styles.root, baseProps.className)} ref={__internalRootRef}>\n        <textarea ref={textareaRef} id={controlId} {...attributes} />\n      </span>\n    );\n  }\n);\n\napplyDisplayName(Textarea, 'Textarea');\nexport default Textarea;\n","import moment from 'moment';\nimport { noteOnce } from \"rc-util/es/warning\";\nvar generateConfig = {\n  // get\n  getNow: function getNow() {\n    return moment();\n  },\n  getFixedDate: function getFixedDate(string) {\n    return moment(string, 'YYYY-MM-DD');\n  },\n  getEndDate: function getEndDate(date) {\n    var clone = date.clone();\n    return clone.endOf('month');\n  },\n  getWeekDay: function getWeekDay(date) {\n    var clone = date.clone().locale('en_US');\n    return clone.weekday() + clone.localeData().firstDayOfWeek();\n  },\n  getYear: function getYear(date) {\n    return date.year();\n  },\n  getMonth: function getMonth(date) {\n    return date.month();\n  },\n  getDate: function getDate(date) {\n    return date.date();\n  },\n  getHour: function getHour(date) {\n    return date.hour();\n  },\n  getMinute: function getMinute(date) {\n    return date.minute();\n  },\n  getSecond: function getSecond(date) {\n    return date.second();\n  },\n  // set\n  addYear: function addYear(date, diff) {\n    var clone = date.clone();\n    return clone.add(diff, 'year');\n  },\n  addMonth: function addMonth(date, diff) {\n    var clone = date.clone();\n    return clone.add(diff, 'month');\n  },\n  addDate: function addDate(date, diff) {\n    var clone = date.clone();\n    return clone.add(diff, 'day');\n  },\n  setYear: function setYear(date, year) {\n    var clone = date.clone();\n    return clone.year(year);\n  },\n  setMonth: function setMonth(date, month) {\n    var clone = date.clone();\n    return clone.month(month);\n  },\n  setDate: function setDate(date, num) {\n    var clone = date.clone();\n    return clone.date(num);\n  },\n  setHour: function setHour(date, hour) {\n    var clone = date.clone();\n    return clone.hour(hour);\n  },\n  setMinute: function setMinute(date, minute) {\n    var clone = date.clone();\n    return clone.minute(minute);\n  },\n  setSecond: function setSecond(date, second) {\n    var clone = date.clone();\n    return clone.second(second);\n  },\n  // Compare\n  isAfter: function isAfter(date1, date2) {\n    return date1.isAfter(date2);\n  },\n  isValidate: function isValidate(date) {\n    return date.isValid();\n  },\n  locale: {\n    getWeekFirstDay: function getWeekFirstDay(locale) {\n      var date = moment().locale(locale);\n      return date.localeData().firstDayOfWeek();\n    },\n    getWeekFirstDate: function getWeekFirstDate(locale, date) {\n      var clone = date.clone();\n      var result = clone.locale(locale);\n      return result.weekday(0);\n    },\n    getWeek: function getWeek(locale, date) {\n      var clone = date.clone();\n      var result = clone.locale(locale);\n      return result.week();\n    },\n    getShortWeekDays: function getShortWeekDays(locale) {\n      var date = moment().locale(locale);\n      return date.localeData().weekdaysMin();\n    },\n    getShortMonths: function getShortMonths(locale) {\n      var date = moment().locale(locale);\n      return date.localeData().monthsShort();\n    },\n    format: function format(locale, date, _format) {\n      var clone = date.clone();\n      var result = clone.locale(locale);\n      return result.format(_format);\n    },\n    parse: function parse(locale, text, formats) {\n      var fallbackFormatList = [];\n      for (var i = 0; i < formats.length; i += 1) {\n        var format = formats[i];\n        var formatText = text;\n        if (format.includes('wo') || format.includes('Wo')) {\n          format = format.replace(/wo/g, 'w').replace(/Wo/g, 'W');\n          var matchFormat = format.match(/[-YyMmDdHhSsWwGg]+/g);\n          var matchText = formatText.match(/[-\\d]+/g);\n          if (matchFormat && matchText) {\n            format = matchFormat.join('');\n            formatText = matchText.join('');\n          } else {\n            fallbackFormatList.push(format.replace(/o/g, ''));\n          }\n        }\n        var date = moment(formatText, format, locale, true);\n        if (date.isValid()) {\n          return date;\n        }\n      }\n      // Fallback to fuzzy matching, this should always not reach match or need fire a issue\n      for (var _i = 0; _i < fallbackFormatList.length; _i += 1) {\n        var _date = moment(text, fallbackFormatList[_i], locale, false);\n        /* istanbul ignore next */\n        if (_date.isValid()) {\n          noteOnce(false, 'Not match any format strictly and fallback to fuzzy match. Please help to fire a issue about this.');\n          return _date;\n        }\n      }\n      return null;\n    }\n  }\n};\nexport default generateConfig;","import * as React from 'react';\nvar DisabledContext = /*#__PURE__*/React.createContext(false);\nexport var DisabledContextProvider = function DisabledContextProvider(_ref) {\n  var children = _ref.children,\n    disabled = _ref.disabled;\n  var originDisabled = React.useContext(DisabledContext);\n  return /*#__PURE__*/React.createElement(DisabledContext.Provider, {\n    value: disabled !== null && disabled !== void 0 ? disabled : originDisabled\n  }, children);\n};\nexport default DisabledContext;","import * as React from 'react';\nvar SizeContext = /*#__PURE__*/React.createContext(undefined);\nexport var SizeContextProvider = function SizeContextProvider(_ref) {\n  var children = _ref.children,\n    size = _ref.size;\n  return /*#__PURE__*/React.createElement(SizeContext.Consumer, null, function (originSize) {\n    return /*#__PURE__*/React.createElement(SizeContext.Provider, {\n      value: size || originSize\n    }, children);\n  });\n};\nexport default SizeContext;","import React from 'react';\nimport { isFragment } from 'react-is';\nexport default function toArray(children) {\n  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var ret = [];\n  React.Children.forEach(children, function (child) {\n    if ((child === undefined || child === null) && !option.keepEmpty) {\n      return;\n    }\n    if (Array.isArray(child)) {\n      ret = ret.concat(toArray(child));\n    } else if (isFragment(child) && child.props) {\n      ret = ret.concat(toArray(child.props.children, option));\n    } else {\n      ret.push(child);\n    }\n  });\n  return ret;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nexport var SpaceCompactItemContext = /*#__PURE__*/React.createContext(null);\nexport var useCompactItemContext = function useCompactItemContext(prefixCls, direction) {\n  var compactItemContext = React.useContext(SpaceCompactItemContext);\n  var compactItemClassnames = React.useMemo(function () {\n    var _classNames;\n    if (!compactItemContext) return '';\n    var compactDirection = compactItemContext.compactDirection,\n      isFirstItem = compactItemContext.isFirstItem,\n      isLastItem = compactItemContext.isLastItem;\n    var separator = compactDirection === 'vertical' ? '-vertical-' : '-';\n    return classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"item\"), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"first-item\"), isFirstItem), _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"last-item\"), isLastItem), _defineProperty(_classNames, \"\".concat(prefixCls, \"-compact\").concat(separator, \"item-rtl\"), direction === 'rtl'), _classNames));\n  }, [prefixCls, direction, compactItemContext]);\n  return {\n    compactSize: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactSize,\n    compactDirection: compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactDirection,\n    compactItemClassnames: compactItemClassnames\n  };\n};\nexport var NoCompactStyle = function NoCompactStyle(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n    value: null\n  }, children);\n};\nvar CompactItem = function CompactItem(_a) {\n  var children = _a.children,\n    otherProps = __rest(_a, [\"children\"]);\n  return /*#__PURE__*/React.createElement(SpaceCompactItemContext.Provider, {\n    value: otherProps\n  }, children);\n};\nvar Compact = function Compact(props) {\n  var _classNames2;\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls,\n    directionConfig = _React$useContext.direction;\n  var _props$size = props.size,\n    size = _props$size === void 0 ? 'middle' : _props$size,\n    direction = props.direction,\n    block = props.block,\n    customizePrefixCls = props.prefixCls,\n    className = props.className,\n    children = props.children,\n    restProps = __rest(props, [\"size\", \"direction\", \"block\", \"prefixCls\", \"className\", \"children\"]);\n  var prefixCls = getPrefixCls('space-compact', customizePrefixCls);\n  var clx = classNames(prefixCls, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), directionConfig === 'rtl'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-block\"), block), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-vertical\"), direction === 'vertical'), _classNames2), className);\n  var compactItemContext = React.useContext(SpaceCompactItemContext);\n  var childNodes = toArray(children);\n  var nodes = React.useMemo(function () {\n    return childNodes.map(function (child, i) {\n      var key = child && child.key || \"\".concat(prefixCls, \"-item-\").concat(i);\n      return /*#__PURE__*/React.createElement(CompactItem, {\n        key: key,\n        compactSize: size,\n        compactDirection: direction,\n        isFirstItem: i === 0 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isFirstItem)),\n        isLastItem: i === childNodes.length - 1 && (!compactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isLastItem))\n      }, child);\n    });\n  }, [size, childNodes, compactItemContext]);\n  // =========================== Render ===========================\n  if (childNodes.length === 0) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: clx\n  }, restProps), nodes);\n};\nexport default Compact;","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 setPrototypeOf from \"./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}\nexport { _inherits as default };","function _getPrototypeOf(t) {\n  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _isNativeReflectConstruct() {\n  try {\n    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n  } catch (t) {}\n  return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n    return !!t;\n  })();\n}\nexport { _isNativeReflectConstruct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./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}\nexport { _createSuper as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./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}\nexport { _possibleConstructorReturn as default };","import * as React from 'react';\nexport default function useMemo(getValue, condition, shouldUpdate) {\n  var cacheRef = React.useRef({});\n  if (!('value' in cacheRef.current) || shouldUpdate(cacheRef.current.condition, condition)) {\n    cacheRef.current.value = getValue();\n    cacheRef.current.condition = condition;\n  }\n  return cacheRef.current.value;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\n/* eslint-disable no-param-reassign */\n\nimport { isMemo } from 'react-is';\nimport useMemo from \"./hooks/useMemo\";\nexport function fillRef(ref, node) {\n  if (typeof ref === 'function') {\n    ref(node);\n  } else if (_typeof(ref) === 'object' && ref && 'current' in ref) {\n    ref.current = node;\n  }\n}\n\n/**\n * Merge refs into one ref function to support ref passing.\n */\nexport function composeRef() {\n  for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n    refs[_key] = arguments[_key];\n  }\n  var refList = refs.filter(function (ref) {\n    return ref;\n  });\n  if (refList.length <= 1) {\n    return refList[0];\n  }\n  return function (node) {\n    refs.forEach(function (ref) {\n      fillRef(ref, node);\n    });\n  };\n}\nexport function useComposeRef() {\n  for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n    refs[_key2] = arguments[_key2];\n  }\n  return useMemo(function () {\n    return composeRef.apply(void 0, refs);\n  }, refs, function (prev, next) {\n    return prev.length === next.length && prev.every(function (ref, i) {\n      return ref === next[i];\n    });\n  });\n}\nexport function supportRef(nodeOrComponent) {\n  var _type$prototype, _nodeOrComponent$prot;\n  var type = isMemo(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type;\n\n  // Function component node\n  if (typeof type === 'function' && !((_type$prototype = type.prototype) !== null && _type$prototype !== void 0 && _type$prototype.render)) {\n    return false;\n  }\n\n  // Class component\n  if (typeof nodeOrComponent === 'function' && !((_nodeOrComponent$prot = nodeOrComponent.prototype) !== null && _nodeOrComponent$prot !== void 0 && _nodeOrComponent$prot.render)) {\n    return false;\n  }\n  return true;\n}\n/* eslint-enable */","var raf = function raf(callback) {\n  return +setTimeout(callback, 16);\n};\nvar caf = function caf(num) {\n  return clearTimeout(num);\n};\nif (typeof window !== 'undefined' && 'requestAnimationFrame' in window) {\n  raf = function raf(callback) {\n    return window.requestAnimationFrame(callback);\n  };\n  caf = function caf(handle) {\n    return window.cancelAnimationFrame(handle);\n  };\n}\nvar rafUUID = 0;\nvar rafIds = new Map();\nfunction cleanup(id) {\n  rafIds.delete(id);\n}\nvar wrapperRaf = function wrapperRaf(callback) {\n  var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  rafUUID += 1;\n  var id = rafUUID;\n  function callRef(leftTimes) {\n    if (leftTimes === 0) {\n      // Clean up\n      cleanup(id);\n\n      // Trigger\n      callback();\n    } else {\n      // Next raf\n      var realId = raf(function () {\n        callRef(leftTimes - 1);\n      });\n\n      // Bind real raf id\n      rafIds.set(id, realId);\n    }\n  }\n  callRef(times);\n  return id;\n};\nwrapperRaf.cancel = function (id) {\n  var realId = rafIds.get(id);\n  cleanup(realId);\n  return caf(realId);\n};\nexport default wrapperRaf;","import raf from \"rc-util/es/raf\";\nvar id = 0;\nvar ids = {};\n// Support call raf with delay specified frame\nexport default function wrapperRaf(callback) {\n  var delayFrames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n  var myId = id++;\n  var restFrames = delayFrames;\n  function internalCallback() {\n    restFrames -= 1;\n    if (restFrames <= 0) {\n      callback();\n      delete ids[myId];\n    } else {\n      ids[myId] = raf(internalCallback);\n    }\n  }\n  ids[myId] = raf(internalCallback);\n  return myId;\n}\nwrapperRaf.cancel = function cancel(pid) {\n  if (pid === undefined) return;\n  raf.cancel(ids[pid]);\n  delete ids[pid];\n};\nwrapperRaf.ids = ids; // export this for test usage","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport { updateCSS } from \"rc-util/es/Dom/dynamicCSS\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { ConfigConsumer, ConfigContext } from '../config-provider';\nimport raf from './raf';\nimport { cloneElement } from './reactNode';\nvar styleForPseudo;\n// Where el is the DOM element you'd like to test for visibility\nfunction isHidden(element) {\n  if (process.env.NODE_ENV === 'test') {\n    return false;\n  }\n  return !element || element.offsetParent === null || element.hidden;\n}\nfunction getValidateContainer(nodeRoot) {\n  if (nodeRoot instanceof Document) {\n    return nodeRoot.body;\n  }\n  return Array.from(nodeRoot.childNodes).find(function (ele) {\n    return (ele === null || ele === void 0 ? void 0 : ele.nodeType) === Node.ELEMENT_NODE;\n  });\n}\nfunction isNotGrey(color) {\n  // eslint-disable-next-line no-useless-escape\n  var match = (color || '').match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\d.]*)?\\)/);\n  if (match && match[1] && match[2] && match[3]) {\n    return !(match[1] === match[2] && match[2] === match[3]);\n  }\n  return true;\n}\nvar Wave = /*#__PURE__*/function (_React$Component) {\n  _inherits(Wave, _React$Component);\n  var _super = _createSuper(Wave);\n  function Wave() {\n    var _this;\n    _classCallCheck(this, Wave);\n    _this = _super.apply(this, arguments);\n    _this.containerRef = /*#__PURE__*/React.createRef();\n    _this.animationStart = false;\n    _this.destroyed = false;\n    _this.onClick = function (node, waveColor) {\n      var _a, _b;\n      var _this$props = _this.props,\n        insertExtraNode = _this$props.insertExtraNode,\n        disabled = _this$props.disabled;\n      if (disabled || !node || isHidden(node) || node.className.includes('-leave')) {\n        return;\n      }\n      _this.extraNode = document.createElement('div');\n      var _assertThisInitialize = _assertThisInitialized(_this),\n        extraNode = _assertThisInitialize.extraNode;\n      var getPrefixCls = _this.context.getPrefixCls;\n      extraNode.className = \"\".concat(getPrefixCls(''), \"-click-animating-node\");\n      var attributeName = _this.getAttributeName();\n      node.setAttribute(attributeName, 'true');\n      // Not white or transparent or grey\n      if (waveColor && waveColor !== '#fff' && waveColor !== '#ffffff' && waveColor !== 'rgb(255, 255, 255)' && waveColor !== 'rgba(255, 255, 255, 1)' && isNotGrey(waveColor) && !/rgba\\((?:\\d*, ){3}0\\)/.test(waveColor) &&\n      // any transparent rgba color\n      waveColor !== 'transparent') {\n        extraNode.style.borderColor = waveColor;\n        var nodeRoot = ((_a = node.getRootNode) === null || _a === void 0 ? void 0 : _a.call(node)) || node.ownerDocument;\n        var nodeBody = (_b = getValidateContainer(nodeRoot)) !== null && _b !== void 0 ? _b : nodeRoot;\n        styleForPseudo = updateCSS(\"\\n      [\".concat(getPrefixCls(''), \"-click-animating-without-extra-node='true']::after, .\").concat(getPrefixCls(''), \"-click-animating-node {\\n        --antd-wave-shadow-color: \").concat(waveColor, \";\\n      }\"), 'antd-wave', {\n          csp: _this.csp,\n          attachTo: nodeBody\n        });\n      }\n      if (insertExtraNode) {\n        node.appendChild(extraNode);\n      }\n      ['transition', 'animation'].forEach(function (name) {\n        node.addEventListener(\"\".concat(name, \"start\"), _this.onTransitionStart);\n        node.addEventListener(\"\".concat(name, \"end\"), _this.onTransitionEnd);\n      });\n    };\n    _this.onTransitionStart = function (e) {\n      if (_this.destroyed) {\n        return;\n      }\n      var node = _this.containerRef.current;\n      if (!e || e.target !== node || _this.animationStart) {\n        return;\n      }\n      _this.resetEffect(node);\n    };\n    _this.onTransitionEnd = function (e) {\n      if (!e || e.animationName !== 'fadeEffect') {\n        return;\n      }\n      _this.resetEffect(e.target);\n    };\n    _this.bindAnimationEvent = function (node) {\n      if (!node || !node.getAttribute || node.getAttribute('disabled') || node.className.includes('disabled')) {\n        return;\n      }\n      var onClick = function onClick(e) {\n        // Fix radio button click twice\n        if (e.target.tagName === 'INPUT' || isHidden(e.target)) {\n          return;\n        }\n        _this.resetEffect(node);\n        // Get wave color from target\n        var waveColor = getComputedStyle(node).getPropertyValue('border-top-color') ||\n        // Firefox Compatible\n        getComputedStyle(node).getPropertyValue('border-color') || getComputedStyle(node).getPropertyValue('background-color');\n        _this.clickWaveTimeoutId = window.setTimeout(function () {\n          return _this.onClick(node, waveColor);\n        }, 0);\n        raf.cancel(_this.animationStartId);\n        _this.animationStart = true;\n        // Render to trigger transition event cost 3 frames. Let's delay 10 frames to reset this.\n        _this.animationStartId = raf(function () {\n          _this.animationStart = false;\n        }, 10);\n      };\n      node.addEventListener('click', onClick, true);\n      return {\n        cancel: function cancel() {\n          node.removeEventListener('click', onClick, true);\n        }\n      };\n    };\n    _this.renderWave = function (_ref) {\n      var csp = _ref.csp;\n      var children = _this.props.children;\n      _this.csp = csp;\n      if (! /*#__PURE__*/React.isValidElement(children)) return children;\n      var ref = _this.containerRef;\n      if (supportRef(children)) {\n        ref = composeRef(children.ref, _this.containerRef);\n      }\n      return cloneElement(children, {\n        ref: ref\n      });\n    };\n    return _this;\n  }\n  _createClass(Wave, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.destroyed = false;\n      var node = this.containerRef.current;\n      if (!node || node.nodeType !== 1) {\n        return;\n      }\n      this.instance = this.bindAnimationEvent(node);\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      if (this.instance) {\n        this.instance.cancel();\n      }\n      if (this.clickWaveTimeoutId) {\n        clearTimeout(this.clickWaveTimeoutId);\n      }\n      this.destroyed = true;\n    }\n  }, {\n    key: \"getAttributeName\",\n    value: function getAttributeName() {\n      var getPrefixCls = this.context.getPrefixCls;\n      var insertExtraNode = this.props.insertExtraNode;\n      return insertExtraNode ? \"\".concat(getPrefixCls(''), \"-click-animating\") : \"\".concat(getPrefixCls(''), \"-click-animating-without-extra-node\");\n    }\n  }, {\n    key: \"resetEffect\",\n    value: function resetEffect(node) {\n      var _this2 = this;\n      if (!node || node === this.extraNode || !(node instanceof Element)) {\n        return;\n      }\n      var insertExtraNode = this.props.insertExtraNode;\n      var attributeName = this.getAttributeName();\n      node.setAttribute(attributeName, 'false'); // edge has bug on `removeAttribute` #14466\n      if (styleForPseudo) {\n        styleForPseudo.innerHTML = '';\n      }\n      if (insertExtraNode && this.extraNode && node.contains(this.extraNode)) {\n        node.removeChild(this.extraNode);\n      }\n      ['transition', 'animation'].forEach(function (name) {\n        node.removeEventListener(\"\".concat(name, \"start\"), _this2.onTransitionStart);\n        node.removeEventListener(\"\".concat(name, \"end\"), _this2.onTransitionEnd);\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/React.createElement(ConfigConsumer, null, this.renderWave);\n    }\n  }]);\n  return Wave;\n}(React.Component);\nWave.contextType = ConfigContext;\nexport default Wave;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport warning from '../_util/warning';\nexport var GroupSizeContext = /*#__PURE__*/React.createContext(undefined);\nvar ButtonGroup = function ButtonGroup(props) {\n  var _classNames;\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls,\n    direction = _React$useContext.direction;\n  var customizePrefixCls = props.prefixCls,\n    size = props.size,\n    className = props.className,\n    others = __rest(props, [\"prefixCls\", \"size\", \"className\"]);\n  var prefixCls = getPrefixCls('btn-group', customizePrefixCls);\n  // large => lg\n  // small => sm\n  var sizeCls = '';\n  switch (size) {\n    case 'large':\n      sizeCls = 'lg';\n      break;\n    case 'small':\n      sizeCls = 'sm';\n      break;\n    case 'middle':\n    case undefined:\n      break;\n    default:\n      process.env.NODE_ENV !== \"production\" ? warning(!size, 'Button.Group', 'Invalid prop `size`.') : void 0;\n  }\n  var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n  return /*#__PURE__*/React.createElement(GroupSizeContext.Provider, {\n    value: size\n  }, /*#__PURE__*/React.createElement(\"div\", _extends({}, others, {\n    className: classes\n  })));\n};\nexport default ButtonGroup;","// This icon file is generated automatically.\nvar LoadingOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\" } }] }, \"name\": \"loading\", \"theme\": \"outlined\" };\nexport default LoadingOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport LoadingOutlinedSvg from \"@ant-design/icons-svg/es/asn/LoadingOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar LoadingOutlined = function LoadingOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n    ref: ref,\n    icon: LoadingOutlinedSvg\n  }));\n};\nLoadingOutlined.displayName = 'LoadingOutlined';\nexport default /*#__PURE__*/React.forwardRef(LoadingOutlined);","import React from 'react';\nimport ReactDOM from 'react-dom';\nexport function isDOM(node) {\n  // https://developer.mozilla.org/en-US/docs/Web/API/Element\n  // Since XULElement is also subclass of Element, we only need HTMLElement and SVGElement\n  return node instanceof HTMLElement || node instanceof SVGElement;\n}\n\n/**\n * Return if a node is a DOM node. Else will return by `findDOMNode`\n */\nexport default function findDOMNode(node) {\n  if (isDOM(node)) {\n    return node;\n  }\n  if (node instanceof React.Component) {\n    return ReactDOM.findDOMNode(node);\n  }\n  return null;\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport * as React from 'react';\nexport var Context = /*#__PURE__*/React.createContext({});\nexport default function MotionProvider(_ref) {\n  var children = _ref.children,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return /*#__PURE__*/React.createElement(Context.Provider, {\n    value: props\n  }, children);\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n  _inherits(DomWrapper, _React$Component);\n  var _super = _createSuper(DomWrapper);\n  function DomWrapper() {\n    _classCallCheck(this, DomWrapper);\n    return _super.apply(this, arguments);\n  }\n  _createClass(DomWrapper, [{\n    key: \"render\",\n    value: function render() {\n      return this.props.children;\n    }\n  }]);\n  return DomWrapper;\n}(React.Component);\nexport default DomWrapper;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n/**\n * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed.\n * We do not make this auto is to avoid real memory leak.\n * Developer should confirm it's safe to ignore themselves.\n */\nexport default function useSafeState(defaultValue) {\n  var destroyRef = React.useRef(false);\n  var _React$useState = React.useState(defaultValue),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    value = _React$useState2[0],\n    setValue = _React$useState2[1];\n  React.useEffect(function () {\n    destroyRef.current = false;\n    return function () {\n      destroyRef.current = true;\n    };\n  }, []);\n  function safeSetState(updater, ignoreDestroy) {\n    if (ignoreDestroy && destroyRef.current) {\n      return;\n    }\n    setValue(updater);\n  }\n  return [value, safeSetState];\n}","export var STATUS_NONE = 'none';\nexport var STATUS_APPEAR = 'appear';\nexport var STATUS_ENTER = 'enter';\nexport var STATUS_LEAVE = 'leave';\nexport var STEP_NONE = 'none';\nexport var STEP_PREPARE = 'prepare';\nexport var STEP_START = 'start';\nexport var STEP_ACTIVE = 'active';\nexport var STEP_ACTIVATED = 'end';\n/**\n * Used for disabled motion case.\n * Prepare stage will still work but start & active will be skipped.\n */\nexport var STEP_PREPARED = 'prepared';","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport canUseDOM from \"rc-util/es/Dom/canUseDom\";\n// ================= Transition =================\n// Event wrapper. Copy from react source code\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes[\"Webkit\".concat(styleProp)] = \"webkit\".concat(eventName);\n  prefixes[\"Moz\".concat(styleProp)] = \"moz\".concat(eventName);\n  prefixes[\"ms\".concat(styleProp)] = \"MS\".concat(eventName);\n  prefixes[\"O\".concat(styleProp)] = \"o\".concat(eventName.toLowerCase());\n  return prefixes;\n}\nexport function getVendorPrefixes(domSupport, win) {\n  var prefixes = {\n    animationend: makePrefixMap('Animation', 'AnimationEnd'),\n    transitionend: makePrefixMap('Transition', 'TransitionEnd')\n  };\n  if (domSupport) {\n    if (!('AnimationEvent' in win)) {\n      delete prefixes.animationend.animation;\n    }\n    if (!('TransitionEvent' in win)) {\n      delete prefixes.transitionend.transition;\n    }\n  }\n  return prefixes;\n}\nvar vendorPrefixes = getVendorPrefixes(canUseDOM(), typeof window !== 'undefined' ? window : {});\nvar style = {};\nif (canUseDOM()) {\n  var _document$createEleme = document.createElement('div');\n  style = _document$createEleme.style;\n}\nvar prefixedEventNames = {};\nexport function getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) {\n    return prefixedEventNames[eventName];\n  }\n  var prefixMap = vendorPrefixes[eventName];\n  if (prefixMap) {\n    var stylePropList = Object.keys(prefixMap);\n    var len = stylePropList.length;\n    for (var i = 0; i < len; i += 1) {\n      var styleProp = stylePropList[i];\n      if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) {\n        prefixedEventNames[eventName] = prefixMap[styleProp];\n        return prefixedEventNames[eventName];\n      }\n    }\n  }\n  return '';\n}\nvar internalAnimationEndName = getVendorPrefixedEventName('animationend');\nvar internalTransitionEndName = getVendorPrefixedEventName('transitionend');\nexport var supportTransition = !!(internalAnimationEndName && internalTransitionEndName);\nexport var animationEndName = internalAnimationEndName || 'animationend';\nexport var transitionEndName = internalTransitionEndName || 'transitionend';\nexport function getTransitionName(transitionName, transitionType) {\n  if (!transitionName) return null;\n  if (_typeof(transitionName) === 'object') {\n    var type = transitionType.replace(/-\\w/g, function (match) {\n      return match[1].toUpperCase();\n    });\n    return transitionName[type];\n  }\n  return \"\".concat(transitionName, \"-\").concat(transitionType);\n}","import * as React from 'react';\nimport { useRef } from 'react';\nimport { animationEndName, transitionEndName } from \"../util/motion\";\nexport default (function (callback) {\n  var cacheElementRef = useRef();\n\n  // Cache callback\n  var callbackRef = useRef(callback);\n  callbackRef.current = callback;\n\n  // Internal motion event handler\n  var onInternalMotionEnd = React.useCallback(function (event) {\n    callbackRef.current(event);\n  }, []);\n\n  // Remove events\n  function removeMotionEvents(element) {\n    if (element) {\n      element.removeEventListener(transitionEndName, onInternalMotionEnd);\n      element.removeEventListener(animationEndName, onInternalMotionEnd);\n    }\n  }\n\n  // Patch events\n  function patchMotionEvents(element) {\n    if (cacheElementRef.current && cacheElementRef.current !== element) {\n      removeMotionEvents(cacheElementRef.current);\n    }\n    if (element && element !== cacheElementRef.current) {\n      element.addEventListener(transitionEndName, onInternalMotionEnd);\n      element.addEventListener(animationEndName, onInternalMotionEnd);\n\n      // Save as cache in case dom removed trigger by `motionDeadline`\n      cacheElementRef.current = element;\n    }\n  }\n\n  // Clean up when removed\n  React.useEffect(function () {\n    return function () {\n      removeMotionEvents(cacheElementRef.current);\n    };\n  }, []);\n  return [patchMotionEvents, removeMotionEvents];\n});","import { useEffect, useLayoutEffect } from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\n\n// It's safe to use `useLayoutEffect` but the warning is annoying\nvar useIsomorphicLayoutEffect = canUseDom() ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useState from \"rc-util/es/hooks/useState\";\nimport * as React from 'react';\nimport { STEP_ACTIVATED, STEP_ACTIVE, STEP_NONE, STEP_PREPARE, STEP_PREPARED, STEP_START } from \"../interface\";\nimport useIsomorphicLayoutEffect from \"./useIsomorphicLayoutEffect\";\nimport useNextFrame from \"./useNextFrame\";\nvar FULL_STEP_QUEUE = [STEP_PREPARE, STEP_START, STEP_ACTIVE, STEP_ACTIVATED];\nvar SIMPLE_STEP_QUEUE = [STEP_PREPARE, STEP_PREPARED];\n\n/** Skip current step */\nexport var SkipStep = false;\n/** Current step should be update in */\nexport var DoStep = true;\nexport function isActive(step) {\n  return step === STEP_ACTIVE || step === STEP_ACTIVATED;\n}\nexport default (function (status, prepareOnly, callback) {\n  var _useState = useState(STEP_NONE),\n    _useState2 = _slicedToArray(_useState, 2),\n    step = _useState2[0],\n    setStep = _useState2[1];\n  var _useNextFrame = useNextFrame(),\n    _useNextFrame2 = _slicedToArray(_useNextFrame, 2),\n    nextFrame = _useNextFrame2[0],\n    cancelNextFrame = _useNextFrame2[1];\n  function startQueue() {\n    setStep(STEP_PREPARE, true);\n  }\n  var STEP_QUEUE = prepareOnly ? SIMPLE_STEP_QUEUE : FULL_STEP_QUEUE;\n  useIsomorphicLayoutEffect(function () {\n    if (step !== STEP_NONE && step !== STEP_ACTIVATED) {\n      var index = STEP_QUEUE.indexOf(step);\n      var nextStep = STEP_QUEUE[index + 1];\n      var result = callback(step);\n      if (result === SkipStep) {\n        // Skip when no needed\n        setStep(nextStep, true);\n      } else if (nextStep) {\n        // Do as frame for step update\n        nextFrame(function (info) {\n          function doNext() {\n            // Skip since current queue is ood\n            if (info.isCanceled()) return;\n            setStep(nextStep, true);\n          }\n          if (result === true) {\n            doNext();\n          } else {\n            // Only promise should be async\n            Promise.resolve(result).then(doNext);\n          }\n        });\n      }\n    }\n  }, [status, step]);\n  React.useEffect(function () {\n    return function () {\n      cancelNextFrame();\n    };\n  }, []);\n  return [startQueue, step];\n});","import * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nexport default (function () {\n  var nextFrameRef = React.useRef(null);\n  function cancelNextFrame() {\n    raf.cancel(nextFrameRef.current);\n  }\n  function nextFrame(callback) {\n    var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n    cancelNextFrame();\n    var nextFrameId = raf(function () {\n      if (delay <= 1) {\n        callback({\n          isCanceled: function isCanceled() {\n            return nextFrameId !== nextFrameRef.current;\n          }\n        });\n      } else {\n        nextFrame(callback, delay - 1);\n      }\n    });\n    nextFrameRef.current = nextFrameId;\n  }\n  React.useEffect(function () {\n    return function () {\n      cancelNextFrame();\n    };\n  }, []);\n  return [nextFrame, cancelNextFrame];\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n/* eslint-disable react/default-props-match-prop-types, react/no-multi-comp, react/prop-types */\nimport classNames from 'classnames';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { fillRef, supportRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport { Context } from \"./context\";\nimport DomWrapper from \"./DomWrapper\";\nimport useStatus from \"./hooks/useStatus\";\nimport { isActive } from \"./hooks/useStepQueue\";\nimport { STATUS_NONE, STEP_PREPARE, STEP_START } from \"./interface\";\nimport { getTransitionName, supportTransition } from \"./util/motion\";\n/**\n * `transitionSupport` is used for none transition test case.\n * Default we use browser transition event support check.\n */\nexport function genCSSMotion(config) {\n  var transitionSupport = config;\n  if (_typeof(config) === 'object') {\n    transitionSupport = config.transitionSupport;\n  }\n  function isSupportTransition(props, contextMotion) {\n    return !!(props.motionName && transitionSupport && contextMotion !== false);\n  }\n  var CSSMotion = /*#__PURE__*/React.forwardRef(function (props, ref) {\n    var _props$visible = props.visible,\n      visible = _props$visible === void 0 ? true : _props$visible,\n      _props$removeOnLeave = props.removeOnLeave,\n      removeOnLeave = _props$removeOnLeave === void 0 ? true : _props$removeOnLeave,\n      forceRender = props.forceRender,\n      children = props.children,\n      motionName = props.motionName,\n      leavedClassName = props.leavedClassName,\n      eventProps = props.eventProps;\n    var _React$useContext = React.useContext(Context),\n      contextMotion = _React$useContext.motion;\n    var supportMotion = isSupportTransition(props, contextMotion);\n\n    // Ref to the react node, it may be a HTMLElement\n    var nodeRef = useRef();\n    // Ref to the dom wrapper in case ref can not pass to HTMLElement\n    var wrapperNodeRef = useRef();\n    function getDomElement() {\n      try {\n        // Here we're avoiding call for findDOMNode since it's deprecated\n        // in strict mode. We're calling it only when node ref is not\n        // an instance of DOM HTMLElement. Otherwise use\n        // findDOMNode as a final resort\n        return nodeRef.current instanceof HTMLElement ? nodeRef.current : findDOMNode(wrapperNodeRef.current);\n      } catch (e) {\n        // Only happen when `motionDeadline` trigger but element removed.\n        return null;\n      }\n    }\n    var _useStatus = useStatus(supportMotion, visible, getDomElement, props),\n      _useStatus2 = _slicedToArray(_useStatus, 4),\n      status = _useStatus2[0],\n      statusStep = _useStatus2[1],\n      statusStyle = _useStatus2[2],\n      mergedVisible = _useStatus2[3];\n\n    // Record whether content has rendered\n    // Will return null for un-rendered even when `removeOnLeave={false}`\n    var renderedRef = React.useRef(mergedVisible);\n    if (mergedVisible) {\n      renderedRef.current = true;\n    }\n\n    // ====================== Refs ======================\n    var setNodeRef = React.useCallback(function (node) {\n      nodeRef.current = node;\n      fillRef(ref, node);\n    }, [ref]);\n\n    // ===================== Render =====================\n    var motionChildren;\n    var mergedProps = _objectSpread(_objectSpread({}, eventProps), {}, {\n      visible: visible\n    });\n    if (!children) {\n      // No children\n      motionChildren = null;\n    } else if (status === STATUS_NONE) {\n      // Stable children\n      if (mergedVisible) {\n        motionChildren = children(_objectSpread({}, mergedProps), setNodeRef);\n      } else if (!removeOnLeave && renderedRef.current && leavedClassName) {\n        motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n          className: leavedClassName\n        }), setNodeRef);\n      } else if (forceRender || !removeOnLeave && !leavedClassName) {\n        motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n          style: {\n            display: 'none'\n          }\n        }), setNodeRef);\n      } else {\n        motionChildren = null;\n      }\n    } else {\n      var _classNames;\n      // In motion\n      var statusSuffix;\n      if (statusStep === STEP_PREPARE) {\n        statusSuffix = 'prepare';\n      } else if (isActive(statusStep)) {\n        statusSuffix = 'active';\n      } else if (statusStep === STEP_START) {\n        statusSuffix = 'start';\n      }\n      var motionCls = getTransitionName(motionName, \"\".concat(status, \"-\").concat(statusSuffix));\n      motionChildren = children(_objectSpread(_objectSpread({}, mergedProps), {}, {\n        className: classNames(getTransitionName(motionName, status), (_classNames = {}, _defineProperty(_classNames, motionCls, motionCls && statusSuffix), _defineProperty(_classNames, motionName, typeof motionName === 'string'), _classNames)),\n        style: statusStyle\n      }), setNodeRef);\n    }\n\n    // Auto inject ref if child node not have `ref` props\n    if ( /*#__PURE__*/React.isValidElement(motionChildren) && supportRef(motionChildren)) {\n      var _ref = motionChildren,\n        originNodeRef = _ref.ref;\n      if (!originNodeRef) {\n        motionChildren = /*#__PURE__*/React.cloneElement(motionChildren, {\n          ref: setNodeRef\n        });\n      }\n    }\n    return /*#__PURE__*/React.createElement(DomWrapper, {\n      ref: wrapperNodeRef\n    }, motionChildren);\n  });\n  CSSMotion.displayName = 'CSSMotion';\n  return CSSMotion;\n}\nexport default genCSSMotion(supportTransition);","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useState from \"rc-util/es/hooks/useState\";\nimport * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport { STATUS_APPEAR, STATUS_ENTER, STATUS_LEAVE, STATUS_NONE, STEP_ACTIVE, STEP_PREPARE, STEP_PREPARED, STEP_START } from \"../interface\";\nimport useDomMotionEvents from \"./useDomMotionEvents\";\nimport useIsomorphicLayoutEffect from \"./useIsomorphicLayoutEffect\";\nimport useStepQueue, { DoStep, isActive, SkipStep } from \"./useStepQueue\";\nexport default function useStatus(supportMotion, visible, getElement, _ref) {\n  var _ref$motionEnter = _ref.motionEnter,\n    motionEnter = _ref$motionEnter === void 0 ? true : _ref$motionEnter,\n    _ref$motionAppear = _ref.motionAppear,\n    motionAppear = _ref$motionAppear === void 0 ? true : _ref$motionAppear,\n    _ref$motionLeave = _ref.motionLeave,\n    motionLeave = _ref$motionLeave === void 0 ? true : _ref$motionLeave,\n    motionDeadline = _ref.motionDeadline,\n    motionLeaveImmediately = _ref.motionLeaveImmediately,\n    onAppearPrepare = _ref.onAppearPrepare,\n    onEnterPrepare = _ref.onEnterPrepare,\n    onLeavePrepare = _ref.onLeavePrepare,\n    onAppearStart = _ref.onAppearStart,\n    onEnterStart = _ref.onEnterStart,\n    onLeaveStart = _ref.onLeaveStart,\n    onAppearActive = _ref.onAppearActive,\n    onEnterActive = _ref.onEnterActive,\n    onLeaveActive = _ref.onLeaveActive,\n    onAppearEnd = _ref.onAppearEnd,\n    onEnterEnd = _ref.onEnterEnd,\n    onLeaveEnd = _ref.onLeaveEnd,\n    onVisibleChanged = _ref.onVisibleChanged;\n  // Used for outer render usage to avoid `visible: false & status: none` to render nothing\n  var _useState = useState(),\n    _useState2 = _slicedToArray(_useState, 2),\n    asyncVisible = _useState2[0],\n    setAsyncVisible = _useState2[1];\n  var _useState3 = useState(STATUS_NONE),\n    _useState4 = _slicedToArray(_useState3, 2),\n    status = _useState4[0],\n    setStatus = _useState4[1];\n  var _useState5 = useState(null),\n    _useState6 = _slicedToArray(_useState5, 2),\n    style = _useState6[0],\n    setStyle = _useState6[1];\n  var mountedRef = useRef(false);\n  var deadlineRef = useRef(null);\n\n  // =========================== Dom Node ===========================\n  function getDomElement() {\n    return getElement();\n  }\n\n  // ========================== Motion End ==========================\n  var activeRef = useRef(false);\n\n  /**\n   * Clean up status & style\n   */\n  function updateMotionEndStatus() {\n    setStatus(STATUS_NONE, true);\n    setStyle(null, true);\n  }\n  function onInternalMotionEnd(event) {\n    var element = getDomElement();\n    if (event && !event.deadline && event.target !== element) {\n      // event exists\n      // not initiated by deadline\n      // transitionEnd not fired by inner elements\n      return;\n    }\n    var currentActive = activeRef.current;\n    var canEnd;\n    if (status === STATUS_APPEAR && currentActive) {\n      canEnd = onAppearEnd === null || onAppearEnd === void 0 ? void 0 : onAppearEnd(element, event);\n    } else if (status === STATUS_ENTER && currentActive) {\n      canEnd = onEnterEnd === null || onEnterEnd === void 0 ? void 0 : onEnterEnd(element, event);\n    } else if (status === STATUS_LEAVE && currentActive) {\n      canEnd = onLeaveEnd === null || onLeaveEnd === void 0 ? void 0 : onLeaveEnd(element, event);\n    }\n\n    // Only update status when `canEnd` and not destroyed\n    if (status !== STATUS_NONE && currentActive && canEnd !== false) {\n      updateMotionEndStatus();\n    }\n  }\n  var _useDomMotionEvents = useDomMotionEvents(onInternalMotionEnd),\n    _useDomMotionEvents2 = _slicedToArray(_useDomMotionEvents, 1),\n    patchMotionEvents = _useDomMotionEvents2[0];\n\n  // ============================= Step =============================\n  var getEventHandlers = function getEventHandlers(targetStatus) {\n    var _ref2, _ref3, _ref4;\n    switch (targetStatus) {\n      case STATUS_APPEAR:\n        return _ref2 = {}, _defineProperty(_ref2, STEP_PREPARE, onAppearPrepare), _defineProperty(_ref2, STEP_START, onAppearStart), _defineProperty(_ref2, STEP_ACTIVE, onAppearActive), _ref2;\n      case STATUS_ENTER:\n        return _ref3 = {}, _defineProperty(_ref3, STEP_PREPARE, onEnterPrepare), _defineProperty(_ref3, STEP_START, onEnterStart), _defineProperty(_ref3, STEP_ACTIVE, onEnterActive), _ref3;\n      case STATUS_LEAVE:\n        return _ref4 = {}, _defineProperty(_ref4, STEP_PREPARE, onLeavePrepare), _defineProperty(_ref4, STEP_START, onLeaveStart), _defineProperty(_ref4, STEP_ACTIVE, onLeaveActive), _ref4;\n      default:\n        return {};\n    }\n  };\n  var eventHandlers = React.useMemo(function () {\n    return getEventHandlers(status);\n  }, [status]);\n  var _useStepQueue = useStepQueue(status, !supportMotion, function (newStep) {\n      // Only prepare step can be skip\n      if (newStep === STEP_PREPARE) {\n        var onPrepare = eventHandlers[STEP_PREPARE];\n        if (!onPrepare) {\n          return SkipStep;\n        }\n        return onPrepare(getDomElement());\n      }\n\n      // Rest step is sync update\n      if (step in eventHandlers) {\n        var _eventHandlers$step;\n        setStyle(((_eventHandlers$step = eventHandlers[step]) === null || _eventHandlers$step === void 0 ? void 0 : _eventHandlers$step.call(eventHandlers, getDomElement(), null)) || null);\n      }\n      if (step === STEP_ACTIVE) {\n        // Patch events when motion needed\n        patchMotionEvents(getDomElement());\n        if (motionDeadline > 0) {\n          clearTimeout(deadlineRef.current);\n          deadlineRef.current = setTimeout(function () {\n            onInternalMotionEnd({\n              deadline: true\n            });\n          }, motionDeadline);\n        }\n      }\n      if (step === STEP_PREPARED) {\n        updateMotionEndStatus();\n      }\n      return DoStep;\n    }),\n    _useStepQueue2 = _slicedToArray(_useStepQueue, 2),\n    startStep = _useStepQueue2[0],\n    step = _useStepQueue2[1];\n  var active = isActive(step);\n  activeRef.current = active;\n\n  // ============================ Status ============================\n  // Update with new status\n  useIsomorphicLayoutEffect(function () {\n    setAsyncVisible(visible);\n    var isMounted = mountedRef.current;\n    mountedRef.current = true;\n\n    // if (!supportMotion) {\n    //   return;\n    // }\n\n    var nextStatus;\n\n    // Appear\n    if (!isMounted && visible && motionAppear) {\n      nextStatus = STATUS_APPEAR;\n    }\n\n    // Enter\n    if (isMounted && visible && motionEnter) {\n      nextStatus = STATUS_ENTER;\n    }\n\n    // Leave\n    if (isMounted && !visible && motionLeave || !isMounted && motionLeaveImmediately && !visible && motionLeave) {\n      nextStatus = STATUS_LEAVE;\n    }\n    var nextEventHandlers = getEventHandlers(nextStatus);\n\n    // Update to next status\n    if (nextStatus && (supportMotion || nextEventHandlers[STEP_PREPARE])) {\n      setStatus(nextStatus);\n      startStep();\n    } else {\n      // Set back in case no motion but prev status has prepare step\n      setStatus(STATUS_NONE);\n    }\n  }, [visible]);\n\n  // ============================ Effect ============================\n  // Reset when motion changed\n  useEffect(function () {\n    if (\n    // Cancel appear\n    status === STATUS_APPEAR && !motionAppear ||\n    // Cancel enter\n    status === STATUS_ENTER && !motionEnter ||\n    // Cancel leave\n    status === STATUS_LEAVE && !motionLeave) {\n      setStatus(STATUS_NONE);\n    }\n  }, [motionAppear, motionEnter, motionLeave]);\n  useEffect(function () {\n    return function () {\n      mountedRef.current = false;\n      clearTimeout(deadlineRef.current);\n    };\n  }, []);\n\n  // Trigger `onVisibleChanged`\n  var firstMountChangeRef = React.useRef(false);\n  useEffect(function () {\n    // [visible & motion not end] => [!visible & motion end] still need trigger onVisibleChanged\n    if (asyncVisible) {\n      firstMountChangeRef.current = true;\n    }\n    if (asyncVisible !== undefined && status === STATUS_NONE) {\n      // Skip first render is invisible since it's nothing changed\n      if (firstMountChangeRef.current || asyncVisible) {\n        onVisibleChanged === null || onVisibleChanged === void 0 ? void 0 : onVisibleChanged(asyncVisible);\n      }\n      firstMountChangeRef.current = true;\n    }\n  }, [asyncVisible, status]);\n\n  // ============================ Styles ============================\n  var mergedStyle = style;\n  if (eventHandlers[STEP_PREPARE] && step === STEP_START) {\n    mergedStyle = _objectSpread({\n      transition: 'none'\n    }, mergedStyle);\n  }\n  return [status, step, mergedStyle, asyncVisible !== null && asyncVisible !== void 0 ? asyncVisible : visible];\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport var STATUS_ADD = 'add';\nexport var STATUS_KEEP = 'keep';\nexport var STATUS_REMOVE = 'remove';\nexport var STATUS_REMOVED = 'removed';\nexport function wrapKeyToObject(key) {\n  var keyObj;\n  if (key && _typeof(key) === 'object' && 'key' in key) {\n    keyObj = key;\n  } else {\n    keyObj = {\n      key: key\n    };\n  }\n  return _objectSpread(_objectSpread({}, keyObj), {}, {\n    key: String(keyObj.key)\n  });\n}\nexport function parseKeys() {\n  var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  return keys.map(wrapKeyToObject);\n}\nexport function diffKeys() {\n  var prevKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var currentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n  var list = [];\n  var currentIndex = 0;\n  var currentLen = currentKeys.length;\n  var prevKeyObjects = parseKeys(prevKeys);\n  var currentKeyObjects = parseKeys(currentKeys);\n\n  // Check prev keys to insert or keep\n  prevKeyObjects.forEach(function (keyObj) {\n    var hit = false;\n    for (var i = currentIndex; i < currentLen; i += 1) {\n      var currentKeyObj = currentKeyObjects[i];\n      if (currentKeyObj.key === keyObj.key) {\n        // New added keys should add before current key\n        if (currentIndex < i) {\n          list = list.concat(currentKeyObjects.slice(currentIndex, i).map(function (obj) {\n            return _objectSpread(_objectSpread({}, obj), {}, {\n              status: STATUS_ADD\n            });\n          }));\n          currentIndex = i;\n        }\n        list.push(_objectSpread(_objectSpread({}, currentKeyObj), {}, {\n          status: STATUS_KEEP\n        }));\n        currentIndex += 1;\n        hit = true;\n        break;\n      }\n    }\n\n    // If not hit, it means key is removed\n    if (!hit) {\n      list.push(_objectSpread(_objectSpread({}, keyObj), {}, {\n        status: STATUS_REMOVE\n      }));\n    }\n  });\n\n  // Add rest to the list\n  if (currentIndex < currentLen) {\n    list = list.concat(currentKeyObjects.slice(currentIndex).map(function (obj) {\n      return _objectSpread(_objectSpread({}, obj), {}, {\n        status: STATUS_ADD\n      });\n    }));\n  }\n\n  /**\n   * Merge same key when it remove and add again:\n   *    [1 - add, 2 - keep, 1 - remove] -> [1 - keep, 2 - keep]\n   */\n  var keys = {};\n  list.forEach(function (_ref) {\n    var key = _ref.key;\n    keys[key] = (keys[key] || 0) + 1;\n  });\n  var duplicatedKeys = Object.keys(keys).filter(function (key) {\n    return keys[key] > 1;\n  });\n  duplicatedKeys.forEach(function (matchKey) {\n    // Remove `STATUS_REMOVE` node.\n    list = list.filter(function (_ref2) {\n      var key = _ref2.key,\n        status = _ref2.status;\n      return key !== matchKey || status !== STATUS_REMOVE;\n    });\n\n    // Update `STATUS_ADD` to `STATUS_KEEP`\n    list.forEach(function (node) {\n      if (node.key === matchKey) {\n        // eslint-disable-next-line no-param-reassign\n        node.status = STATUS_KEEP;\n      }\n    });\n  });\n  return list;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _excluded = [\"component\", \"children\", \"onVisibleChanged\", \"onAllRemoved\"],\n  _excluded2 = [\"status\"];\n/* eslint react/prop-types: 0 */\nimport * as React from 'react';\nimport OriginCSSMotion from \"./CSSMotion\";\nimport { supportTransition } from \"./util/motion\";\nimport { STATUS_ADD, STATUS_KEEP, STATUS_REMOVE, STATUS_REMOVED, diffKeys, parseKeys } from \"./util/diff\";\nvar MOTION_PROP_NAMES = ['eventProps', 'visible', 'children', 'motionName', 'motionAppear', 'motionEnter', 'motionLeave', 'motionLeaveImmediately', 'motionDeadline', 'removeOnLeave', 'leavedClassName', 'onAppearStart', 'onAppearActive', 'onAppearEnd', 'onEnterStart', 'onEnterActive', 'onEnterEnd', 'onLeaveStart', 'onLeaveActive', 'onLeaveEnd'];\n/**\n * Generate a CSSMotionList component with config\n * @param transitionSupport No need since CSSMotionList no longer depends on transition support\n * @param CSSMotion CSSMotion component\n */\nexport function genCSSMotionList(transitionSupport) {\n  var CSSMotion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : OriginCSSMotion;\n  var CSSMotionList = /*#__PURE__*/function (_React$Component) {\n    _inherits(CSSMotionList, _React$Component);\n    var _super = _createSuper(CSSMotionList);\n    function CSSMotionList() {\n      var _this;\n      _classCallCheck(this, CSSMotionList);\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      _this = _super.call.apply(_super, [this].concat(args));\n      _defineProperty(_assertThisInitialized(_this), \"state\", {\n        keyEntities: []\n      });\n      _defineProperty(_assertThisInitialized(_this), \"removeKey\", function (removeKey) {\n        var keyEntities = _this.state.keyEntities;\n        var nextKeyEntities = keyEntities.map(function (entity) {\n          if (entity.key !== removeKey) return entity;\n          return _objectSpread(_objectSpread({}, entity), {}, {\n            status: STATUS_REMOVED\n          });\n        });\n        _this.setState({\n          keyEntities: nextKeyEntities\n        });\n        return nextKeyEntities.filter(function (_ref) {\n          var status = _ref.status;\n          return status !== STATUS_REMOVED;\n        }).length;\n      });\n      return _this;\n    }\n    _createClass(CSSMotionList, [{\n      key: \"render\",\n      value: function render() {\n        var _this2 = this;\n        var keyEntities = this.state.keyEntities;\n        var _this$props = this.props,\n          component = _this$props.component,\n          children = _this$props.children,\n          _onVisibleChanged = _this$props.onVisibleChanged,\n          onAllRemoved = _this$props.onAllRemoved,\n          restProps = _objectWithoutProperties(_this$props, _excluded);\n        var Component = component || React.Fragment;\n        var motionProps = {};\n        MOTION_PROP_NAMES.forEach(function (prop) {\n          motionProps[prop] = restProps[prop];\n          delete restProps[prop];\n        });\n        delete restProps.keys;\n        return /*#__PURE__*/React.createElement(Component, restProps, keyEntities.map(function (_ref2) {\n          var status = _ref2.status,\n            eventProps = _objectWithoutProperties(_ref2, _excluded2);\n          var visible = status === STATUS_ADD || status === STATUS_KEEP;\n          return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motionProps, {\n            key: eventProps.key,\n            visible: visible,\n            eventProps: eventProps,\n            onVisibleChanged: function onVisibleChanged(changedVisible) {\n              _onVisibleChanged === null || _onVisibleChanged === void 0 ? void 0 : _onVisibleChanged(changedVisible, {\n                key: eventProps.key\n              });\n              if (!changedVisible) {\n                var restKeysCount = _this2.removeKey(eventProps.key);\n                if (restKeysCount === 0 && onAllRemoved) {\n                  onAllRemoved();\n                }\n              }\n            }\n          }), children);\n        }));\n      }\n    }], [{\n      key: \"getDerivedStateFromProps\",\n      value: function getDerivedStateFromProps(_ref3, _ref4) {\n        var keys = _ref3.keys;\n        var keyEntities = _ref4.keyEntities;\n        var parsedKeyObjects = parseKeys(keys);\n        var mixedKeyEntities = diffKeys(keyEntities, parsedKeyObjects);\n        return {\n          keyEntities: mixedKeyEntities.filter(function (entity) {\n            var prevEntity = keyEntities.find(function (_ref5) {\n              var key = _ref5.key;\n              return entity.key === key;\n            });\n\n            // Remove if already mark as removed\n            if (prevEntity && prevEntity.status === STATUS_REMOVED && entity.status === STATUS_REMOVE) {\n              return false;\n            }\n            return true;\n          })\n        };\n      }\n\n      // ZombieJ: Return the count of rest keys. It's safe to refactor if need more info.\n    }]);\n    return CSSMotionList;\n  }(React.Component);\n  _defineProperty(CSSMotionList, \"defaultProps\", {\n    component: 'div'\n  });\n  return CSSMotionList;\n}\nexport default genCSSMotionList(supportTransition);","import CSSMotion from \"./CSSMotion\";\nimport CSSMotionList from \"./CSSMotionList\";\nexport { default as Provider } from \"./context\";\nexport { CSSMotionList };\nexport default CSSMotion;","import LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport CSSMotion from 'rc-motion';\nimport React from 'react';\nvar getCollapsedWidth = function getCollapsedWidth() {\n  return {\n    width: 0,\n    opacity: 0,\n    transform: 'scale(0)'\n  };\n};\nvar getRealWidth = function getRealWidth(node) {\n  return {\n    width: node.scrollWidth,\n    opacity: 1,\n    transform: 'scale(1)'\n  };\n};\nvar LoadingIcon = function LoadingIcon(_ref) {\n  var prefixCls = _ref.prefixCls,\n    loading = _ref.loading,\n    existIcon = _ref.existIcon;\n  var visible = !!loading;\n  if (existIcon) {\n    return /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(prefixCls, \"-loading-icon\")\n    }, /*#__PURE__*/React.createElement(LoadingOutlined, null));\n  }\n  return /*#__PURE__*/React.createElement(CSSMotion, {\n    visible: visible,\n    // We do not really use this motionName\n    motionName: \"\".concat(prefixCls, \"-loading-icon-motion\"),\n    removeOnLeave: true,\n    onAppearStart: getCollapsedWidth,\n    onAppearActive: getRealWidth,\n    onEnterStart: getCollapsedWidth,\n    onEnterActive: getRealWidth,\n    onLeaveStart: getRealWidth,\n    onLeaveActive: getCollapsedWidth\n  }, function (_ref2, ref) {\n    var className = _ref2.className,\n      style = _ref2.style;\n    return /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(prefixCls, \"-loading-icon\"),\n      style: style,\n      ref: ref\n    }, /*#__PURE__*/React.createElement(LoadingOutlined, {\n      className: className\n    }));\n  });\n};\nexport default LoadingIcon;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\n/* eslint-disable react/button-has-type */\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport SizeContext from '../config-provider/SizeContext';\nimport { useCompactItemContext } from '../space/Compact';\nimport { cloneElement, isFragment } from '../_util/reactNode';\nimport { tuple } from '../_util/type';\nimport warning from '../_util/warning';\nimport Wave from '../_util/wave';\nimport Group, { GroupSizeContext } from './button-group';\nimport LoadingIcon from './LoadingIcon';\nvar rxTwoCNChar = /^[\\u4e00-\\u9fa5]{2}$/;\nvar isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);\nfunction isString(str) {\n  return typeof str === 'string';\n}\nfunction isUnBorderedButtonType(type) {\n  return type === 'text' || type === 'link';\n}\n// Insert one space between two chinese characters automatically.\nfunction insertSpace(child, needInserted) {\n  // Check the child if is undefined or null.\n  if (child === null || child === undefined) {\n    return;\n  }\n  var SPACE = needInserted ? ' ' : '';\n  // strictNullChecks oops.\n  if (typeof child !== 'string' && typeof child !== 'number' && isString(child.type) && isTwoCNChar(child.props.children)) {\n    return cloneElement(child, {\n      children: child.props.children.split('').join(SPACE)\n    });\n  }\n  if (typeof child === 'string') {\n    return isTwoCNChar(child) ? /*#__PURE__*/React.createElement(\"span\", null, child.split('').join(SPACE)) : /*#__PURE__*/React.createElement(\"span\", null, child);\n  }\n  if (isFragment(child)) {\n    return /*#__PURE__*/React.createElement(\"span\", null, child);\n  }\n  return child;\n}\nfunction spaceChildren(children, needInserted) {\n  var isPrevChildPure = false;\n  var childList = [];\n  React.Children.forEach(children, function (child) {\n    var type = _typeof(child);\n    var isCurrentChildPure = type === 'string' || type === 'number';\n    if (isPrevChildPure && isCurrentChildPure) {\n      var lastIndex = childList.length - 1;\n      var lastChild = childList[lastIndex];\n      childList[lastIndex] = \"\".concat(lastChild).concat(child);\n    } else {\n      childList.push(child);\n    }\n    isPrevChildPure = isCurrentChildPure;\n  });\n  // Pass to React.Children.map to auto fill key\n  return React.Children.map(childList, function (child) {\n    return insertSpace(child, needInserted);\n  });\n}\nvar ButtonTypes = tuple('default', 'primary', 'ghost', 'dashed', 'link', 'text');\nvar ButtonShapes = tuple('default', 'circle', 'round');\nvar ButtonHTMLTypes = tuple('submit', 'button', 'reset');\nexport function convertLegacyProps(type) {\n  if (type === 'danger') {\n    return {\n      danger: true\n    };\n  }\n  return {\n    type: type\n  };\n}\nvar InternalButton = function InternalButton(props, ref) {\n  var _classNames;\n  var _props$loading = props.loading,\n    loading = _props$loading === void 0 ? false : _props$loading,\n    customizePrefixCls = props.prefixCls,\n    _props$type = props.type,\n    type = _props$type === void 0 ? 'default' : _props$type,\n    danger = props.danger,\n    _props$shape = props.shape,\n    shape = _props$shape === void 0 ? 'default' : _props$shape,\n    customizeSize = props.size,\n    customDisabled = props.disabled,\n    className = props.className,\n    children = props.children,\n    icon = props.icon,\n    _props$ghost = props.ghost,\n    ghost = _props$ghost === void 0 ? false : _props$ghost,\n    _props$block = props.block,\n    block = _props$block === void 0 ? false : _props$block,\n    _props$htmlType = props.htmlType,\n    htmlType = _props$htmlType === void 0 ? 'button' : _props$htmlType,\n    rest = __rest(props, [\"loading\", \"prefixCls\", \"type\", \"danger\", \"shape\", \"size\", \"disabled\", \"className\", \"children\", \"icon\", \"ghost\", \"block\", \"htmlType\"]);\n  var size = React.useContext(SizeContext);\n  // ===================== Disabled =====================\n  var disabled = React.useContext(DisabledContext);\n  var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n  var groupSize = React.useContext(GroupSizeContext);\n  var _React$useState = React.useState(!!loading),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    innerLoading = _React$useState2[0],\n    setLoading = _React$useState2[1];\n  var _React$useState3 = React.useState(false),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    hasTwoCNChar = _React$useState4[0],\n    setHasTwoCNChar = _React$useState4[1];\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls,\n    autoInsertSpaceInButton = _React$useContext.autoInsertSpaceInButton,\n    direction = _React$useContext.direction;\n  var buttonRef = ref || /*#__PURE__*/React.createRef();\n  var isNeedInserted = function isNeedInserted() {\n    return React.Children.count(children) === 1 && !icon && !isUnBorderedButtonType(type);\n  };\n  var fixTwoCNChar = function fixTwoCNChar() {\n    // Fix for HOC usage like <FormatMessage />\n    if (!buttonRef || !buttonRef.current || autoInsertSpaceInButton === false) {\n      return;\n    }\n    var buttonText = buttonRef.current.textContent;\n    if (isNeedInserted() && isTwoCNChar(buttonText)) {\n      if (!hasTwoCNChar) {\n        setHasTwoCNChar(true);\n      }\n    } else if (hasTwoCNChar) {\n      setHasTwoCNChar(false);\n    }\n  };\n  // =============== Update Loading ===============\n  var loadingOrDelay = typeof loading === 'boolean' ? loading : (loading === null || loading === void 0 ? void 0 : loading.delay) || true;\n  React.useEffect(function () {\n    var delayTimer = null;\n    if (typeof loadingOrDelay === 'number') {\n      delayTimer = window.setTimeout(function () {\n        delayTimer = null;\n        setLoading(loadingOrDelay);\n      }, loadingOrDelay);\n    } else {\n      setLoading(loadingOrDelay);\n    }\n    return function () {\n      if (delayTimer) {\n        // in order to not perform a React state update on an unmounted component\n        // and clear timer after 'loadingOrDelay' updated.\n        window.clearTimeout(delayTimer);\n        delayTimer = null;\n      }\n    };\n  }, [loadingOrDelay]);\n  React.useEffect(fixTwoCNChar, [buttonRef]);\n  var handleClick = function handleClick(e) {\n    var onClick = props.onClick;\n    // https://github.com/ant-design/ant-design/issues/30207\n    if (innerLoading || mergedDisabled) {\n      e.preventDefault();\n      return;\n    }\n    onClick === null || onClick === void 0 ? void 0 : onClick(e);\n  };\n  process.env.NODE_ENV !== \"production\" ? warning(!(typeof icon === 'string' && icon.length > 2), 'Button', \"`icon` is using ReactNode instead of string naming in v4. Please check `\".concat(icon, \"` at https://ant.design/components/icon\")) : void 0;\n  process.env.NODE_ENV !== \"production\" ? warning(!(ghost && isUnBorderedButtonType(type)), 'Button', \"`link` or `text` button can't be a `ghost` button.\") : void 0;\n  var prefixCls = getPrefixCls('btn', customizePrefixCls);\n  var autoInsertSpace = autoInsertSpaceInButton !== false;\n  var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n    compactSize = _useCompactItemContex.compactSize,\n    compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n  var sizeClassNameMap = {\n    large: 'lg',\n    small: 'sm',\n    middle: undefined\n  };\n  var sizeFullname = compactSize || groupSize || customizeSize || size;\n  var sizeCls = sizeFullname ? sizeClassNameMap[sizeFullname] || '' : '';\n  var iconType = innerLoading ? 'loading' : icon;\n  var linkButtonRestProps = omit(rest, ['navigate']);\n  var classes = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(shape), shape !== 'default' && shape), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(type), type), _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(sizeCls), sizeCls), _defineProperty(_classNames, \"\".concat(prefixCls, \"-icon-only\"), !children && children !== 0 && !!iconType), _defineProperty(_classNames, \"\".concat(prefixCls, \"-background-ghost\"), ghost && !isUnBorderedButtonType(type)), _defineProperty(_classNames, \"\".concat(prefixCls, \"-loading\"), innerLoading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-two-chinese-chars\"), hasTwoCNChar && autoInsertSpace && !innerLoading), _defineProperty(_classNames, \"\".concat(prefixCls, \"-block\"), block), _defineProperty(_classNames, \"\".concat(prefixCls, \"-dangerous\"), !!danger), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-disabled\"), linkButtonRestProps.href !== undefined && mergedDisabled), _classNames), compactItemClassnames, className);\n  var iconNode = icon && !innerLoading ? icon : /*#__PURE__*/React.createElement(LoadingIcon, {\n    existIcon: !!icon,\n    prefixCls: prefixCls,\n    loading: !!innerLoading\n  });\n  var kids = children || children === 0 ? spaceChildren(children, isNeedInserted() && autoInsertSpace) : null;\n  if (linkButtonRestProps.href !== undefined) {\n    return /*#__PURE__*/React.createElement(\"a\", _extends({}, linkButtonRestProps, {\n      className: classes,\n      onClick: handleClick,\n      ref: buttonRef\n    }), iconNode, kids);\n  }\n  var buttonNode = /*#__PURE__*/React.createElement(\"button\", _extends({}, rest, {\n    type: htmlType,\n    className: classes,\n    onClick: handleClick,\n    disabled: mergedDisabled,\n    ref: buttonRef\n  }), iconNode, kids);\n  if (isUnBorderedButtonType(type)) {\n    return buttonNode;\n  }\n  return /*#__PURE__*/React.createElement(Wave, {\n    disabled: !!innerLoading\n  }, buttonNode);\n};\nvar Button = /*#__PURE__*/React.forwardRef(InternalButton);\nif (process.env.NODE_ENV !== 'production') {\n  Button.displayName = 'Button';\n}\nButton.Group = Group;\nButton.__ANT_BUTTON = true;\nexport default Button;","import Button from './button';\nexport default Button;","// This icon file is generated automatically.\nvar CloseOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\" } }] }, \"name\": \"close\", \"theme\": \"outlined\" };\nexport default CloseOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport CloseOutlinedSvg from \"@ant-design/icons-svg/es/asn/CloseOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar CloseOutlined = function CloseOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n    ref: ref,\n    icon: CloseOutlinedSvg\n  }));\n};\nCloseOutlined.displayName = 'CloseOutlined';\nexport default /*#__PURE__*/React.forwardRef(CloseOutlined);","import { tuple } from './type';\nexport var PresetStatusColorTypes = tuple('success', 'processing', 'error', 'default', 'warning');\n// eslint-disable-next-line import/prefer-default-export\nexport var PresetColorTypes = tuple('pink', 'red', 'yellow', 'orange', 'cyan', 'green', 'blue', 'purple', 'geekblue', 'magenta', 'volcano', 'gold', 'lime');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nvar CheckableTag = function CheckableTag(_a) {\n  var _classNames;\n  var customizePrefixCls = _a.prefixCls,\n    className = _a.className,\n    checked = _a.checked,\n    onChange = _a.onChange,\n    onClick = _a.onClick,\n    restProps = __rest(_a, [\"prefixCls\", \"className\", \"checked\", \"onChange\", \"onClick\"]);\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls;\n  var handleClick = function handleClick(e) {\n    onChange === null || onChange === void 0 ? void 0 : onChange(!checked);\n    onClick === null || onClick === void 0 ? void 0 : onClick(e);\n  };\n  var prefixCls = getPrefixCls('tag', customizePrefixCls);\n  var cls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-checkable\"), true), _defineProperty(_classNames, \"\".concat(prefixCls, \"-checkable-checked\"), checked), _classNames), className);\n  return /*#__PURE__*/React.createElement(\"span\", _extends({}, restProps, {\n    className: cls,\n    onClick: handleClick\n  }));\n};\nexport default CheckableTag;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport { PresetColorTypes, PresetStatusColorTypes } from '../_util/colors';\nimport Wave from '../_util/wave';\nimport warning from '../_util/warning';\nimport CheckableTag from './CheckableTag';\nvar PresetColorRegex = new RegExp(\"^(\".concat(PresetColorTypes.join('|'), \")(-inverse)?$\"));\nvar PresetStatusColorRegex = new RegExp(\"^(\".concat(PresetStatusColorTypes.join('|'), \")$\"));\nvar InternalTag = function InternalTag(_a, ref) {\n  var _classNames;\n  var customizePrefixCls = _a.prefixCls,\n    className = _a.className,\n    style = _a.style,\n    children = _a.children,\n    icon = _a.icon,\n    color = _a.color,\n    onClose = _a.onClose,\n    closeIcon = _a.closeIcon,\n    _a$closable = _a.closable,\n    closable = _a$closable === void 0 ? false : _a$closable,\n    props = __rest(_a, [\"prefixCls\", \"className\", \"style\", \"children\", \"icon\", \"color\", \"onClose\", \"closeIcon\", \"closable\"]);\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls,\n    direction = _React$useContext.direction;\n  var _React$useState = React.useState(true),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    visible = _React$useState2[0],\n    setVisible = _React$useState2[1];\n  // Warning for deprecated usage\n  if (process.env.NODE_ENV !== 'production') {\n    process.env.NODE_ENV !== \"production\" ? warning(!('visible' in props), 'Tag', '`visible` will be removed in next major version, please use `visible && <Tag />` instead.') : void 0;\n  }\n  React.useEffect(function () {\n    if ('visible' in props) {\n      setVisible(props.visible);\n    }\n  }, [props.visible]);\n  var isPresetColor = function isPresetColor() {\n    if (!color) {\n      return false;\n    }\n    return PresetColorRegex.test(color) || PresetStatusColorRegex.test(color);\n  };\n  var tagStyle = _extends({\n    backgroundColor: color && !isPresetColor() ? color : undefined\n  }, style);\n  var presetColor = isPresetColor();\n  var prefixCls = getPrefixCls('tag', customizePrefixCls);\n  var tagClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(color), presetColor), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-color\"), color && !presetColor), _defineProperty(_classNames, \"\".concat(prefixCls, \"-hidden\"), !visible), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames), className);\n  var handleCloseClick = function handleCloseClick(e) {\n    e.stopPropagation();\n    onClose === null || onClose === void 0 ? void 0 : onClose(e);\n    if (e.defaultPrevented) {\n      return;\n    }\n    if (!('visible' in props)) {\n      setVisible(false);\n    }\n  };\n  var renderCloseIcon = function renderCloseIcon() {\n    if (closable) {\n      return closeIcon ? /*#__PURE__*/React.createElement(\"span\", {\n        className: \"\".concat(prefixCls, \"-close-icon\"),\n        onClick: handleCloseClick\n      }, closeIcon) : /*#__PURE__*/React.createElement(CloseOutlined, {\n        className: \"\".concat(prefixCls, \"-close-icon\"),\n        onClick: handleCloseClick\n      });\n    }\n    return null;\n  };\n  var isNeedWave = 'onClick' in props || children && children.type === 'a';\n  var tagProps = omit(props, ['visible']);\n  var iconNode = icon || null;\n  var kids = iconNode ? /*#__PURE__*/React.createElement(React.Fragment, null, iconNode, /*#__PURE__*/React.createElement(\"span\", null, children)) : children;\n  var tagNode = /*#__PURE__*/React.createElement(\"span\", _extends({}, tagProps, {\n    ref: ref,\n    className: tagClassName,\n    style: tagStyle\n  }), kids, renderCloseIcon());\n  return isNeedWave ? /*#__PURE__*/React.createElement(Wave, null, tagNode) : tagNode;\n};\nvar Tag = /*#__PURE__*/React.forwardRef(InternalTag);\nif (process.env.NODE_ENV !== 'production') {\n  Tag.displayName = 'Tag';\n}\nTag.CheckableTag = CheckableTag;\nexport default Tag;","// This icon file is generated automatically.\nvar CalendarOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M880 184H712v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H384v-64c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v64H144c-17.7 0-32 14.3-32 32v664c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V216c0-17.7-14.3-32-32-32zm-40 656H184V460h656v380zM184 392V256h128v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h256v48c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-48h128v136H184z\" } }] }, \"name\": \"calendar\", \"theme\": \"outlined\" };\nexport default CalendarOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport CalendarOutlinedSvg from \"@ant-design/icons-svg/es/asn/CalendarOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar CalendarOutlined = function CalendarOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n    ref: ref,\n    icon: CalendarOutlinedSvg\n  }));\n};\nCalendarOutlined.displayName = 'CalendarOutlined';\nexport default /*#__PURE__*/React.forwardRef(CalendarOutlined);","// This icon file is generated automatically.\nvar ClockCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z\" } }] }, \"name\": \"clock-circle\", \"theme\": \"outlined\" };\nexport default ClockCircleOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport ClockCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/ClockCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar ClockCircleOutlined = function ClockCircleOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n    ref: ref,\n    icon: ClockCircleOutlinedSvg\n  }));\n};\nClockCircleOutlined.displayName = 'ClockCircleOutlined';\nexport default /*#__PURE__*/React.forwardRef(ClockCircleOutlined);","// This icon file is generated automatically.\nvar CloseCircleFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\" } }] }, \"name\": \"close-circle\", \"theme\": \"filled\" };\nexport default CloseCircleFilled;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport CloseCircleFilledSvg from \"@ant-design/icons-svg/es/asn/CloseCircleFilled\";\nimport AntdIcon from '../components/AntdIcon';\nvar CloseCircleFilled = function CloseCircleFilled(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n    ref: ref,\n    icon: CloseCircleFilledSvg\n  }));\n};\nCloseCircleFilled.displayName = 'CloseCircleFilled';\nexport default /*#__PURE__*/React.forwardRef(CloseCircleFilled);","// This icon file is generated automatically.\nvar SwapRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M873.1 596.2l-164-208A32 32 0 00684 376h-64.8c-6.7 0-10.4 7.7-6.3 13l144.3 183H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h695.9c26.8 0 41.7-30.8 25.2-51.8z\" } }] }, \"name\": \"swap-right\", \"theme\": \"outlined\" };\nexport default SwapRightOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport SwapRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/SwapRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar SwapRightOutlined = function SwapRightOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n    ref: ref,\n    icon: SwapRightOutlinedSvg\n  }));\n};\nSwapRightOutlined.displayName = 'SwapRightOutlined';\nexport default /*#__PURE__*/React.forwardRef(SwapRightOutlined);","import * as React from 'react';\nexport default function useEvent(callback) {\n  var fnRef = React.useRef();\n  fnRef.current = callback;\n  var memoFn = React.useCallback(function () {\n    var _fnRef$current;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args));\n  }, []);\n  return memoFn;\n}","import * as React from 'react';\nimport canUseDom from \"../Dom/canUseDom\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nvar useInternalLayoutEffect = process.env.NODE_ENV !== 'test' && canUseDom() ? React.useLayoutEffect : React.useEffect;\nvar useLayoutEffect = function useLayoutEffect(callback, deps) {\n  var firstMountRef = React.useRef(true);\n  useInternalLayoutEffect(function () {\n    return callback(firstMountRef.current);\n  }, deps);\n\n  // We tell react that first mount has passed\n  useInternalLayoutEffect(function () {\n    firstMountRef.current = false;\n    return function () {\n      firstMountRef.current = true;\n    };\n  }, []);\n};\nexport var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) {\n  useLayoutEffect(function (firstMount) {\n    if (!firstMount) {\n      return callback();\n    }\n  }, deps);\n};\nexport default useLayoutEffect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"./useEvent\";\nimport { useLayoutUpdateEffect } from \"./useLayoutEffect\";\nimport useState from \"./useState\";\n/** We only think `undefined` is empty */\nfunction hasValue(value) {\n  return value !== undefined;\n}\n\n/**\n * Similar to `useState` but will use props value if provided.\n * Note that internal use rc-util `useState` hook.\n */\nexport default function useMergedState(defaultStateValue, option) {\n  var _ref = option || {},\n    defaultValue = _ref.defaultValue,\n    value = _ref.value,\n    onChange = _ref.onChange,\n    postState = _ref.postState;\n\n  // ======================= Init =======================\n  var _useState = useState(function () {\n      if (hasValue(value)) {\n        return value;\n      } else if (hasValue(defaultValue)) {\n        return typeof defaultValue === 'function' ? defaultValue() : defaultValue;\n      } else {\n        return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue;\n      }\n    }),\n    _useState2 = _slicedToArray(_useState, 2),\n    innerValue = _useState2[0],\n    setInnerValue = _useState2[1];\n  var mergedValue = value !== undefined ? value : innerValue;\n  var postMergedValue = postState ? postState(mergedValue) : mergedValue;\n\n  // ====================== Change ======================\n  var onChangeFn = useEvent(onChange);\n  var _useState3 = useState([mergedValue]),\n    _useState4 = _slicedToArray(_useState3, 2),\n    prevValue = _useState4[0],\n    setPrevValue = _useState4[1];\n  useLayoutUpdateEffect(function () {\n    var prev = prevValue[0];\n    if (innerValue !== prev) {\n      onChangeFn(innerValue, prev);\n    }\n  }, [prevValue]);\n\n  // Sync value back to `undefined` when it from control to un-control\n  useLayoutUpdateEffect(function () {\n    if (!hasValue(value)) {\n      setInnerValue(value);\n    }\n  }, [value]);\n\n  // ====================== Update ======================\n  var triggerChange = useEvent(function (updater, ignoreDestroy) {\n    setInnerValue(updater, ignoreDestroy);\n    setPrevValue([mergedValue], ignoreDestroy);\n  });\n  return [postMergedValue, triggerChange];\n}","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n  /**\n   * MAC_ENTER\n   */\n  MAC_ENTER: 3,\n  /**\n   * BACKSPACE\n   */\n  BACKSPACE: 8,\n  /**\n   * TAB\n   */\n  TAB: 9,\n  /**\n   * NUMLOCK on FF/Safari Mac\n   */\n  NUM_CENTER: 12,\n  // NUMLOCK on FF/Safari Mac\n  /**\n   * ENTER\n   */\n  ENTER: 13,\n  /**\n   * SHIFT\n   */\n  SHIFT: 16,\n  /**\n   * CTRL\n   */\n  CTRL: 17,\n  /**\n   * ALT\n   */\n  ALT: 18,\n  /**\n   * PAUSE\n   */\n  PAUSE: 19,\n  /**\n   * CAPS_LOCK\n   */\n  CAPS_LOCK: 20,\n  /**\n   * ESC\n   */\n  ESC: 27,\n  /**\n   * SPACE\n   */\n  SPACE: 32,\n  /**\n   * PAGE_UP\n   */\n  PAGE_UP: 33,\n  // also NUM_NORTH_EAST\n  /**\n   * PAGE_DOWN\n   */\n  PAGE_DOWN: 34,\n  // also NUM_SOUTH_EAST\n  /**\n   * END\n   */\n  END: 35,\n  // also NUM_SOUTH_WEST\n  /**\n   * HOME\n   */\n  HOME: 36,\n  // also NUM_NORTH_WEST\n  /**\n   * LEFT\n   */\n  LEFT: 37,\n  // also NUM_WEST\n  /**\n   * UP\n   */\n  UP: 38,\n  // also NUM_NORTH\n  /**\n   * RIGHT\n   */\n  RIGHT: 39,\n  // also NUM_EAST\n  /**\n   * DOWN\n   */\n  DOWN: 40,\n  // also NUM_SOUTH\n  /**\n   * PRINT_SCREEN\n   */\n  PRINT_SCREEN: 44,\n  /**\n   * INSERT\n   */\n  INSERT: 45,\n  // also NUM_INSERT\n  /**\n   * DELETE\n   */\n  DELETE: 46,\n  // also NUM_DELETE\n  /**\n   * ZERO\n   */\n  ZERO: 48,\n  /**\n   * ONE\n   */\n  ONE: 49,\n  /**\n   * TWO\n   */\n  TWO: 50,\n  /**\n   * THREE\n   */\n  THREE: 51,\n  /**\n   * FOUR\n   */\n  FOUR: 52,\n  /**\n   * FIVE\n   */\n  FIVE: 53,\n  /**\n   * SIX\n   */\n  SIX: 54,\n  /**\n   * SEVEN\n   */\n  SEVEN: 55,\n  /**\n   * EIGHT\n   */\n  EIGHT: 56,\n  /**\n   * NINE\n   */\n  NINE: 57,\n  /**\n   * QUESTION_MARK\n   */\n  QUESTION_MARK: 63,\n  // needs localization\n  /**\n   * A\n   */\n  A: 65,\n  /**\n   * B\n   */\n  B: 66,\n  /**\n   * C\n   */\n  C: 67,\n  /**\n   * D\n   */\n  D: 68,\n  /**\n   * E\n   */\n  E: 69,\n  /**\n   * F\n   */\n  F: 70,\n  /**\n   * G\n   */\n  G: 71,\n  /**\n   * H\n   */\n  H: 72,\n  /**\n   * I\n   */\n  I: 73,\n  /**\n   * J\n   */\n  J: 74,\n  /**\n   * K\n   */\n  K: 75,\n  /**\n   * L\n   */\n  L: 76,\n  /**\n   * M\n   */\n  M: 77,\n  /**\n   * N\n   */\n  N: 78,\n  /**\n   * O\n   */\n  O: 79,\n  /**\n   * P\n   */\n  P: 80,\n  /**\n   * Q\n   */\n  Q: 81,\n  /**\n   * R\n   */\n  R: 82,\n  /**\n   * S\n   */\n  S: 83,\n  /**\n   * T\n   */\n  T: 84,\n  /**\n   * U\n   */\n  U: 85,\n  /**\n   * V\n   */\n  V: 86,\n  /**\n   * W\n   */\n  W: 87,\n  /**\n   * X\n   */\n  X: 88,\n  /**\n   * Y\n   */\n  Y: 89,\n  /**\n   * Z\n   */\n  Z: 90,\n  /**\n   * META\n   */\n  META: 91,\n  // WIN_KEY_LEFT\n  /**\n   * WIN_KEY_RIGHT\n   */\n  WIN_KEY_RIGHT: 92,\n  /**\n   * CONTEXT_MENU\n   */\n  CONTEXT_MENU: 93,\n  /**\n   * NUM_ZERO\n   */\n  NUM_ZERO: 96,\n  /**\n   * NUM_ONE\n   */\n  NUM_ONE: 97,\n  /**\n   * NUM_TWO\n   */\n  NUM_TWO: 98,\n  /**\n   * NUM_THREE\n   */\n  NUM_THREE: 99,\n  /**\n   * NUM_FOUR\n   */\n  NUM_FOUR: 100,\n  /**\n   * NUM_FIVE\n   */\n  NUM_FIVE: 101,\n  /**\n   * NUM_SIX\n   */\n  NUM_SIX: 102,\n  /**\n   * NUM_SEVEN\n   */\n  NUM_SEVEN: 103,\n  /**\n   * NUM_EIGHT\n   */\n  NUM_EIGHT: 104,\n  /**\n   * NUM_NINE\n   */\n  NUM_NINE: 105,\n  /**\n   * NUM_MULTIPLY\n   */\n  NUM_MULTIPLY: 106,\n  /**\n   * NUM_PLUS\n   */\n  NUM_PLUS: 107,\n  /**\n   * NUM_MINUS\n   */\n  NUM_MINUS: 109,\n  /**\n   * NUM_PERIOD\n   */\n  NUM_PERIOD: 110,\n  /**\n   * NUM_DIVISION\n   */\n  NUM_DIVISION: 111,\n  /**\n   * F1\n   */\n  F1: 112,\n  /**\n   * F2\n   */\n  F2: 113,\n  /**\n   * F3\n   */\n  F3: 114,\n  /**\n   * F4\n   */\n  F4: 115,\n  /**\n   * F5\n   */\n  F5: 116,\n  /**\n   * F6\n   */\n  F6: 117,\n  /**\n   * F7\n   */\n  F7: 118,\n  /**\n   * F8\n   */\n  F8: 119,\n  /**\n   * F9\n   */\n  F9: 120,\n  /**\n   * F10\n   */\n  F10: 121,\n  /**\n   * F11\n   */\n  F11: 122,\n  /**\n   * F12\n   */\n  F12: 123,\n  /**\n   * NUMLOCK\n   */\n  NUMLOCK: 144,\n  /**\n   * SEMICOLON\n   */\n  SEMICOLON: 186,\n  // needs localization\n  /**\n   * DASH\n   */\n  DASH: 189,\n  // needs localization\n  /**\n   * EQUALS\n   */\n  EQUALS: 187,\n  // needs localization\n  /**\n   * COMMA\n   */\n  COMMA: 188,\n  // needs localization\n  /**\n   * PERIOD\n   */\n  PERIOD: 190,\n  // needs localization\n  /**\n   * SLASH\n   */\n  SLASH: 191,\n  // needs localization\n  /**\n   * APOSTROPHE\n   */\n  APOSTROPHE: 192,\n  // needs localization\n  /**\n   * SINGLE_QUOTE\n   */\n  SINGLE_QUOTE: 222,\n  // needs localization\n  /**\n   * OPEN_SQUARE_BRACKET\n   */\n  OPEN_SQUARE_BRACKET: 219,\n  // needs localization\n  /**\n   * BACKSLASH\n   */\n  BACKSLASH: 220,\n  // needs localization\n  /**\n   * CLOSE_SQUARE_BRACKET\n   */\n  CLOSE_SQUARE_BRACKET: 221,\n  // needs localization\n  /**\n   * WIN_KEY\n   */\n  WIN_KEY: 224,\n  /**\n   * MAC_FF_META\n   */\n  MAC_FF_META: 224,\n  // Firefox (Gecko) fires this for the meta key instead of 91\n  /**\n   * WIN_IME\n   */\n  WIN_IME: 229,\n  // ======================== Function ========================\n  /**\n   * whether text and modified key is entered at the same time.\n   */\n  isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n    var keyCode = e.keyCode;\n    if (e.altKey && !e.ctrlKey || e.metaKey ||\n    // Function keys don't generate text\n    keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n      return false;\n    }\n\n    // The following keys are quite harmless, even in combination with\n    // CTRL, ALT or SHIFT.\n    switch (keyCode) {\n      case KeyCode.ALT:\n      case KeyCode.CAPS_LOCK:\n      case KeyCode.CONTEXT_MENU:\n      case KeyCode.CTRL:\n      case KeyCode.DOWN:\n      case KeyCode.END:\n      case KeyCode.ESC:\n      case KeyCode.HOME:\n      case KeyCode.INSERT:\n      case KeyCode.LEFT:\n      case KeyCode.MAC_FF_META:\n      case KeyCode.META:\n      case KeyCode.NUMLOCK:\n      case KeyCode.NUM_CENTER:\n      case KeyCode.PAGE_DOWN:\n      case KeyCode.PAGE_UP:\n      case KeyCode.PAUSE:\n      case KeyCode.PRINT_SCREEN:\n      case KeyCode.RIGHT:\n      case KeyCode.SHIFT:\n      case KeyCode.UP:\n      case KeyCode.WIN_KEY:\n      case KeyCode.WIN_KEY_RIGHT:\n        return false;\n      default:\n        return true;\n    }\n  },\n  /**\n   * whether character is entered.\n   */\n  isCharacterKey: function isCharacterKey(keyCode) {\n    if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n      return true;\n    }\n    if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n      return true;\n    }\n    if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n      return true;\n    }\n\n    // Safari sends zero key code for non-latin characters.\n    if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n      return true;\n    }\n    switch (keyCode) {\n      case KeyCode.SPACE:\n      case KeyCode.QUESTION_MARK:\n      case KeyCode.NUM_PLUS:\n      case KeyCode.NUM_MINUS:\n      case KeyCode.NUM_PERIOD:\n      case KeyCode.NUM_DIVISION:\n      case KeyCode.SEMICOLON:\n      case KeyCode.DASH:\n      case KeyCode.EQUALS:\n      case KeyCode.COMMA:\n      case KeyCode.PERIOD:\n      case KeyCode.SLASH:\n      case KeyCode.APOSTROPHE:\n      case KeyCode.SINGLE_QUOTE:\n      case KeyCode.OPEN_SQUARE_BRACKET:\n      case KeyCode.BACKSLASH:\n      case KeyCode.CLOSE_SQUARE_BRACKET:\n        return true;\n      default:\n        return false;\n    }\n  }\n};\nexport default KeyCode;","import * as React from 'react';\nvar PanelContext = /*#__PURE__*/React.createContext({});\nexport default PanelContext;","import * as React from 'react';\nimport PanelContext from '../PanelContext';\nvar HIDDEN_STYLE = {\n  visibility: 'hidden'\n};\nfunction Header(_ref) {\n  var prefixCls = _ref.prefixCls,\n    _ref$prevIcon = _ref.prevIcon,\n    prevIcon = _ref$prevIcon === void 0 ? \"\\u2039\" : _ref$prevIcon,\n    _ref$nextIcon = _ref.nextIcon,\n    nextIcon = _ref$nextIcon === void 0 ? \"\\u203A\" : _ref$nextIcon,\n    _ref$superPrevIcon = _ref.superPrevIcon,\n    superPrevIcon = _ref$superPrevIcon === void 0 ? \"\\xAB\" : _ref$superPrevIcon,\n    _ref$superNextIcon = _ref.superNextIcon,\n    superNextIcon = _ref$superNextIcon === void 0 ? \"\\xBB\" : _ref$superNextIcon,\n    onSuperPrev = _ref.onSuperPrev,\n    onSuperNext = _ref.onSuperNext,\n    onPrev = _ref.onPrev,\n    onNext = _ref.onNext,\n    children = _ref.children;\n  var _React$useContext = React.useContext(PanelContext),\n    hideNextBtn = _React$useContext.hideNextBtn,\n    hidePrevBtn = _React$useContext.hidePrevBtn;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: prefixCls\n  }, onSuperPrev && /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    onClick: onSuperPrev,\n    tabIndex: -1,\n    className: \"\".concat(prefixCls, \"-super-prev-btn\"),\n    style: hidePrevBtn ? HIDDEN_STYLE : {}\n  }, superPrevIcon), onPrev && /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    onClick: onPrev,\n    tabIndex: -1,\n    className: \"\".concat(prefixCls, \"-prev-btn\"),\n    style: hidePrevBtn ? HIDDEN_STYLE : {}\n  }, prevIcon), /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-view\")\n  }, children), onNext && /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    onClick: onNext,\n    tabIndex: -1,\n    className: \"\".concat(prefixCls, \"-next-btn\"),\n    style: hideNextBtn ? HIDDEN_STYLE : {}\n  }, nextIcon), onSuperNext && /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    onClick: onSuperNext,\n    tabIndex: -1,\n    className: \"\".concat(prefixCls, \"-super-next-btn\"),\n    style: hideNextBtn ? HIDDEN_STYLE : {}\n  }, superNextIcon));\n}\nexport default Header;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Header from '../Header';\nimport { DECADE_DISTANCE_COUNT } from '.';\nimport PanelContext from '../../PanelContext';\nfunction DecadeHeader(props) {\n  var prefixCls = props.prefixCls,\n    generateConfig = props.generateConfig,\n    viewDate = props.viewDate,\n    onPrevDecades = props.onPrevDecades,\n    onNextDecades = props.onNextDecades;\n  var _React$useContext = React.useContext(PanelContext),\n    hideHeader = _React$useContext.hideHeader;\n  if (hideHeader) {\n    return null;\n  }\n  var headerPrefixCls = \"\".concat(prefixCls, \"-header\");\n  var yearNumber = generateConfig.getYear(viewDate);\n  var startYear = Math.floor(yearNumber / DECADE_DISTANCE_COUNT) * DECADE_DISTANCE_COUNT;\n  var endYear = startYear + DECADE_DISTANCE_COUNT - 1;\n  return /*#__PURE__*/React.createElement(Header, _extends({}, props, {\n    prefixCls: headerPrefixCls,\n    onSuperPrev: onPrevDecades,\n    onSuperNext: onNextDecades\n  }), startYear, \"-\", endYear);\n}\nexport default DecadeHeader;","export function setTime(generateConfig, date, hour, minute, second) {\n  var nextTime = generateConfig.setHour(date, hour);\n  nextTime = generateConfig.setMinute(nextTime, minute);\n  nextTime = generateConfig.setSecond(nextTime, second);\n  return nextTime;\n}\nexport function setDateTime(generateConfig, date, defaultDate) {\n  if (!defaultDate) {\n    return date;\n  }\n  var newDate = date;\n  newDate = generateConfig.setHour(newDate, generateConfig.getHour(defaultDate));\n  newDate = generateConfig.setMinute(newDate, generateConfig.getMinute(defaultDate));\n  newDate = generateConfig.setSecond(newDate, generateConfig.getSecond(defaultDate));\n  return newDate;\n}\nexport function getLowerBoundTime(hour, minute, second, hourStep, minuteStep, secondStep) {\n  var lowerBoundHour = Math.floor(hour / hourStep) * hourStep;\n  if (lowerBoundHour < hour) {\n    return [lowerBoundHour, 60 - minuteStep, 60 - secondStep];\n  }\n  var lowerBoundMinute = Math.floor(minute / minuteStep) * minuteStep;\n  if (lowerBoundMinute < minute) {\n    return [lowerBoundHour, lowerBoundMinute, 60 - secondStep];\n  }\n  var lowerBoundSecond = Math.floor(second / secondStep) * secondStep;\n  return [lowerBoundHour, lowerBoundMinute, lowerBoundSecond];\n}\nexport function getLastDay(generateConfig, date) {\n  var year = generateConfig.getYear(date);\n  var month = generateConfig.getMonth(date) + 1;\n  var endDate = generateConfig.getEndDate(generateConfig.getFixedDate(\"\".concat(year, \"-\").concat(month, \"-01\")));\n  var lastDay = generateConfig.getDate(endDate);\n  var monthShow = month < 10 ? \"0\".concat(month) : \"\".concat(month);\n  return \"\".concat(year, \"-\").concat(monthShow, \"-\").concat(lastDay);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport PanelContext from '../PanelContext';\nimport { getLastDay } from '../utils/timeUtil';\nimport { getCellDateDisabled } from '../utils/dateUtil';\nexport default function PanelBody(_ref) {\n  var prefixCls = _ref.prefixCls,\n    disabledDate = _ref.disabledDate,\n    onSelect = _ref.onSelect,\n    picker = _ref.picker,\n    rowNum = _ref.rowNum,\n    colNum = _ref.colNum,\n    prefixColumn = _ref.prefixColumn,\n    rowClassName = _ref.rowClassName,\n    baseDate = _ref.baseDate,\n    getCellClassName = _ref.getCellClassName,\n    getCellText = _ref.getCellText,\n    getCellNode = _ref.getCellNode,\n    getCellDate = _ref.getCellDate,\n    generateConfig = _ref.generateConfig,\n    titleCell = _ref.titleCell,\n    headerCells = _ref.headerCells;\n  var _React$useContext = React.useContext(PanelContext),\n    onDateMouseEnter = _React$useContext.onDateMouseEnter,\n    onDateMouseLeave = _React$useContext.onDateMouseLeave,\n    mode = _React$useContext.mode;\n  var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n  // =============================== Body ===============================\n  var rows = [];\n  for (var i = 0; i < rowNum; i += 1) {\n    var row = [];\n    var rowStartDate = void 0;\n    var _loop = function _loop() {\n      var _objectSpread2;\n      var offset = i * colNum + j;\n      var currentDate = getCellDate(baseDate, offset);\n      var disabled = getCellDateDisabled({\n        cellDate: currentDate,\n        mode: mode,\n        disabledDate: disabledDate,\n        generateConfig: generateConfig\n      });\n      if (j === 0) {\n        rowStartDate = currentDate;\n        if (prefixColumn) {\n          row.push(prefixColumn(rowStartDate));\n        }\n      }\n      var title = titleCell && titleCell(currentDate);\n      row.push( /*#__PURE__*/React.createElement(\"td\", {\n        key: j,\n        title: title,\n        className: classNames(cellPrefixCls, _objectSpread((_objectSpread2 = {}, _defineProperty(_objectSpread2, \"\".concat(cellPrefixCls, \"-disabled\"), disabled), _defineProperty(_objectSpread2, \"\".concat(cellPrefixCls, \"-start\"), getCellText(currentDate) === 1 || picker === 'year' && Number(title) % 10 === 0), _defineProperty(_objectSpread2, \"\".concat(cellPrefixCls, \"-end\"), title === getLastDay(generateConfig, currentDate) || picker === 'year' && Number(title) % 10 === 9), _objectSpread2), getCellClassName(currentDate))),\n        onClick: function onClick() {\n          if (!disabled) {\n            onSelect(currentDate);\n          }\n        },\n        onMouseEnter: function onMouseEnter() {\n          if (!disabled && onDateMouseEnter) {\n            onDateMouseEnter(currentDate);\n          }\n        },\n        onMouseLeave: function onMouseLeave() {\n          if (!disabled && onDateMouseLeave) {\n            onDateMouseLeave(currentDate);\n          }\n        }\n      }, getCellNode ? getCellNode(currentDate) : /*#__PURE__*/React.createElement(\"div\", {\n        className: \"\".concat(cellPrefixCls, \"-inner\")\n      }, getCellText(currentDate))));\n    };\n    for (var j = 0; j < colNum; j += 1) {\n      _loop();\n    }\n    rows.push( /*#__PURE__*/React.createElement(\"tr\", {\n      key: i,\n      className: rowClassName && rowClassName(rowStartDate)\n    }, row));\n  }\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-body\")\n  }, /*#__PURE__*/React.createElement(\"table\", {\n    className: \"\".concat(prefixCls, \"-content\")\n  }, headerCells && /*#__PURE__*/React.createElement(\"thead\", null, /*#__PURE__*/React.createElement(\"tr\", null, headerCells)), /*#__PURE__*/React.createElement(\"tbody\", null, rows)));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { DECADE_DISTANCE_COUNT, DECADE_UNIT_DIFF } from '.';\nimport PanelBody from '../PanelBody';\nexport var DECADE_COL_COUNT = 3;\nvar DECADE_ROW_COUNT = 4;\nfunction DecadeBody(props) {\n  var DECADE_UNIT_DIFF_DES = DECADE_UNIT_DIFF - 1;\n  var prefixCls = props.prefixCls,\n    viewDate = props.viewDate,\n    generateConfig = props.generateConfig;\n  var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n  var yearNumber = generateConfig.getYear(viewDate);\n  var decadeYearNumber = Math.floor(yearNumber / DECADE_UNIT_DIFF) * DECADE_UNIT_DIFF;\n  var startDecadeYear = Math.floor(yearNumber / DECADE_DISTANCE_COUNT) * DECADE_DISTANCE_COUNT;\n  var endDecadeYear = startDecadeYear + DECADE_DISTANCE_COUNT - 1;\n  var baseDecadeYear = generateConfig.setYear(viewDate, startDecadeYear - Math.ceil((DECADE_COL_COUNT * DECADE_ROW_COUNT * DECADE_UNIT_DIFF - DECADE_DISTANCE_COUNT) / 2));\n  var getCellClassName = function getCellClassName(date) {\n    var _ref;\n    var startDecadeNumber = generateConfig.getYear(date);\n    var endDecadeNumber = startDecadeNumber + DECADE_UNIT_DIFF_DES;\n    return _ref = {}, _defineProperty(_ref, \"\".concat(cellPrefixCls, \"-in-view\"), startDecadeYear <= startDecadeNumber && endDecadeNumber <= endDecadeYear), _defineProperty(_ref, \"\".concat(cellPrefixCls, \"-selected\"), startDecadeNumber === decadeYearNumber), _ref;\n  };\n  return /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {\n    rowNum: DECADE_ROW_COUNT,\n    colNum: DECADE_COL_COUNT,\n    baseDate: baseDecadeYear,\n    getCellText: function getCellText(date) {\n      var startDecadeNumber = generateConfig.getYear(date);\n      return \"\".concat(startDecadeNumber, \"-\").concat(startDecadeNumber + DECADE_UNIT_DIFF_DES);\n    },\n    getCellClassName: getCellClassName,\n    getCellDate: function getCellDate(date, offset) {\n      return generateConfig.addYear(date, offset * DECADE_UNIT_DIFF);\n    }\n  }));\n}\nexport default DecadeBody;","export default (function (element) {\n  if (!element) {\n    return false;\n  }\n  if (element instanceof Element) {\n    if (element.offsetParent) {\n      return true;\n    }\n    if (element.getBBox) {\n      var _getBBox = element.getBBox(),\n        width = _getBBox.width,\n        height = _getBBox.height;\n      if (width || height) {\n        return true;\n      }\n    }\n    if (element.getBoundingClientRect) {\n      var _element$getBoundingC = element.getBoundingClientRect(),\n        _width = _element$getBoundingC.width,\n        _height = _element$getBoundingC.height;\n      if (_width || _height) {\n        return true;\n      }\n    }\n  }\n  return false;\n});","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport raf from \"rc-util/es/raf\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nvar scrollIds = new Map();\n/** Trigger when element is visible in view */\nexport function waitElementReady(element, callback) {\n  var id;\n  function tryOrNextFrame() {\n    if (isVisible(element)) {\n      callback();\n    } else {\n      id = raf(function () {\n        tryOrNextFrame();\n      });\n    }\n  }\n  tryOrNextFrame();\n  return function () {\n    raf.cancel(id);\n  };\n}\n/* eslint-disable no-param-reassign */\nexport function scrollTo(element, to, duration) {\n  if (scrollIds.get(element)) {\n    cancelAnimationFrame(scrollIds.get(element));\n  }\n  // jump to target if duration zero\n  if (duration <= 0) {\n    scrollIds.set(element, requestAnimationFrame(function () {\n      element.scrollTop = to;\n    }));\n    return;\n  }\n  var difference = to - element.scrollTop;\n  var perTick = difference / duration * 10;\n  scrollIds.set(element, requestAnimationFrame(function () {\n    element.scrollTop += perTick;\n    if (element.scrollTop !== to) {\n      scrollTo(element, to, duration - 10);\n    }\n  }));\n}\nexport function createKeyDownHandler(event, _ref) {\n  var onLeftRight = _ref.onLeftRight,\n    onCtrlLeftRight = _ref.onCtrlLeftRight,\n    onUpDown = _ref.onUpDown,\n    onPageUpDown = _ref.onPageUpDown,\n    onEnter = _ref.onEnter;\n  var which = event.which,\n    ctrlKey = event.ctrlKey,\n    metaKey = event.metaKey;\n  switch (which) {\n    case KeyCode.LEFT:\n      if (ctrlKey || metaKey) {\n        if (onCtrlLeftRight) {\n          onCtrlLeftRight(-1);\n          return true;\n        }\n      } else if (onLeftRight) {\n        onLeftRight(-1);\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n    case KeyCode.RIGHT:\n      if (ctrlKey || metaKey) {\n        if (onCtrlLeftRight) {\n          onCtrlLeftRight(1);\n          return true;\n        }\n      } else if (onLeftRight) {\n        onLeftRight(1);\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n    case KeyCode.UP:\n      if (onUpDown) {\n        onUpDown(-1);\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n    case KeyCode.DOWN:\n      if (onUpDown) {\n        onUpDown(1);\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n    case KeyCode.PAGE_UP:\n      if (onPageUpDown) {\n        onPageUpDown(-1);\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n    case KeyCode.PAGE_DOWN:\n      if (onPageUpDown) {\n        onPageUpDown(1);\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n    case KeyCode.ENTER:\n      if (onEnter) {\n        onEnter();\n        return true;\n      }\n      /* istanbul ignore next */\n      break;\n  }\n  return false;\n}\n// ===================== Format =====================\nexport function getDefaultFormat(format, picker, showTime, use12Hours) {\n  var mergedFormat = format;\n  if (!mergedFormat) {\n    switch (picker) {\n      case 'time':\n        mergedFormat = use12Hours ? 'hh:mm:ss a' : 'HH:mm:ss';\n        break;\n      case 'week':\n        mergedFormat = 'gggg-wo';\n        break;\n      case 'month':\n        mergedFormat = 'YYYY-MM';\n        break;\n      case 'quarter':\n        mergedFormat = 'YYYY-[Q]Q';\n        break;\n      case 'year':\n        mergedFormat = 'YYYY';\n        break;\n      default:\n        mergedFormat = showTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD';\n    }\n  }\n  return mergedFormat;\n}\nexport function getInputSize(picker, format, generateConfig) {\n  var defaultSize = picker === 'time' ? 8 : 10;\n  var length = typeof format === 'function' ? format(generateConfig.getNow()).length : format.length;\n  return Math.max(defaultSize, length) + 2;\n}\nvar globalClickFunc = null;\nvar clickCallbacks = new Set();\nexport function addGlobalMouseDownEvent(callback) {\n  if (!globalClickFunc && typeof window !== 'undefined' && window.addEventListener) {\n    globalClickFunc = function globalClickFunc(e) {\n      // Clone a new list to avoid repeat trigger events\n      _toConsumableArray(clickCallbacks).forEach(function (queueFunc) {\n        queueFunc(e);\n      });\n    };\n    window.addEventListener('mousedown', globalClickFunc);\n  }\n  clickCallbacks.add(callback);\n  return function () {\n    clickCallbacks.delete(callback);\n    if (clickCallbacks.size === 0) {\n      window.removeEventListener('mousedown', globalClickFunc);\n      globalClickFunc = null;\n    }\n  };\n}\nexport function getTargetFromEvent(e) {\n  var target = e.target;\n  // get target if in shadow dom\n  if (e.composed && target.shadowRoot) {\n    var _e$composedPath;\n    return ((_e$composedPath = e.composedPath) === null || _e$composedPath === void 0 ? void 0 : _e$composedPath.call(e)[0]) || target;\n  }\n  return target;\n}\n// ====================== Mode ======================\nvar getYearNextMode = function getYearNextMode(next) {\n  if (next === 'month' || next === 'date') {\n    return 'year';\n  }\n  return next;\n};\nvar getMonthNextMode = function getMonthNextMode(next) {\n  if (next === 'date') {\n    return 'month';\n  }\n  return next;\n};\nvar getQuarterNextMode = function getQuarterNextMode(next) {\n  if (next === 'month' || next === 'date') {\n    return 'quarter';\n  }\n  return next;\n};\nvar getWeekNextMode = function getWeekNextMode(next) {\n  if (next === 'date') {\n    return 'week';\n  }\n  return next;\n};\nexport var PickerModeMap = {\n  year: getYearNextMode,\n  month: getMonthNextMode,\n  quarter: getQuarterNextMode,\n  week: getWeekNextMode,\n  time: null,\n  date: null\n};\nexport function elementsContains(elements, target) {\n  return elements.some(function (ele) {\n    return ele && ele.contains(target);\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport DecadeHeader from './DecadeHeader';\nimport DecadeBody, { DECADE_COL_COUNT } from './DecadeBody';\nimport { createKeyDownHandler } from '../../utils/uiUtil';\nexport var DECADE_UNIT_DIFF = 10;\nexport var DECADE_DISTANCE_COUNT = DECADE_UNIT_DIFF * 10;\nfunction DecadePanel(props) {\n  var prefixCls = props.prefixCls,\n    onViewDateChange = props.onViewDateChange,\n    generateConfig = props.generateConfig,\n    viewDate = props.viewDate,\n    operationRef = props.operationRef,\n    onSelect = props.onSelect,\n    onPanelChange = props.onPanelChange;\n  var panelPrefixCls = \"\".concat(prefixCls, \"-decade-panel\");\n  // ======================= Keyboard =======================\n  operationRef.current = {\n    onKeyDown: function onKeyDown(event) {\n      return createKeyDownHandler(event, {\n        onLeftRight: function onLeftRight(diff) {\n          onSelect(generateConfig.addYear(viewDate, diff * DECADE_UNIT_DIFF), 'key');\n        },\n        onCtrlLeftRight: function onCtrlLeftRight(diff) {\n          onSelect(generateConfig.addYear(viewDate, diff * DECADE_DISTANCE_COUNT), 'key');\n        },\n        onUpDown: function onUpDown(diff) {\n          onSelect(generateConfig.addYear(viewDate, diff * DECADE_UNIT_DIFF * DECADE_COL_COUNT), 'key');\n        },\n        onEnter: function onEnter() {\n          onPanelChange('year', viewDate);\n        }\n      });\n    }\n  };\n  // ==================== View Operation ====================\n  var onDecadesChange = function onDecadesChange(diff) {\n    var newDate = generateConfig.addYear(viewDate, diff * DECADE_DISTANCE_COUNT);\n    onViewDateChange(newDate);\n    onPanelChange(null, newDate);\n  };\n  var onInternalSelect = function onInternalSelect(date) {\n    onSelect(date, 'mouse');\n    onPanelChange('year', date);\n  };\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: panelPrefixCls\n  }, /*#__PURE__*/React.createElement(DecadeHeader, _extends({}, props, {\n    prefixCls: prefixCls,\n    onPrevDecades: function onPrevDecades() {\n      onDecadesChange(-1);\n    },\n    onNextDecades: function onNextDecades() {\n      onDecadesChange(1);\n    }\n  })), /*#__PURE__*/React.createElement(DecadeBody, _extends({}, props, {\n    prefixCls: prefixCls,\n    onSelect: onInternalSelect\n  })));\n}\nexport default DecadePanel;","import { DECADE_UNIT_DIFF } from '../panels/DecadePanel/index';\nexport var WEEK_DAY_COUNT = 7;\nexport function isNullEqual(value1, value2) {\n  if (!value1 && !value2) {\n    return true;\n  }\n  if (!value1 || !value2) {\n    return false;\n  }\n  return undefined;\n}\nexport function isSameDecade(generateConfig, decade1, decade2) {\n  var equal = isNullEqual(decade1, decade2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n  var num1 = Math.floor(generateConfig.getYear(decade1) / 10);\n  var num2 = Math.floor(generateConfig.getYear(decade2) / 10);\n  return num1 === num2;\n}\nexport function isSameYear(generateConfig, year1, year2) {\n  var equal = isNullEqual(year1, year2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n  return generateConfig.getYear(year1) === generateConfig.getYear(year2);\n}\nexport function getQuarter(generateConfig, date) {\n  var quota = Math.floor(generateConfig.getMonth(date) / 3);\n  return quota + 1;\n}\nexport function isSameQuarter(generateConfig, quarter1, quarter2) {\n  var equal = isNullEqual(quarter1, quarter2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n  return isSameYear(generateConfig, quarter1, quarter2) && getQuarter(generateConfig, quarter1) === getQuarter(generateConfig, quarter2);\n}\nexport function isSameMonth(generateConfig, month1, month2) {\n  var equal = isNullEqual(month1, month2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n  return isSameYear(generateConfig, month1, month2) && generateConfig.getMonth(month1) === generateConfig.getMonth(month2);\n}\nexport function isSameDate(generateConfig, date1, date2) {\n  var equal = isNullEqual(date1, date2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n  return generateConfig.getYear(date1) === generateConfig.getYear(date2) && generateConfig.getMonth(date1) === generateConfig.getMonth(date2) && generateConfig.getDate(date1) === generateConfig.getDate(date2);\n}\nexport function isSameTime(generateConfig, time1, time2) {\n  var equal = isNullEqual(time1, time2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n  return generateConfig.getHour(time1) === generateConfig.getHour(time2) && generateConfig.getMinute(time1) === generateConfig.getMinute(time2) && generateConfig.getSecond(time1) === generateConfig.getSecond(time2);\n}\nexport function isSameWeek(generateConfig, locale, date1, date2) {\n  var equal = isNullEqual(date1, date2);\n  if (typeof equal === 'boolean') {\n    return equal;\n  }\n  return generateConfig.locale.getWeek(locale, date1) === generateConfig.locale.getWeek(locale, date2);\n}\nexport function isEqual(generateConfig, value1, value2) {\n  return isSameDate(generateConfig, value1, value2) && isSameTime(generateConfig, value1, value2);\n}\n/** Between in date but not equal of date */\nexport function isInRange(generateConfig, startDate, endDate, current) {\n  if (!startDate || !endDate || !current) {\n    return false;\n  }\n  return !isSameDate(generateConfig, startDate, current) && !isSameDate(generateConfig, endDate, current) && generateConfig.isAfter(current, startDate) && generateConfig.isAfter(endDate, current);\n}\nexport function getWeekStartDate(locale, generateConfig, value) {\n  var weekFirstDay = generateConfig.locale.getWeekFirstDay(locale);\n  var monthStartDate = generateConfig.setDate(value, 1);\n  var startDateWeekDay = generateConfig.getWeekDay(monthStartDate);\n  var alignStartDate = generateConfig.addDate(monthStartDate, weekFirstDay - startDateWeekDay);\n  if (generateConfig.getMonth(alignStartDate) === generateConfig.getMonth(value) && generateConfig.getDate(alignStartDate) > 1) {\n    alignStartDate = generateConfig.addDate(alignStartDate, -7);\n  }\n  return alignStartDate;\n}\nexport function getClosingViewDate(viewDate, picker, generateConfig) {\n  var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n  switch (picker) {\n    case 'year':\n      return generateConfig.addYear(viewDate, offset * 10);\n    case 'quarter':\n    case 'month':\n      return generateConfig.addYear(viewDate, offset);\n    default:\n      return generateConfig.addMonth(viewDate, offset);\n  }\n}\nexport function formatValue(value, _ref) {\n  var generateConfig = _ref.generateConfig,\n    locale = _ref.locale,\n    format = _ref.format;\n  return typeof format === 'function' ? format(value) : generateConfig.locale.format(locale.locale, value, format);\n}\nexport function parseValue(value, _ref2) {\n  var generateConfig = _ref2.generateConfig,\n    locale = _ref2.locale,\n    formatList = _ref2.formatList;\n  if (!value || typeof formatList[0] === 'function') {\n    return null;\n  }\n  return generateConfig.locale.parse(locale.locale, value, formatList);\n}\n// eslint-disable-next-line consistent-return\nexport function getCellDateDisabled(_ref3) {\n  var cellDate = _ref3.cellDate,\n    mode = _ref3.mode,\n    disabledDate = _ref3.disabledDate,\n    generateConfig = _ref3.generateConfig;\n  if (!disabledDate) return false;\n  // Whether cellDate is disabled in range\n  var getDisabledFromRange = function getDisabledFromRange(currentMode, start, end) {\n    var current = start;\n    while (current <= end) {\n      var date = void 0;\n      switch (currentMode) {\n        case 'date':\n          {\n            date = generateConfig.setDate(cellDate, current);\n            if (!disabledDate(date)) {\n              return false;\n            }\n            break;\n          }\n        case 'month':\n          {\n            date = generateConfig.setMonth(cellDate, current);\n            if (!getCellDateDisabled({\n              cellDate: date,\n              mode: 'month',\n              generateConfig: generateConfig,\n              disabledDate: disabledDate\n            })) {\n              return false;\n            }\n            break;\n          }\n        case 'year':\n          {\n            date = generateConfig.setYear(cellDate, current);\n            if (!getCellDateDisabled({\n              cellDate: date,\n              mode: 'year',\n              generateConfig: generateConfig,\n              disabledDate: disabledDate\n            })) {\n              return false;\n            }\n            break;\n          }\n      }\n      current += 1;\n    }\n    return true;\n  };\n  switch (mode) {\n    case 'date':\n    case 'week':\n      {\n        return disabledDate(cellDate);\n      }\n    case 'month':\n      {\n        var startDate = 1;\n        var endDate = generateConfig.getDate(generateConfig.getEndDate(cellDate));\n        return getDisabledFromRange('date', startDate, endDate);\n      }\n    case 'quarter':\n      {\n        var startMonth = Math.floor(generateConfig.getMonth(cellDate) / 3) * 3;\n        var endMonth = startMonth + 2;\n        return getDisabledFromRange('month', startMonth, endMonth);\n      }\n    case 'year':\n      {\n        return getDisabledFromRange('month', 0, 11);\n      }\n    case 'decade':\n      {\n        var year = generateConfig.getYear(cellDate);\n        var startYear = Math.floor(year / DECADE_UNIT_DIFF) * DECADE_UNIT_DIFF;\n        var endYear = startYear + DECADE_UNIT_DIFF - 1;\n        return getDisabledFromRange('year', startYear, endYear);\n      }\n  }\n}","import * as React from 'react';\nimport Header from '../Header';\nimport PanelContext from '../../PanelContext';\nimport { formatValue } from '../../utils/dateUtil';\nfunction TimeHeader(props) {\n  var _React$useContext = React.useContext(PanelContext),\n    hideHeader = _React$useContext.hideHeader;\n  if (hideHeader) {\n    return null;\n  }\n  var prefixCls = props.prefixCls,\n    generateConfig = props.generateConfig,\n    locale = props.locale,\n    value = props.value,\n    format = props.format;\n  var headerPrefixCls = \"\".concat(prefixCls, \"-header\");\n  return /*#__PURE__*/React.createElement(Header, {\n    prefixCls: headerPrefixCls\n  }, value ? formatValue(value, {\n    locale: locale,\n    format: format,\n    generateConfig: generateConfig\n  }) : \"\\xA0\");\n}\nexport default TimeHeader;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { useRef, useLayoutEffect } from 'react';\nimport classNames from 'classnames';\nimport { scrollTo, waitElementReady } from '../../utils/uiUtil';\nimport PanelContext from '../../PanelContext';\nfunction TimeUnitColumn(props) {\n  var prefixCls = props.prefixCls,\n    units = props.units,\n    onSelect = props.onSelect,\n    value = props.value,\n    active = props.active,\n    hideDisabledOptions = props.hideDisabledOptions;\n  var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n  var _React$useContext = React.useContext(PanelContext),\n    open = _React$useContext.open;\n  var ulRef = useRef(null);\n  var liRefs = useRef(new Map());\n  var scrollRef = useRef();\n  // `useLayoutEffect` here to avoid blink by duration is 0\n  useLayoutEffect(function () {\n    var li = liRefs.current.get(value);\n    if (li && open !== false) {\n      scrollTo(ulRef.current, li.offsetTop, 120);\n    }\n  }, [value]);\n  useLayoutEffect(function () {\n    if (open) {\n      var li = liRefs.current.get(value);\n      if (li) {\n        scrollRef.current = waitElementReady(li, function () {\n          scrollTo(ulRef.current, li.offsetTop, 0);\n        });\n      }\n    }\n    return function () {\n      var _scrollRef$current;\n      (_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.call(scrollRef);\n    };\n  }, [open]);\n  return /*#__PURE__*/React.createElement(\"ul\", {\n    className: classNames(\"\".concat(prefixCls, \"-column\"), _defineProperty({}, \"\".concat(prefixCls, \"-column-active\"), active)),\n    ref: ulRef,\n    style: {\n      position: 'relative'\n    }\n  }, units.map(function (unit) {\n    var _classNames2;\n    if (hideDisabledOptions && unit.disabled) {\n      return null;\n    }\n    return /*#__PURE__*/React.createElement(\"li\", {\n      key: unit.value,\n      ref: function ref(element) {\n        liRefs.current.set(unit.value, element);\n      },\n      className: classNames(cellPrefixCls, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(cellPrefixCls, \"-disabled\"), unit.disabled), _defineProperty(_classNames2, \"\".concat(cellPrefixCls, \"-selected\"), value === unit.value), _classNames2)),\n      onClick: function onClick() {\n        if (unit.disabled) {\n          return;\n        }\n        onSelect(unit.value);\n      }\n    }, /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(cellPrefixCls, \"-inner\")\n    }, unit.label));\n  }));\n}\nexport default TimeUnitColumn;","export function leftPad(str, length) {\n  var fill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '0';\n  var current = String(str);\n  while (current.length < length) {\n    current = \"\".concat(fill).concat(str);\n  }\n  return current;\n}\nexport var tuple = function tuple() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  return args;\n};\nexport function toArray(val) {\n  if (val === null || val === undefined) {\n    return [];\n  }\n  return Array.isArray(val) ? val : [val];\n}\nexport default function getDataOrAriaProps(props) {\n  var retProps = {};\n  Object.keys(props).forEach(function (key) {\n    if ((key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-' || key === 'role' || key === 'name') && key.substr(0, 7) !== 'data-__') {\n      retProps[key] = props[key];\n    }\n  });\n  return retProps;\n}\nexport function getValue(values, index) {\n  return values ? values[index] : null;\n}\nexport function updateValues(values, value, index) {\n  var newValues = [getValue(values, 0), getValue(values, 1)];\n  newValues[index] = typeof value === 'function' ? value(newValues[index]) : value;\n  if (!newValues[0] && !newValues[1]) {\n    return null;\n  }\n  return newValues;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport TimeUnitColumn from './TimeUnitColumn';\nimport { leftPad } from '../../utils/miscUtil';\nimport { setTime as utilSetTime } from '../../utils/timeUtil';\nfunction shouldUnitsUpdate(prevUnits, nextUnits) {\n  if (prevUnits.length !== nextUnits.length) return true;\n  // if any unit's disabled status is different, the units should be re-evaluted\n  for (var i = 0; i < prevUnits.length; i += 1) {\n    if (prevUnits[i].disabled !== nextUnits[i].disabled) return true;\n  }\n  return false;\n}\nfunction generateUnits(start, end, step, disabledUnits) {\n  var units = [];\n  var integerStep = step >= 1 ? step | 0 : 1;\n  for (var i = start; i <= end; i += integerStep) {\n    units.push({\n      label: leftPad(i, 2),\n      value: i,\n      disabled: (disabledUnits || []).includes(i)\n    });\n  }\n  return units;\n}\nfunction TimeBody(props) {\n  var generateConfig = props.generateConfig,\n    prefixCls = props.prefixCls,\n    operationRef = props.operationRef,\n    activeColumnIndex = props.activeColumnIndex,\n    value = props.value,\n    showHour = props.showHour,\n    showMinute = props.showMinute,\n    showSecond = props.showSecond,\n    use12Hours = props.use12Hours,\n    _props$hourStep = props.hourStep,\n    hourStep = _props$hourStep === void 0 ? 1 : _props$hourStep,\n    _props$minuteStep = props.minuteStep,\n    minuteStep = _props$minuteStep === void 0 ? 1 : _props$minuteStep,\n    _props$secondStep = props.secondStep,\n    secondStep = _props$secondStep === void 0 ? 1 : _props$secondStep,\n    disabledHours = props.disabledHours,\n    disabledMinutes = props.disabledMinutes,\n    disabledSeconds = props.disabledSeconds,\n    disabledTime = props.disabledTime,\n    hideDisabledOptions = props.hideDisabledOptions,\n    onSelect = props.onSelect;\n  // Misc\n  var columns = [];\n  var contentPrefixCls = \"\".concat(prefixCls, \"-content\");\n  var columnPrefixCls = \"\".concat(prefixCls, \"-time-panel\");\n  var isPM;\n  var originHour = value ? generateConfig.getHour(value) : -1;\n  var hour = originHour;\n  var minute = value ? generateConfig.getMinute(value) : -1;\n  var second = value ? generateConfig.getSecond(value) : -1;\n  // Disabled Time\n  var now = generateConfig.getNow();\n  var _React$useMemo = React.useMemo(function () {\n      if (disabledTime) {\n        var disabledConfig = disabledTime(now);\n        return [disabledConfig.disabledHours, disabledConfig.disabledMinutes, disabledConfig.disabledSeconds];\n      }\n      return [disabledHours, disabledMinutes, disabledSeconds];\n    }, [disabledHours, disabledMinutes, disabledSeconds, disabledTime, now]),\n    _React$useMemo2 = _slicedToArray(_React$useMemo, 3),\n    mergedDisabledHours = _React$useMemo2[0],\n    mergedDisabledMinutes = _React$useMemo2[1],\n    mergedDisabledSeconds = _React$useMemo2[2];\n  // Set Time\n  var setTime = function setTime(isNewPM, newHour, newMinute, newSecond) {\n    var newDate = value || generateConfig.getNow();\n    var mergedHour = Math.max(0, newHour);\n    var mergedMinute = Math.max(0, newMinute);\n    var mergedSecond = Math.max(0, newSecond);\n    newDate = utilSetTime(generateConfig, newDate, !use12Hours || !isNewPM ? mergedHour : mergedHour + 12, mergedMinute, mergedSecond);\n    return newDate;\n  };\n  // ========================= Unit =========================\n  var rawHours = generateUnits(0, 23, hourStep, mergedDisabledHours && mergedDisabledHours());\n  var memorizedRawHours = useMemo(function () {\n    return rawHours;\n  }, rawHours, shouldUnitsUpdate);\n  // Should additional logic to handle 12 hours\n  if (use12Hours) {\n    isPM = hour >= 12; // -1 means should display AM\n    hour %= 12;\n  }\n  var _React$useMemo3 = React.useMemo(function () {\n      if (!use12Hours) {\n        return [false, false];\n      }\n      var AMPMDisabled = [true, true];\n      memorizedRawHours.forEach(function (_ref) {\n        var disabled = _ref.disabled,\n          hourValue = _ref.value;\n        if (disabled) return;\n        if (hourValue >= 12) {\n          AMPMDisabled[1] = false;\n        } else {\n          AMPMDisabled[0] = false;\n        }\n      });\n      return AMPMDisabled;\n    }, [use12Hours, memorizedRawHours]),\n    _React$useMemo4 = _slicedToArray(_React$useMemo3, 2),\n    AMDisabled = _React$useMemo4[0],\n    PMDisabled = _React$useMemo4[1];\n  var hours = React.useMemo(function () {\n    if (!use12Hours) return memorizedRawHours;\n    return memorizedRawHours.filter(isPM ? function (hourMeta) {\n      return hourMeta.value >= 12;\n    } : function (hourMeta) {\n      return hourMeta.value < 12;\n    }).map(function (hourMeta) {\n      var hourValue = hourMeta.value % 12;\n      var hourLabel = hourValue === 0 ? '12' : leftPad(hourValue, 2);\n      return _objectSpread(_objectSpread({}, hourMeta), {}, {\n        label: hourLabel,\n        value: hourValue\n      });\n    });\n  }, [use12Hours, isPM, memorizedRawHours]);\n  var minutes = generateUnits(0, 59, minuteStep, mergedDisabledMinutes && mergedDisabledMinutes(originHour));\n  var seconds = generateUnits(0, 59, secondStep, mergedDisabledSeconds && mergedDisabledSeconds(originHour, minute));\n  // ====================== Operations ======================\n  operationRef.current = {\n    onUpDown: function onUpDown(diff) {\n      var column = columns[activeColumnIndex];\n      if (column) {\n        var valueIndex = column.units.findIndex(function (unit) {\n          return unit.value === column.value;\n        });\n        var unitLen = column.units.length;\n        for (var i = 1; i < unitLen; i += 1) {\n          var nextUnit = column.units[(valueIndex + diff * i + unitLen) % unitLen];\n          if (nextUnit.disabled !== true) {\n            column.onSelect(nextUnit.value);\n            break;\n          }\n        }\n      }\n    }\n  };\n  // ======================== Render ========================\n  function addColumnNode(condition, node, columnValue, units, onColumnSelect) {\n    if (condition !== false) {\n      columns.push({\n        node: /*#__PURE__*/React.cloneElement(node, {\n          prefixCls: columnPrefixCls,\n          value: columnValue,\n          active: activeColumnIndex === columns.length,\n          onSelect: onColumnSelect,\n          units: units,\n          hideDisabledOptions: hideDisabledOptions\n        }),\n        onSelect: onColumnSelect,\n        value: columnValue,\n        units: units\n      });\n    }\n  }\n  // Hour\n  addColumnNode(showHour, /*#__PURE__*/React.createElement(TimeUnitColumn, {\n    key: \"hour\"\n  }), hour, hours, function (num) {\n    onSelect(setTime(isPM, num, minute, second), 'mouse');\n  });\n  // Minute\n  addColumnNode(showMinute, /*#__PURE__*/React.createElement(TimeUnitColumn, {\n    key: \"minute\"\n  }), minute, minutes, function (num) {\n    onSelect(setTime(isPM, hour, num, second), 'mouse');\n  });\n  // Second\n  addColumnNode(showSecond, /*#__PURE__*/React.createElement(TimeUnitColumn, {\n    key: \"second\"\n  }), second, seconds, function (num) {\n    onSelect(setTime(isPM, hour, minute, num), 'mouse');\n  });\n  // 12 Hours\n  var PMIndex = -1;\n  if (typeof isPM === 'boolean') {\n    PMIndex = isPM ? 1 : 0;\n  }\n  addColumnNode(use12Hours === true, /*#__PURE__*/React.createElement(TimeUnitColumn, {\n    key: \"12hours\"\n  }), PMIndex, [{\n    label: 'AM',\n    value: 0,\n    disabled: AMDisabled\n  }, {\n    label: 'PM',\n    value: 1,\n    disabled: PMDisabled\n  }], function (num) {\n    onSelect(setTime(!!num, hour, minute, second), 'mouse');\n  });\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: contentPrefixCls\n  }, columns.map(function (_ref2) {\n    var node = _ref2.node;\n    return node;\n  }));\n}\nexport default TimeBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport TimeHeader from './TimeHeader';\nimport TimeBody from './TimeBody';\nimport { createKeyDownHandler } from '../../utils/uiUtil';\nvar countBoolean = function countBoolean(boolList) {\n  return boolList.filter(function (bool) {\n    return bool !== false;\n  }).length;\n};\nfunction TimePanel(props) {\n  var generateConfig = props.generateConfig,\n    _props$format = props.format,\n    format = _props$format === void 0 ? 'HH:mm:ss' : _props$format,\n    prefixCls = props.prefixCls,\n    active = props.active,\n    operationRef = props.operationRef,\n    showHour = props.showHour,\n    showMinute = props.showMinute,\n    showSecond = props.showSecond,\n    _props$use12Hours = props.use12Hours,\n    use12Hours = _props$use12Hours === void 0 ? false : _props$use12Hours,\n    onSelect = props.onSelect,\n    value = props.value;\n  var panelPrefixCls = \"\".concat(prefixCls, \"-time-panel\");\n  var bodyOperationRef = React.useRef();\n  // ======================= Keyboard =======================\n  var _React$useState = React.useState(-1),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    activeColumnIndex = _React$useState2[0],\n    setActiveColumnIndex = _React$useState2[1];\n  var columnsCount = countBoolean([showHour, showMinute, showSecond, use12Hours]);\n  operationRef.current = {\n    onKeyDown: function onKeyDown(event) {\n      return createKeyDownHandler(event, {\n        onLeftRight: function onLeftRight(diff) {\n          setActiveColumnIndex((activeColumnIndex + diff + columnsCount) % columnsCount);\n        },\n        onUpDown: function onUpDown(diff) {\n          if (activeColumnIndex === -1) {\n            setActiveColumnIndex(0);\n          } else if (bodyOperationRef.current) {\n            bodyOperationRef.current.onUpDown(diff);\n          }\n        },\n        onEnter: function onEnter() {\n          onSelect(value || generateConfig.getNow(), 'key');\n          setActiveColumnIndex(-1);\n        }\n      });\n    },\n    onBlur: function onBlur() {\n      setActiveColumnIndex(-1);\n    }\n  };\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(panelPrefixCls, _defineProperty({}, \"\".concat(panelPrefixCls, \"-active\"), active))\n  }, /*#__PURE__*/React.createElement(TimeHeader, _extends({}, props, {\n    format: format,\n    prefixCls: prefixCls\n  })), /*#__PURE__*/React.createElement(TimeBody, _extends({}, props, {\n    prefixCls: prefixCls,\n    activeColumnIndex: activeColumnIndex,\n    operationRef: bodyOperationRef\n  })));\n}\nexport default TimePanel;","import * as React from 'react';\nvar RangeContext = /*#__PURE__*/React.createContext({});\nexport default RangeContext;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { isInRange } from '../utils/dateUtil';\nimport { getValue } from '../utils/miscUtil';\nexport default function useCellClassName(_ref) {\n  var cellPrefixCls = _ref.cellPrefixCls,\n    generateConfig = _ref.generateConfig,\n    rangedValue = _ref.rangedValue,\n    hoverRangedValue = _ref.hoverRangedValue,\n    isInView = _ref.isInView,\n    isSameCell = _ref.isSameCell,\n    offsetCell = _ref.offsetCell,\n    today = _ref.today,\n    value = _ref.value;\n  function getClassName(currentDate) {\n    var _ref2;\n    var prevDate = offsetCell(currentDate, -1);\n    var nextDate = offsetCell(currentDate, 1);\n    var rangeStart = getValue(rangedValue, 0);\n    var rangeEnd = getValue(rangedValue, 1);\n    var hoverStart = getValue(hoverRangedValue, 0);\n    var hoverEnd = getValue(hoverRangedValue, 1);\n    var isRangeHovered = isInRange(generateConfig, hoverStart, hoverEnd, currentDate);\n    function isRangeStart(date) {\n      return isSameCell(rangeStart, date);\n    }\n    function isRangeEnd(date) {\n      return isSameCell(rangeEnd, date);\n    }\n    var isHoverStart = isSameCell(hoverStart, currentDate);\n    var isHoverEnd = isSameCell(hoverEnd, currentDate);\n    var isHoverEdgeStart = (isRangeHovered || isHoverEnd) && (!isInView(prevDate) || isRangeEnd(prevDate));\n    var isHoverEdgeEnd = (isRangeHovered || isHoverStart) && (!isInView(nextDate) || isRangeStart(nextDate));\n    return _ref2 = {}, _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-in-view\"), isInView(currentDate)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-in-range\"), isInRange(generateConfig, rangeStart, rangeEnd, currentDate)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-start\"), isRangeStart(currentDate)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-end\"), isRangeEnd(currentDate)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-start-single\"), isRangeStart(currentDate) && !rangeEnd), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-end-single\"), isRangeEnd(currentDate) && !rangeStart), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-start-near-hover\"), isRangeStart(currentDate) && (isSameCell(prevDate, hoverStart) || isInRange(generateConfig, hoverStart, hoverEnd, prevDate))), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-end-near-hover\"), isRangeEnd(currentDate) && (isSameCell(nextDate, hoverEnd) || isInRange(generateConfig, hoverStart, hoverEnd, nextDate))), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover\"), isRangeHovered), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover-start\"), isHoverStart), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover-end\"), isHoverEnd), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover-edge-start\"), isHoverEdgeStart), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover-edge-end\"), isHoverEdgeEnd), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover-edge-start-near-range\"), isHoverEdgeStart && isSameCell(prevDate, rangeEnd)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-range-hover-edge-end-near-range\"), isHoverEdgeEnd && isSameCell(nextDate, rangeStart)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-today\"), isSameCell(today, currentDate)), _defineProperty(_ref2, \"\".concat(cellPrefixCls, \"-selected\"), isSameCell(value, currentDate)), _ref2;\n  }\n  return getClassName;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { WEEK_DAY_COUNT, getWeekStartDate, isSameDate, isSameMonth, formatValue } from '../../utils/dateUtil';\nimport RangeContext from '../../RangeContext';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport PanelBody from '../PanelBody';\nfunction DateBody(props) {\n  var prefixCls = props.prefixCls,\n    generateConfig = props.generateConfig,\n    prefixColumn = props.prefixColumn,\n    locale = props.locale,\n    rowCount = props.rowCount,\n    viewDate = props.viewDate,\n    value = props.value,\n    dateRender = props.dateRender;\n  var _React$useContext = React.useContext(RangeContext),\n    rangedValue = _React$useContext.rangedValue,\n    hoverRangedValue = _React$useContext.hoverRangedValue;\n  var baseDate = getWeekStartDate(locale.locale, generateConfig, viewDate);\n  var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n  var weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale);\n  var today = generateConfig.getNow();\n  // ============================== Header ==============================\n  var headerCells = [];\n  var weekDaysLocale = locale.shortWeekDays || (generateConfig.locale.getShortWeekDays ? generateConfig.locale.getShortWeekDays(locale.locale) : []);\n  if (prefixColumn) {\n    headerCells.push( /*#__PURE__*/React.createElement(\"th\", {\n      key: \"empty\",\n      \"aria-label\": \"empty cell\"\n    }));\n  }\n  for (var i = 0; i < WEEK_DAY_COUNT; i += 1) {\n    headerCells.push( /*#__PURE__*/React.createElement(\"th\", {\n      key: i\n    }, weekDaysLocale[(i + weekFirstDay) % WEEK_DAY_COUNT]));\n  }\n  // =============================== Body ===============================\n  var getCellClassName = useCellClassName({\n    cellPrefixCls: cellPrefixCls,\n    today: today,\n    value: value,\n    generateConfig: generateConfig,\n    rangedValue: prefixColumn ? null : rangedValue,\n    hoverRangedValue: prefixColumn ? null : hoverRangedValue,\n    isSameCell: function isSameCell(current, target) {\n      return isSameDate(generateConfig, current, target);\n    },\n    isInView: function isInView(date) {\n      return isSameMonth(generateConfig, date, viewDate);\n    },\n    offsetCell: function offsetCell(date, offset) {\n      return generateConfig.addDate(date, offset);\n    }\n  });\n  var getCellNode = dateRender ? function (date) {\n    return dateRender(date, today);\n  } : undefined;\n  return /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {\n    rowNum: rowCount,\n    colNum: WEEK_DAY_COUNT,\n    baseDate: baseDate,\n    getCellNode: getCellNode,\n    getCellText: generateConfig.getDate,\n    getCellClassName: getCellClassName,\n    getCellDate: generateConfig.addDate,\n    titleCell: function titleCell(date) {\n      return formatValue(date, {\n        locale: locale,\n        format: 'YYYY-MM-DD',\n        generateConfig: generateConfig\n      });\n    },\n    headerCells: headerCells\n  }));\n}\nexport default DateBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Header from '../Header';\nimport PanelContext from '../../PanelContext';\nimport { formatValue } from '../../utils/dateUtil';\nfunction DateHeader(props) {\n  var prefixCls = props.prefixCls,\n    generateConfig = props.generateConfig,\n    locale = props.locale,\n    viewDate = props.viewDate,\n    onNextMonth = props.onNextMonth,\n    onPrevMonth = props.onPrevMonth,\n    onNextYear = props.onNextYear,\n    onPrevYear = props.onPrevYear,\n    onYearClick = props.onYearClick,\n    onMonthClick = props.onMonthClick;\n  var _React$useContext = React.useContext(PanelContext),\n    hideHeader = _React$useContext.hideHeader;\n  if (hideHeader) {\n    return null;\n  }\n  var headerPrefixCls = \"\".concat(prefixCls, \"-header\");\n  var monthsLocale = locale.shortMonths || (generateConfig.locale.getShortMonths ? generateConfig.locale.getShortMonths(locale.locale) : []);\n  var month = generateConfig.getMonth(viewDate);\n  // =================== Month & Year ===================\n  var yearNode = /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    key: \"year\",\n    onClick: onYearClick,\n    tabIndex: -1,\n    className: \"\".concat(prefixCls, \"-year-btn\")\n  }, formatValue(viewDate, {\n    locale: locale,\n    format: locale.yearFormat,\n    generateConfig: generateConfig\n  }));\n  var monthNode = /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    key: \"month\",\n    onClick: onMonthClick,\n    tabIndex: -1,\n    className: \"\".concat(prefixCls, \"-month-btn\")\n  }, locale.monthFormat ? formatValue(viewDate, {\n    locale: locale,\n    format: locale.monthFormat,\n    generateConfig: generateConfig\n  }) : monthsLocale[month]);\n  var monthYearNodes = locale.monthBeforeYear ? [monthNode, yearNode] : [yearNode, monthNode];\n  return /*#__PURE__*/React.createElement(Header, _extends({}, props, {\n    prefixCls: headerPrefixCls,\n    onSuperPrev: onPrevYear,\n    onPrev: onPrevMonth,\n    onNext: onNextMonth,\n    onSuperNext: onNextYear\n  }), monthYearNodes);\n}\nexport default DateHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport DateBody from './DateBody';\nimport DateHeader from './DateHeader';\nimport { WEEK_DAY_COUNT } from '../../utils/dateUtil';\nimport { createKeyDownHandler } from '../../utils/uiUtil';\nvar DATE_ROW_COUNT = 6;\nfunction DatePanel(props) {\n  var prefixCls = props.prefixCls,\n    _props$panelName = props.panelName,\n    panelName = _props$panelName === void 0 ? 'date' : _props$panelName,\n    keyboardConfig = props.keyboardConfig,\n    active = props.active,\n    operationRef = props.operationRef,\n    generateConfig = props.generateConfig,\n    value = props.value,\n    viewDate = props.viewDate,\n    onViewDateChange = props.onViewDateChange,\n    onPanelChange = props.onPanelChange,\n    _onSelect = props.onSelect;\n  var panelPrefixCls = \"\".concat(prefixCls, \"-\").concat(panelName, \"-panel\");\n  // ======================= Keyboard =======================\n  operationRef.current = {\n    onKeyDown: function onKeyDown(event) {\n      return createKeyDownHandler(event, _objectSpread({\n        onLeftRight: function onLeftRight(diff) {\n          _onSelect(generateConfig.addDate(value || viewDate, diff), 'key');\n        },\n        onCtrlLeftRight: function onCtrlLeftRight(diff) {\n          _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n        },\n        onUpDown: function onUpDown(diff) {\n          _onSelect(generateConfig.addDate(value || viewDate, diff * WEEK_DAY_COUNT), 'key');\n        },\n        onPageUpDown: function onPageUpDown(diff) {\n          _onSelect(generateConfig.addMonth(value || viewDate, diff), 'key');\n        }\n      }, keyboardConfig));\n    }\n  };\n  // ==================== View Operation ====================\n  var onYearChange = function onYearChange(diff) {\n    var newDate = generateConfig.addYear(viewDate, diff);\n    onViewDateChange(newDate);\n    onPanelChange(null, newDate);\n  };\n  var onMonthChange = function onMonthChange(diff) {\n    var newDate = generateConfig.addMonth(viewDate, diff);\n    onViewDateChange(newDate);\n    onPanelChange(null, newDate);\n  };\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(panelPrefixCls, _defineProperty({}, \"\".concat(panelPrefixCls, \"-active\"), active))\n  }, /*#__PURE__*/React.createElement(DateHeader, _extends({}, props, {\n    prefixCls: prefixCls,\n    value: value,\n    viewDate: viewDate\n    // View Operation\n    ,\n    onPrevYear: function onPrevYear() {\n      onYearChange(-1);\n    },\n    onNextYear: function onNextYear() {\n      onYearChange(1);\n    },\n    onPrevMonth: function onPrevMonth() {\n      onMonthChange(-1);\n    },\n    onNextMonth: function onNextMonth() {\n      onMonthChange(1);\n    },\n    onMonthClick: function onMonthClick() {\n      onPanelChange('month', viewDate);\n    },\n    onYearClick: function onYearClick() {\n      onPanelChange('year', viewDate);\n    }\n  })), /*#__PURE__*/React.createElement(DateBody, _extends({}, props, {\n    onSelect: function onSelect(date) {\n      return _onSelect(date, 'mouse');\n    },\n    prefixCls: prefixCls,\n    value: value,\n    viewDate: viewDate,\n    rowCount: DATE_ROW_COUNT\n  })));\n}\nexport default DatePanel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport DatePanel from '../DatePanel';\nimport TimePanel from '../TimePanel';\nimport { tuple } from '../../utils/miscUtil';\nimport { setDateTime as setTime } from '../../utils/timeUtil';\nvar ACTIVE_PANEL = tuple('date', 'time');\nfunction DatetimePanel(props) {\n  var prefixCls = props.prefixCls,\n    operationRef = props.operationRef,\n    generateConfig = props.generateConfig,\n    value = props.value,\n    defaultValue = props.defaultValue,\n    disabledTime = props.disabledTime,\n    showTime = props.showTime,\n    onSelect = props.onSelect;\n  var panelPrefixCls = \"\".concat(prefixCls, \"-datetime-panel\");\n  var _React$useState = React.useState(null),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    activePanel = _React$useState2[0],\n    setActivePanel = _React$useState2[1];\n  var dateOperationRef = React.useRef({});\n  var timeOperationRef = React.useRef({});\n  var timeProps = _typeof(showTime) === 'object' ? _objectSpread({}, showTime) : {};\n  // ======================= Keyboard =======================\n  function getNextActive(offset) {\n    var activeIndex = ACTIVE_PANEL.indexOf(activePanel) + offset;\n    var nextActivePanel = ACTIVE_PANEL[activeIndex] || null;\n    return nextActivePanel;\n  }\n  var onBlur = function onBlur(e) {\n    if (timeOperationRef.current.onBlur) {\n      timeOperationRef.current.onBlur(e);\n    }\n    setActivePanel(null);\n  };\n  operationRef.current = {\n    onKeyDown: function onKeyDown(event) {\n      // Switch active panel\n      if (event.which === KeyCode.TAB) {\n        var nextActivePanel = getNextActive(event.shiftKey ? -1 : 1);\n        setActivePanel(nextActivePanel);\n        if (nextActivePanel) {\n          event.preventDefault();\n        }\n        return true;\n      }\n      // Operate on current active panel\n      if (activePanel) {\n        var ref = activePanel === 'date' ? dateOperationRef : timeOperationRef;\n        if (ref.current && ref.current.onKeyDown) {\n          ref.current.onKeyDown(event);\n        }\n        return true;\n      }\n      // Switch first active panel if operate without panel\n      if ([KeyCode.LEFT, KeyCode.RIGHT, KeyCode.UP, KeyCode.DOWN].includes(event.which)) {\n        setActivePanel('date');\n        return true;\n      }\n      return false;\n    },\n    onBlur: onBlur,\n    onClose: onBlur\n  };\n  // ======================== Events ========================\n  var onInternalSelect = function onInternalSelect(date, source) {\n    var selectedDate = date;\n    if (source === 'date' && !value && timeProps.defaultValue) {\n      // Date with time defaultValue\n      selectedDate = generateConfig.setHour(selectedDate, generateConfig.getHour(timeProps.defaultValue));\n      selectedDate = generateConfig.setMinute(selectedDate, generateConfig.getMinute(timeProps.defaultValue));\n      selectedDate = generateConfig.setSecond(selectedDate, generateConfig.getSecond(timeProps.defaultValue));\n    } else if (source === 'time' && !value && defaultValue) {\n      selectedDate = generateConfig.setYear(selectedDate, generateConfig.getYear(defaultValue));\n      selectedDate = generateConfig.setMonth(selectedDate, generateConfig.getMonth(defaultValue));\n      selectedDate = generateConfig.setDate(selectedDate, generateConfig.getDate(defaultValue));\n    }\n    if (onSelect) {\n      onSelect(selectedDate, 'mouse');\n    }\n  };\n  // ======================== Render ========================\n  var disabledTimes = disabledTime ? disabledTime(value || null) : {};\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(panelPrefixCls, _defineProperty({}, \"\".concat(panelPrefixCls, \"-active\"), activePanel))\n  }, /*#__PURE__*/React.createElement(DatePanel, _extends({}, props, {\n    operationRef: dateOperationRef,\n    active: activePanel === 'date',\n    onSelect: function onSelect(date) {\n      onInternalSelect(setTime(generateConfig, date, !value && _typeof(showTime) === 'object' ? showTime.defaultValue : null), 'date');\n    }\n  })), /*#__PURE__*/React.createElement(TimePanel, _extends({}, props, {\n    format: undefined\n  }, timeProps, disabledTimes, {\n    disabledTime: null,\n    defaultValue: undefined,\n    operationRef: timeOperationRef,\n    active: activePanel === 'time',\n    onSelect: function onSelect(date) {\n      onInternalSelect(date, 'time');\n    }\n  })));\n}\nexport default DatetimePanel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport DatePanel from '../DatePanel';\nimport { isSameWeek } from '../../utils/dateUtil';\nfunction WeekPanel(props) {\n  var prefixCls = props.prefixCls,\n    generateConfig = props.generateConfig,\n    locale = props.locale,\n    value = props.value;\n  // Render additional column\n  var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n  var prefixColumn = function prefixColumn(date) {\n    return /*#__PURE__*/React.createElement(\"td\", {\n      key: \"week\",\n      className: classNames(cellPrefixCls, \"\".concat(cellPrefixCls, \"-week\"))\n    }, generateConfig.locale.getWeek(locale.locale, date));\n  };\n  // Add row className\n  var rowPrefixCls = \"\".concat(prefixCls, \"-week-panel-row\");\n  var rowClassName = function rowClassName(date) {\n    return classNames(rowPrefixCls, _defineProperty({}, \"\".concat(rowPrefixCls, \"-selected\"), isSameWeek(generateConfig, locale.locale, value, date)));\n  };\n  return /*#__PURE__*/React.createElement(DatePanel, _extends({}, props, {\n    panelName: \"week\",\n    prefixColumn: prefixColumn,\n    rowClassName: rowClassName,\n    keyboardConfig: {\n      onLeftRight: null\n    }\n  }));\n}\nexport default WeekPanel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Header from '../Header';\nimport PanelContext from '../../PanelContext';\nimport { formatValue } from '../../utils/dateUtil';\nfunction MonthHeader(props) {\n  var prefixCls = props.prefixCls,\n    generateConfig = props.generateConfig,\n    locale = props.locale,\n    viewDate = props.viewDate,\n    onNextYear = props.onNextYear,\n    onPrevYear = props.onPrevYear,\n    onYearClick = props.onYearClick;\n  var _React$useContext = React.useContext(PanelContext),\n    hideHeader = _React$useContext.hideHeader;\n  if (hideHeader) {\n    return null;\n  }\n  var headerPrefixCls = \"\".concat(prefixCls, \"-header\");\n  return /*#__PURE__*/React.createElement(Header, _extends({}, props, {\n    prefixCls: headerPrefixCls,\n    onSuperPrev: onPrevYear,\n    onSuperNext: onNextYear\n  }), /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    onClick: onYearClick,\n    className: \"\".concat(prefixCls, \"-year-btn\")\n  }, formatValue(viewDate, {\n    locale: locale,\n    format: locale.yearFormat,\n    generateConfig: generateConfig\n  })));\n}\nexport default MonthHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { formatValue, isSameMonth } from '../../utils/dateUtil';\nimport RangeContext from '../../RangeContext';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport PanelBody from '../PanelBody';\nexport var MONTH_COL_COUNT = 3;\nvar MONTH_ROW_COUNT = 4;\nfunction MonthBody(props) {\n  var prefixCls = props.prefixCls,\n    locale = props.locale,\n    value = props.value,\n    viewDate = props.viewDate,\n    generateConfig = props.generateConfig,\n    monthCellRender = props.monthCellRender;\n  var _React$useContext = React.useContext(RangeContext),\n    rangedValue = _React$useContext.rangedValue,\n    hoverRangedValue = _React$useContext.hoverRangedValue;\n  var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n  var getCellClassName = useCellClassName({\n    cellPrefixCls: cellPrefixCls,\n    value: value,\n    generateConfig: generateConfig,\n    rangedValue: rangedValue,\n    hoverRangedValue: hoverRangedValue,\n    isSameCell: function isSameCell(current, target) {\n      return isSameMonth(generateConfig, current, target);\n    },\n    isInView: function isInView() {\n      return true;\n    },\n    offsetCell: function offsetCell(date, offset) {\n      return generateConfig.addMonth(date, offset);\n    }\n  });\n  var monthsLocale = locale.shortMonths || (generateConfig.locale.getShortMonths ? generateConfig.locale.getShortMonths(locale.locale) : []);\n  var baseMonth = generateConfig.setMonth(viewDate, 0);\n  var getCellNode = monthCellRender ? function (date) {\n    return monthCellRender(date, locale);\n  } : undefined;\n  return /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {\n    rowNum: MONTH_ROW_COUNT,\n    colNum: MONTH_COL_COUNT,\n    baseDate: baseMonth,\n    getCellNode: getCellNode,\n    getCellText: function getCellText(date) {\n      return locale.monthFormat ? formatValue(date, {\n        locale: locale,\n        format: locale.monthFormat,\n        generateConfig: generateConfig\n      }) : monthsLocale[generateConfig.getMonth(date)];\n    },\n    getCellClassName: getCellClassName,\n    getCellDate: generateConfig.addMonth,\n    titleCell: function titleCell(date) {\n      return formatValue(date, {\n        locale: locale,\n        format: 'YYYY-MM',\n        generateConfig: generateConfig\n      });\n    }\n  }));\n}\nexport default MonthBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport MonthHeader from './MonthHeader';\nimport MonthBody, { MONTH_COL_COUNT } from './MonthBody';\nimport { createKeyDownHandler } from '../../utils/uiUtil';\nfunction MonthPanel(props) {\n  var prefixCls = props.prefixCls,\n    operationRef = props.operationRef,\n    onViewDateChange = props.onViewDateChange,\n    generateConfig = props.generateConfig,\n    value = props.value,\n    viewDate = props.viewDate,\n    onPanelChange = props.onPanelChange,\n    _onSelect = props.onSelect;\n  var panelPrefixCls = \"\".concat(prefixCls, \"-month-panel\");\n  // ======================= Keyboard =======================\n  operationRef.current = {\n    onKeyDown: function onKeyDown(event) {\n      return createKeyDownHandler(event, {\n        onLeftRight: function onLeftRight(diff) {\n          _onSelect(generateConfig.addMonth(value || viewDate, diff), 'key');\n        },\n        onCtrlLeftRight: function onCtrlLeftRight(diff) {\n          _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n        },\n        onUpDown: function onUpDown(diff) {\n          _onSelect(generateConfig.addMonth(value || viewDate, diff * MONTH_COL_COUNT), 'key');\n        },\n        onEnter: function onEnter() {\n          onPanelChange('date', value || viewDate);\n        }\n      });\n    }\n  };\n  // ==================== View Operation ====================\n  var onYearChange = function onYearChange(diff) {\n    var newDate = generateConfig.addYear(viewDate, diff);\n    onViewDateChange(newDate);\n    onPanelChange(null, newDate);\n  };\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: panelPrefixCls\n  }, /*#__PURE__*/React.createElement(MonthHeader, _extends({}, props, {\n    prefixCls: prefixCls,\n    onPrevYear: function onPrevYear() {\n      onYearChange(-1);\n    },\n    onNextYear: function onNextYear() {\n      onYearChange(1);\n    },\n    onYearClick: function onYearClick() {\n      onPanelChange('year', viewDate);\n    }\n  })), /*#__PURE__*/React.createElement(MonthBody, _extends({}, props, {\n    prefixCls: prefixCls,\n    onSelect: function onSelect(date) {\n      _onSelect(date, 'mouse');\n      onPanelChange('date', date);\n    }\n  })));\n}\nexport default MonthPanel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Header from '../Header';\nimport PanelContext from '../../PanelContext';\nimport { formatValue } from '../../utils/dateUtil';\nfunction QuarterHeader(props) {\n  var prefixCls = props.prefixCls,\n    generateConfig = props.generateConfig,\n    locale = props.locale,\n    viewDate = props.viewDate,\n    onNextYear = props.onNextYear,\n    onPrevYear = props.onPrevYear,\n    onYearClick = props.onYearClick;\n  var _React$useContext = React.useContext(PanelContext),\n    hideHeader = _React$useContext.hideHeader;\n  if (hideHeader) {\n    return null;\n  }\n  var headerPrefixCls = \"\".concat(prefixCls, \"-header\");\n  return /*#__PURE__*/React.createElement(Header, _extends({}, props, {\n    prefixCls: headerPrefixCls,\n    onSuperPrev: onPrevYear,\n    onSuperNext: onNextYear\n  }), /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    onClick: onYearClick,\n    className: \"\".concat(prefixCls, \"-year-btn\")\n  }, formatValue(viewDate, {\n    locale: locale,\n    format: locale.yearFormat,\n    generateConfig: generateConfig\n  })));\n}\nexport default QuarterHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { formatValue, isSameQuarter } from '../../utils/dateUtil';\nimport RangeContext from '../../RangeContext';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport PanelBody from '../PanelBody';\nexport var QUARTER_COL_COUNT = 4;\nvar QUARTER_ROW_COUNT = 1;\nfunction QuarterBody(props) {\n  var prefixCls = props.prefixCls,\n    locale = props.locale,\n    value = props.value,\n    viewDate = props.viewDate,\n    generateConfig = props.generateConfig;\n  var _React$useContext = React.useContext(RangeContext),\n    rangedValue = _React$useContext.rangedValue,\n    hoverRangedValue = _React$useContext.hoverRangedValue;\n  var cellPrefixCls = \"\".concat(prefixCls, \"-cell\");\n  var getCellClassName = useCellClassName({\n    cellPrefixCls: cellPrefixCls,\n    value: value,\n    generateConfig: generateConfig,\n    rangedValue: rangedValue,\n    hoverRangedValue: hoverRangedValue,\n    isSameCell: function isSameCell(current, target) {\n      return isSameQuarter(generateConfig, current, target);\n    },\n    isInView: function isInView() {\n      return true;\n    },\n    offsetCell: function offsetCell(date, offset) {\n      return generateConfig.addMonth(date, offset * 3);\n    }\n  });\n  var baseQuarter = generateConfig.setDate(generateConfig.setMonth(viewDate, 0), 1);\n  return /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {\n    rowNum: QUARTER_ROW_COUNT,\n    colNum: QUARTER_COL_COUNT,\n    baseDate: baseQuarter,\n    getCellText: function getCellText(date) {\n      return formatValue(date, {\n        locale: locale,\n        format: locale.quarterFormat || '[Q]Q',\n        generateConfig: generateConfig\n      });\n    },\n    getCellClassName: getCellClassName,\n    getCellDate: function getCellDate(date, offset) {\n      return generateConfig.addMonth(date, offset * 3);\n    },\n    titleCell: function titleCell(date) {\n      return formatValue(date, {\n        locale: locale,\n        format: 'YYYY-[Q]Q',\n        generateConfig: generateConfig\n      });\n    }\n  }));\n}\nexport default QuarterBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport QuarterHeader from './QuarterHeader';\nimport QuarterBody from './QuarterBody';\nimport { createKeyDownHandler } from '../../utils/uiUtil';\nfunction QuarterPanel(props) {\n  var prefixCls = props.prefixCls,\n    operationRef = props.operationRef,\n    onViewDateChange = props.onViewDateChange,\n    generateConfig = props.generateConfig,\n    value = props.value,\n    viewDate = props.viewDate,\n    onPanelChange = props.onPanelChange,\n    _onSelect = props.onSelect;\n  var panelPrefixCls = \"\".concat(prefixCls, \"-quarter-panel\");\n  // ======================= Keyboard =======================\n  operationRef.current = {\n    onKeyDown: function onKeyDown(event) {\n      return createKeyDownHandler(event, {\n        onLeftRight: function onLeftRight(diff) {\n          _onSelect(generateConfig.addMonth(value || viewDate, diff * 3), 'key');\n        },\n        onCtrlLeftRight: function onCtrlLeftRight(diff) {\n          _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n        },\n        onUpDown: function onUpDown(diff) {\n          _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n        }\n      });\n    }\n  };\n  // ==================== View Operation ====================\n  var onYearChange = function onYearChange(diff) {\n    var newDate = generateConfig.addYear(viewDate, diff);\n    onViewDateChange(newDate);\n    onPanelChange(null, newDate);\n  };\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: panelPrefixCls\n  }, /*#__PURE__*/React.createElement(QuarterHeader, _extends({}, props, {\n    prefixCls: prefixCls,\n    onPrevYear: function onPrevYear() {\n      onYearChange(-1);\n    },\n    onNextYear: function onNextYear() {\n      onYearChange(1);\n    },\n    onYearClick: function onYearClick() {\n      onPanelChange('year', viewDate);\n    }\n  })), /*#__PURE__*/React.createElement(QuarterBody, _extends({}, props, {\n    prefixCls: prefixCls,\n    onSelect: function onSelect(date) {\n      _onSelect(date, 'mouse');\n    }\n  })));\n}\nexport default QuarterPanel;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Header from '../Header';\nimport { YEAR_DECADE_COUNT } from '.';\nimport PanelContext from '../../PanelContext';\nfunction YearHeader(props) {\n  var prefixCls = props.prefixCls,\n    generateConfig = props.generateConfig,\n    viewDate = props.viewDate,\n    onPrevDecade = props.onPrevDecade,\n    onNextDecade = props.onNextDecade,\n    onDecadeClick = props.onDecadeClick;\n  var _React$useContext = React.useContext(PanelContext),\n    hideHeader = _React$useContext.hideHeader;\n  if (hideHeader) {\n    return null;\n  }\n  var headerPrefixCls = \"\".concat(prefixCls, \"-header\");\n  var yearNumber = generateConfig.getYear(viewDate);\n  var startYear = Math.floor(yearNumber / YEAR_DECADE_COUNT) * YEAR_DECADE_COUNT;\n  var endYear = startYear + YEAR_DECADE_COUNT - 1;\n  return /*#__PURE__*/React.createElement(Header, _extends({}, props, {\n    prefixCls: headerPrefixCls,\n    onSuperPrev: onPrevDecade,\n    onSuperNext: onNextDecade\n  }), /*#__PURE__*/React.createElement(\"button\", {\n    type: \"button\",\n    onClick: onDecadeClick,\n    className: \"\".concat(prefixCls, \"-decade-btn\")\n  }, startYear, \"-\", endYear));\n}\nexport default YearHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { YEAR_DECADE_COUNT } from '.';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport { formatValue, isSameYear } from '../../utils/dateUtil';\nimport RangeContext from '../../RangeContext';\nimport PanelBody from '../PanelBody';\nexport var YEAR_COL_COUNT = 3;\nvar YEAR_ROW_COUNT = 4;\nfunction YearBody(props) {\n  var prefixCls = props.prefixCls,\n    value = props.value,\n    viewDate = props.viewDate,\n    locale = props.locale,\n    generateConfig = props.generateConfig;\n  var _React$useContext = React.useContext(RangeContext),\n    rangedValue = _React$useContext.rangedValue,\n    hoverRangedValue = _React$useContext.hoverRangedValue;\n  var yearPrefixCls = \"\".concat(prefixCls, \"-cell\");\n  // =============================== Year ===============================\n  var yearNumber = generateConfig.getYear(viewDate);\n  var startYear = Math.floor(yearNumber / YEAR_DECADE_COUNT) * YEAR_DECADE_COUNT;\n  var endYear = startYear + YEAR_DECADE_COUNT - 1;\n  var baseYear = generateConfig.setYear(viewDate, startYear - Math.ceil((YEAR_COL_COUNT * YEAR_ROW_COUNT - YEAR_DECADE_COUNT) / 2));\n  var isInView = function isInView(date) {\n    var currentYearNumber = generateConfig.getYear(date);\n    return startYear <= currentYearNumber && currentYearNumber <= endYear;\n  };\n  var getCellClassName = useCellClassName({\n    cellPrefixCls: yearPrefixCls,\n    value: value,\n    generateConfig: generateConfig,\n    rangedValue: rangedValue,\n    hoverRangedValue: hoverRangedValue,\n    isSameCell: function isSameCell(current, target) {\n      return isSameYear(generateConfig, current, target);\n    },\n    isInView: isInView,\n    offsetCell: function offsetCell(date, offset) {\n      return generateConfig.addYear(date, offset);\n    }\n  });\n  return /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {\n    rowNum: YEAR_ROW_COUNT,\n    colNum: YEAR_COL_COUNT,\n    baseDate: baseYear,\n    getCellText: generateConfig.getYear,\n    getCellClassName: getCellClassName,\n    getCellDate: generateConfig.addYear,\n    titleCell: function titleCell(date) {\n      return formatValue(date, {\n        locale: locale,\n        format: 'YYYY',\n        generateConfig: generateConfig\n      });\n    }\n  }));\n}\nexport default YearBody;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport YearHeader from './YearHeader';\nimport YearBody, { YEAR_COL_COUNT } from './YearBody';\nimport { createKeyDownHandler } from '../../utils/uiUtil';\nexport var YEAR_DECADE_COUNT = 10;\nfunction YearPanel(props) {\n  var prefixCls = props.prefixCls,\n    operationRef = props.operationRef,\n    onViewDateChange = props.onViewDateChange,\n    generateConfig = props.generateConfig,\n    value = props.value,\n    viewDate = props.viewDate,\n    sourceMode = props.sourceMode,\n    _onSelect = props.onSelect,\n    onPanelChange = props.onPanelChange;\n  var panelPrefixCls = \"\".concat(prefixCls, \"-year-panel\");\n  // ======================= Keyboard =======================\n  operationRef.current = {\n    onKeyDown: function onKeyDown(event) {\n      return createKeyDownHandler(event, {\n        onLeftRight: function onLeftRight(diff) {\n          _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');\n        },\n        onCtrlLeftRight: function onCtrlLeftRight(diff) {\n          _onSelect(generateConfig.addYear(value || viewDate, diff * YEAR_DECADE_COUNT), 'key');\n        },\n        onUpDown: function onUpDown(diff) {\n          _onSelect(generateConfig.addYear(value || viewDate, diff * YEAR_COL_COUNT), 'key');\n        },\n        onEnter: function onEnter() {\n          onPanelChange(sourceMode === 'date' ? 'date' : 'month', value || viewDate);\n        }\n      });\n    }\n  };\n  // ==================== View Operation ====================\n  var onDecadeChange = function onDecadeChange(diff) {\n    var newDate = generateConfig.addYear(viewDate, diff * 10);\n    onViewDateChange(newDate);\n    onPanelChange(null, newDate);\n  };\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: panelPrefixCls\n  }, /*#__PURE__*/React.createElement(YearHeader, _extends({}, props, {\n    prefixCls: prefixCls,\n    onPrevDecade: function onPrevDecade() {\n      onDecadeChange(-1);\n    },\n    onNextDecade: function onNextDecade() {\n      onDecadeChange(1);\n    },\n    onDecadeClick: function onDecadeClick() {\n      onPanelChange('decade', viewDate);\n    }\n  })), /*#__PURE__*/React.createElement(YearBody, _extends({}, props, {\n    prefixCls: prefixCls,\n    onSelect: function onSelect(date) {\n      onPanelChange(sourceMode === 'date' ? 'date' : 'month', date);\n      _onSelect(date, 'mouse');\n    }\n  })));\n}\nexport default YearPanel;","import * as React from 'react';\nexport default function getExtraFooter(prefixCls, mode, renderExtraFooter) {\n  if (!renderExtraFooter) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-footer-extra\")\n  }, renderExtraFooter(mode));\n}","import * as React from 'react';\nexport default function getRanges(_ref) {\n  var prefixCls = _ref.prefixCls,\n    _ref$rangeList = _ref.rangeList,\n    rangeList = _ref$rangeList === void 0 ? [] : _ref$rangeList,\n    _ref$components = _ref.components,\n    components = _ref$components === void 0 ? {} : _ref$components,\n    needConfirmButton = _ref.needConfirmButton,\n    onNow = _ref.onNow,\n    onOk = _ref.onOk,\n    okDisabled = _ref.okDisabled,\n    showNow = _ref.showNow,\n    locale = _ref.locale;\n  var presetNode;\n  var okNode;\n  if (rangeList.length) {\n    var Item = components.rangeItem || 'span';\n    presetNode = /*#__PURE__*/React.createElement(React.Fragment, null, rangeList.map(function (_ref2) {\n      var label = _ref2.label,\n        onClick = _ref2.onClick,\n        onMouseEnter = _ref2.onMouseEnter,\n        onMouseLeave = _ref2.onMouseLeave;\n      return /*#__PURE__*/React.createElement(\"li\", {\n        key: label,\n        className: \"\".concat(prefixCls, \"-preset\")\n      }, /*#__PURE__*/React.createElement(Item, {\n        onClick: onClick,\n        onMouseEnter: onMouseEnter,\n        onMouseLeave: onMouseLeave\n      }, label));\n    }));\n  }\n  if (needConfirmButton) {\n    var Button = components.button || 'button';\n    if (onNow && !presetNode && showNow !== false) {\n      presetNode = /*#__PURE__*/React.createElement(\"li\", {\n        className: \"\".concat(prefixCls, \"-now\")\n      }, /*#__PURE__*/React.createElement(\"a\", {\n        className: \"\".concat(prefixCls, \"-now-btn\"),\n        onClick: onNow\n      }, locale.now));\n    }\n    okNode = needConfirmButton && /*#__PURE__*/React.createElement(\"li\", {\n      className: \"\".concat(prefixCls, \"-ok\")\n    }, /*#__PURE__*/React.createElement(Button, {\n      disabled: okDisabled,\n      onClick: onOk\n    }, locale.ok));\n  }\n  if (!presetNode && !okNode) {\n    return null;\n  }\n  return /*#__PURE__*/React.createElement(\"ul\", {\n    className: \"\".concat(prefixCls, \"-ranges\")\n  }, presetNode, okNode);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * Logic:\n *  When `mode` === `picker`,\n *  click will trigger `onSelect` (if value changed trigger `onChange` also).\n *  Panel change will not trigger `onSelect` but trigger `onPanelChange`\n */\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport warning from \"rc-util/es/warning\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport TimePanel from './panels/TimePanel';\nimport DatetimePanel from './panels/DatetimePanel';\nimport DatePanel from './panels/DatePanel';\nimport WeekPanel from './panels/WeekPanel';\nimport MonthPanel from './panels/MonthPanel';\nimport QuarterPanel from './panels/QuarterPanel';\nimport YearPanel from './panels/YearPanel';\nimport DecadePanel from './panels/DecadePanel';\nimport { WEEK_DAY_COUNT, isEqual } from './utils/dateUtil';\nimport PanelContext from './PanelContext';\nimport { PickerModeMap } from './utils/uiUtil';\nimport { MONTH_COL_COUNT } from './panels/MonthPanel/MonthBody';\nimport RangeContext from './RangeContext';\nimport getExtraFooter from './utils/getExtraFooter';\nimport getRanges from './utils/getRanges';\nimport { getLowerBoundTime, setDateTime, setTime } from './utils/timeUtil';\n// Calendar picker type\nvar CALENDAR_PANEL_MODE = ['date', 'month'];\nfunction PickerPanel(props) {\n  var _classNames;\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,\n    className = props.className,\n    style = props.style,\n    locale = props.locale,\n    generateConfig = props.generateConfig,\n    value = props.value,\n    defaultValue = props.defaultValue,\n    pickerValue = props.pickerValue,\n    defaultPickerValue = props.defaultPickerValue,\n    disabledDate = props.disabledDate,\n    mode = props.mode,\n    _props$picker = props.picker,\n    picker = _props$picker === void 0 ? 'date' : _props$picker,\n    _props$tabIndex = props.tabIndex,\n    tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n    showNow = props.showNow,\n    showTime = props.showTime,\n    showToday = props.showToday,\n    renderExtraFooter = props.renderExtraFooter,\n    hideHeader = props.hideHeader,\n    onSelect = props.onSelect,\n    onChange = props.onChange,\n    onPanelChange = props.onPanelChange,\n    onMouseDown = props.onMouseDown,\n    onPickerValueChange = props.onPickerValueChange,\n    _onOk = props.onOk,\n    components = props.components,\n    direction = props.direction,\n    _props$hourStep = props.hourStep,\n    hourStep = _props$hourStep === void 0 ? 1 : _props$hourStep,\n    _props$minuteStep = props.minuteStep,\n    minuteStep = _props$minuteStep === void 0 ? 1 : _props$minuteStep,\n    _props$secondStep = props.secondStep,\n    secondStep = _props$secondStep === void 0 ? 1 : _props$secondStep;\n  var needConfirmButton = picker === 'date' && !!showTime || picker === 'time';\n  var isHourStepValid = 24 % hourStep === 0;\n  var isMinuteStepValid = 60 % minuteStep === 0;\n  var isSecondStepValid = 60 % secondStep === 0;\n  if (process.env.NODE_ENV !== 'production') {\n    warning(!value || generateConfig.isValidate(value), 'Invalidate date pass to `value`.');\n    warning(!value || generateConfig.isValidate(value), 'Invalidate date pass to `defaultValue`.');\n    warning(isHourStepValid, \"`hourStep` \".concat(hourStep, \" is invalid. It should be a factor of 24.\"));\n    warning(isMinuteStepValid, \"`minuteStep` \".concat(minuteStep, \" is invalid. It should be a factor of 60.\"));\n    warning(isSecondStepValid, \"`secondStep` \".concat(secondStep, \" is invalid. It should be a factor of 60.\"));\n  }\n  // ============================ State =============================\n  var panelContext = React.useContext(PanelContext);\n  var operationRef = panelContext.operationRef,\n    panelDivRef = panelContext.panelRef,\n    onContextSelect = panelContext.onSelect,\n    hideRanges = panelContext.hideRanges,\n    defaultOpenValue = panelContext.defaultOpenValue;\n  var _React$useContext = React.useContext(RangeContext),\n    inRange = _React$useContext.inRange,\n    panelPosition = _React$useContext.panelPosition,\n    rangedValue = _React$useContext.rangedValue,\n    hoverRangedValue = _React$useContext.hoverRangedValue;\n  var panelRef = React.useRef({});\n  // Handle init logic\n  var initRef = React.useRef(true);\n  // Value\n  var _useMergedState = useMergedState(null, {\n      value: value,\n      defaultValue: defaultValue,\n      postState: function postState(val) {\n        if (!val && defaultOpenValue && picker === 'time') {\n          return defaultOpenValue;\n        }\n        return val;\n      }\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    mergedValue = _useMergedState2[0],\n    setInnerValue = _useMergedState2[1];\n  // View date control\n  var _useMergedState3 = useMergedState(null, {\n      value: pickerValue,\n      defaultValue: defaultPickerValue || mergedValue,\n      postState: function postState(date) {\n        var now = generateConfig.getNow();\n        if (!date) {\n          return now;\n        }\n        // When value is null and set showTime\n        if (!mergedValue && showTime) {\n          var defaultDateObject = _typeof(showTime) === 'object' ? showTime.defaultValue : defaultValue;\n          return setDateTime(generateConfig, Array.isArray(date) ? date[0] : date, defaultDateObject || now);\n        }\n        return Array.isArray(date) ? date[0] : date;\n      }\n    }),\n    _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n    viewDate = _useMergedState4[0],\n    setInnerViewDate = _useMergedState4[1];\n  var setViewDate = function setViewDate(date) {\n    setInnerViewDate(date);\n    if (onPickerValueChange) {\n      onPickerValueChange(date);\n    }\n  };\n  // Panel control\n  var getInternalNextMode = function getInternalNextMode(nextMode) {\n    var getNextMode = PickerModeMap[picker];\n    if (getNextMode) {\n      return getNextMode(nextMode);\n    }\n    return nextMode;\n  };\n  // Save panel is changed from which panel\n  var _useMergedState5 = useMergedState(function () {\n      if (picker === 'time') {\n        return 'time';\n      }\n      return getInternalNextMode('date');\n    }, {\n      value: mode\n    }),\n    _useMergedState6 = _slicedToArray(_useMergedState5, 2),\n    mergedMode = _useMergedState6[0],\n    setInnerMode = _useMergedState6[1];\n  React.useEffect(function () {\n    setInnerMode(picker);\n  }, [picker]);\n  var _React$useState = React.useState(function () {\n      return mergedMode;\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    sourceMode = _React$useState2[0],\n    setSourceMode = _React$useState2[1];\n  var onInternalPanelChange = function onInternalPanelChange(newMode, viewValue) {\n    var nextMode = getInternalNextMode(newMode || mergedMode);\n    setSourceMode(mergedMode);\n    setInnerMode(nextMode);\n    if (onPanelChange && (mergedMode !== nextMode || isEqual(generateConfig, viewDate, viewDate))) {\n      onPanelChange(viewValue, nextMode);\n    }\n  };\n  var triggerSelect = function triggerSelect(date, type) {\n    var forceTriggerSelect = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    if (mergedMode === picker || forceTriggerSelect) {\n      setInnerValue(date);\n      if (onSelect) {\n        onSelect(date);\n      }\n      if (onContextSelect) {\n        onContextSelect(date, type);\n      }\n      if (onChange && !isEqual(generateConfig, date, mergedValue) && !(disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date))) {\n        onChange(date);\n      }\n    }\n  };\n  var isSelectable = function isSelectable(key) {\n    if (CALENDAR_PANEL_MODE.includes(mergedMode)) {\n      var date;\n      var operationFnc;\n      var isDateMode = mergedMode === 'date';\n      if (key === KeyCode.PAGE_UP || key === KeyCode.PAGE_DOWN) {\n        operationFnc = isDateMode ? generateConfig.addMonth : generateConfig.addYear;\n      } else {\n        operationFnc = isDateMode ? generateConfig.addDate : generateConfig.addMonth;\n      }\n      switch (key) {\n        case KeyCode.LEFT:\n        case KeyCode.PAGE_UP:\n          date = operationFnc(viewDate, -1);\n          break;\n        case KeyCode.RIGHT:\n        case KeyCode.PAGE_DOWN:\n          date = operationFnc(viewDate, 1);\n          break;\n        case KeyCode.UP:\n        case KeyCode.DOWN:\n          date = operationFnc(viewDate, Number(\"\".concat(key === KeyCode.UP ? '-' : '').concat(isDateMode ? WEEK_DAY_COUNT : MONTH_COL_COUNT)));\n          break;\n      }\n      if (date) {\n        return !(disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date));\n      }\n    }\n    return true;\n  };\n  // ========================= Interactive ==========================\n  var onInternalKeyDown = function onInternalKeyDown(e) {\n    if (panelRef.current && panelRef.current.onKeyDown) {\n      var selectable = true;\n      var which = e.which;\n      if ([KeyCode.LEFT, KeyCode.RIGHT, KeyCode.UP, KeyCode.DOWN, KeyCode.PAGE_UP, KeyCode.PAGE_DOWN, KeyCode.ENTER].includes(which)) {\n        e.preventDefault();\n        if (which !== KeyCode.ENTER && tabIndex === 0) {\n          selectable = isSelectable(which);\n        }\n      }\n      // Cannot use keyboard to select disabled date\n      if (selectable) {\n        return panelRef.current.onKeyDown(e);\n      }\n    }\n    /* istanbul ignore next */\n    /* eslint-disable no-lone-blocks */\n    {\n      warning(false, 'Panel not correct handle keyDown event. Please help to fire issue about this.');\n      return false;\n    }\n    /* eslint-enable no-lone-blocks */\n  };\n\n  var onInternalBlur = function onInternalBlur(e) {\n    if (panelRef.current && panelRef.current.onBlur) {\n      panelRef.current.onBlur(e);\n    }\n  };\n  if (operationRef && panelPosition !== 'right') {\n    operationRef.current = {\n      onKeyDown: onInternalKeyDown,\n      onClose: function onClose() {\n        if (panelRef.current && panelRef.current.onClose) {\n          panelRef.current.onClose();\n        }\n      }\n    };\n  }\n  // ============================ Effect ============================\n  React.useEffect(function () {\n    if (value && !initRef.current) {\n      setInnerViewDate(value);\n    }\n  }, [value]);\n  React.useEffect(function () {\n    initRef.current = false;\n  }, []);\n  // ============================ Panels ============================\n  var panelNode;\n  var pickerProps = _objectSpread(_objectSpread({}, props), {}, {\n    operationRef: panelRef,\n    prefixCls: prefixCls,\n    viewDate: viewDate,\n    value: mergedValue,\n    onViewDateChange: setViewDate,\n    sourceMode: sourceMode,\n    onPanelChange: onInternalPanelChange,\n    disabledDate: disabledDate\n  });\n  delete pickerProps.onChange;\n  delete pickerProps.onSelect;\n  switch (mergedMode) {\n    case 'decade':\n      panelNode = /*#__PURE__*/React.createElement(DecadePanel, _extends({}, pickerProps, {\n        onSelect: function onSelect(date, type) {\n          setViewDate(date);\n          triggerSelect(date, type);\n        }\n      }));\n      break;\n    case 'year':\n      panelNode = /*#__PURE__*/React.createElement(YearPanel, _extends({}, pickerProps, {\n        onSelect: function onSelect(date, type) {\n          setViewDate(date);\n          triggerSelect(date, type);\n        }\n      }));\n      break;\n    case 'month':\n      panelNode = /*#__PURE__*/React.createElement(MonthPanel, _extends({}, pickerProps, {\n        onSelect: function onSelect(date, type) {\n          setViewDate(date);\n          triggerSelect(date, type);\n        }\n      }));\n      break;\n    case 'quarter':\n      panelNode = /*#__PURE__*/React.createElement(QuarterPanel, _extends({}, pickerProps, {\n        onSelect: function onSelect(date, type) {\n          setViewDate(date);\n          triggerSelect(date, type);\n        }\n      }));\n      break;\n    case 'week':\n      panelNode = /*#__PURE__*/React.createElement(WeekPanel, _extends({}, pickerProps, {\n        onSelect: function onSelect(date, type) {\n          setViewDate(date);\n          triggerSelect(date, type);\n        }\n      }));\n      break;\n    case 'time':\n      delete pickerProps.showTime;\n      panelNode = /*#__PURE__*/React.createElement(TimePanel, _extends({}, pickerProps, _typeof(showTime) === 'object' ? showTime : null, {\n        onSelect: function onSelect(date, type) {\n          setViewDate(date);\n          triggerSelect(date, type);\n        }\n      }));\n      break;\n    default:\n      if (showTime) {\n        panelNode = /*#__PURE__*/React.createElement(DatetimePanel, _extends({}, pickerProps, {\n          onSelect: function onSelect(date, type) {\n            setViewDate(date);\n            triggerSelect(date, type);\n          }\n        }));\n      } else {\n        panelNode = /*#__PURE__*/React.createElement(DatePanel, _extends({}, pickerProps, {\n          onSelect: function onSelect(date, type) {\n            setViewDate(date);\n            triggerSelect(date, type);\n          }\n        }));\n      }\n  }\n  // ============================ Footer ============================\n  var extraFooter;\n  var rangesNode;\n  var onNow = function onNow() {\n    var now = generateConfig.getNow();\n    var lowerBoundTime = getLowerBoundTime(generateConfig.getHour(now), generateConfig.getMinute(now), generateConfig.getSecond(now), isHourStepValid ? hourStep : 1, isMinuteStepValid ? minuteStep : 1, isSecondStepValid ? secondStep : 1);\n    var adjustedNow = setTime(generateConfig, now, lowerBoundTime[0],\n    // hour\n    lowerBoundTime[1],\n    // minute\n    lowerBoundTime[2]);\n    triggerSelect(adjustedNow, 'submit');\n  };\n  if (!hideRanges) {\n    extraFooter = getExtraFooter(prefixCls, mergedMode, renderExtraFooter);\n    rangesNode = getRanges({\n      prefixCls: prefixCls,\n      components: components,\n      needConfirmButton: needConfirmButton,\n      okDisabled: !mergedValue || disabledDate && disabledDate(mergedValue),\n      locale: locale,\n      showNow: showNow,\n      onNow: needConfirmButton && onNow,\n      onOk: function onOk() {\n        if (mergedValue) {\n          triggerSelect(mergedValue, 'submit', true);\n          if (_onOk) {\n            _onOk(mergedValue);\n          }\n        }\n      }\n    });\n  }\n  var todayNode;\n  if (showToday && mergedMode === 'date' && picker === 'date' && !showTime) {\n    var now = generateConfig.getNow();\n    var todayCls = \"\".concat(prefixCls, \"-today-btn\");\n    var disabled = disabledDate && disabledDate(now);\n    todayNode = /*#__PURE__*/React.createElement(\"a\", {\n      className: classNames(todayCls, disabled && \"\".concat(todayCls, \"-disabled\")),\n      \"aria-disabled\": disabled,\n      onClick: function onClick() {\n        if (!disabled) {\n          triggerSelect(now, 'mouse', true);\n        }\n      }\n    }, locale.today);\n  }\n  return /*#__PURE__*/React.createElement(PanelContext.Provider, {\n    value: _objectSpread(_objectSpread({}, panelContext), {}, {\n      mode: mergedMode,\n      hideHeader: 'hideHeader' in props ? hideHeader : panelContext.hideHeader,\n      hidePrevBtn: inRange && panelPosition === 'right',\n      hideNextBtn: inRange && panelPosition === 'left'\n    })\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    tabIndex: tabIndex,\n    className: classNames(\"\".concat(prefixCls, \"-panel\"), className, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-panel-has-range\"), rangedValue && rangedValue[0] && rangedValue[1]), _defineProperty(_classNames, \"\".concat(prefixCls, \"-panel-has-range-hover\"), hoverRangedValue && hoverRangedValue[0] && hoverRangedValue[1]), _defineProperty(_classNames, \"\".concat(prefixCls, \"-panel-rtl\"), direction === 'rtl'), _classNames)),\n    style: style,\n    onKeyDown: onInternalKeyDown,\n    onBlur: onInternalBlur,\n    onMouseDown: onMouseDown,\n    ref: panelDivRef\n  }, panelNode, extraFooter || rangesNode || todayNode ? /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-footer\")\n  }, extraFooter, rangesNode, todayNode) : null));\n}\nexport default PickerPanel;\n/* eslint-enable */","import ReactDOM from 'react-dom';\nexport default function addEventListenerWrap(target, eventType, cb, option) {\n  /* eslint camelcase: 2 */\n  var callback = ReactDOM.unstable_batchedUpdates ? function run(e) {\n    ReactDOM.unstable_batchedUpdates(cb, e);\n  } : cb;\n  if (target !== null && target !== void 0 && target.addEventListener) {\n    target.addEventListener(eventType, callback, option);\n  }\n  return {\n    remove: function remove() {\n      if (target !== null && target !== void 0 && target.removeEventListener) {\n        target.removeEventListener(eventType, callback, option);\n      }\n    }\n  };\n}","import { useRef, useEffect, forwardRef, useImperativeHandle } from 'react';\nimport ReactDOM from 'react-dom';\nimport canUseDom from \"./Dom/canUseDom\";\nvar Portal = /*#__PURE__*/forwardRef(function (props, ref) {\n  var didUpdate = props.didUpdate,\n    getContainer = props.getContainer,\n    children = props.children;\n  var parentRef = useRef();\n  var containerRef = useRef();\n\n  // Ref return nothing, only for wrapper check exist\n  useImperativeHandle(ref, function () {\n    return {};\n  });\n\n  // Create container in client side with sync to avoid useEffect not get ref\n  var initRef = useRef(false);\n  if (!initRef.current && canUseDom()) {\n    containerRef.current = getContainer();\n    parentRef.current = containerRef.current.parentNode;\n    initRef.current = true;\n  }\n\n  // [Legacy] Used by `rc-trigger`\n  useEffect(function () {\n    didUpdate === null || didUpdate === void 0 ? void 0 : didUpdate(props);\n  });\n  useEffect(function () {\n    // Restore container to original place\n    // React 18 StrictMode will unmount first and mount back for effect test:\n    // https://reactjs.org/blog/2022/03/29/react-v18.html#new-strict-mode-behaviors\n    if (containerRef.current.parentNode === null && parentRef.current !== null) {\n      parentRef.current.appendChild(containerRef.current);\n    }\n    return function () {\n      var _containerRef$current, _containerRef$current2;\n      // [Legacy] This should not be handle by Portal but parent PortalWrapper instead.\n      // Since some component use `Portal` directly, we have to keep the logic here.\n      (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : (_containerRef$current2 = _containerRef$current.parentNode) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.removeChild(containerRef.current);\n    };\n  }, []);\n  return containerRef.current ? /*#__PURE__*/ReactDOM.createPortal(children, containerRef.current) : null;\n});\nexport default Portal;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n\nfunction isPointsEq(a1, a2, isAlignPoint) {\n  if (isAlignPoint) {\n    return a1[0] === a2[0];\n  }\n\n  return a1[0] === a2[0] && a1[1] === a2[1];\n}\n\nexport function getAlignFromPlacement(builtinPlacements, placementStr, align) {\n  var baseAlign = builtinPlacements[placementStr] || {};\n  return _objectSpread(_objectSpread({}, baseAlign), align);\n}\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n  var points = align.points;\n  var placements = Object.keys(builtinPlacements);\n\n  for (var i = 0; i < placements.length; i += 1) {\n    var placement = placements[i];\n\n    if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) {\n      return \"\".concat(prefixCls, \"-placement-\").concat(placement);\n    }\n  }\n\n  return '';\n}","export function getMotion(_ref) {\n  var prefixCls = _ref.prefixCls,\n      motion = _ref.motion,\n      animation = _ref.animation,\n      transitionName = _ref.transitionName;\n\n  if (motion) {\n    return motion;\n  }\n\n  if (animation) {\n    return {\n      motionName: \"\".concat(prefixCls, \"-\").concat(animation)\n    };\n  }\n\n  if (transitionName) {\n    return {\n      motionName: transitionName\n    };\n  }\n\n  return null;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport { getMotion } from \"../utils/legacyUtil\";\nexport default function Mask(props) {\n  var prefixCls = props.prefixCls,\n      visible = props.visible,\n      zIndex = props.zIndex,\n      mask = props.mask,\n      maskMotion = props.maskMotion,\n      maskAnimation = props.maskAnimation,\n      maskTransitionName = props.maskTransitionName;\n\n  if (!mask) {\n    return null;\n  }\n\n  var motion = {};\n\n  if (maskMotion || maskTransitionName || maskAnimation) {\n    motion = _objectSpread({\n      motionAppear: true\n    }, getMotion({\n      motion: maskMotion,\n      prefixCls: prefixCls,\n      transitionName: maskTransitionName,\n      animation: maskAnimation\n    }));\n  }\n\n  return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motion, {\n    visible: visible,\n    removeOnLeave: true\n  }), function (_ref) {\n    var className = _ref.className;\n    return /*#__PURE__*/React.createElement(\"div\", {\n      style: {\n        zIndex: zIndex\n      },\n      className: classNames(\"\".concat(prefixCls, \"-mask\"), className)\n    });\n  });\n}","let vendorPrefix;\n\nconst jsCssMap = {\n  Webkit: '-webkit-',\n  Moz: '-moz-',\n  // IE did it wrong again ...\n  ms: '-ms-',\n  O: '-o-',\n};\n\nfunction getVendorPrefix() {\n  if (vendorPrefix !== undefined) {\n    return vendorPrefix;\n  }\n  vendorPrefix = '';\n  const style = document.createElement('p').style;\n  const testProp = 'Transform';\n  for (const key in jsCssMap) {\n    if (key + testProp in style) {\n      vendorPrefix = key;\n    }\n  }\n  return vendorPrefix;\n}\n\nfunction getTransitionName() {\n  return getVendorPrefix()\n    ? `${getVendorPrefix()}TransitionProperty`\n    : 'transitionProperty';\n}\n\nexport function getTransformName() {\n  return getVendorPrefix() ? `${getVendorPrefix()}Transform` : 'transform';\n}\n\nexport function setTransitionProperty(node, value) {\n  const name = getTransitionName();\n  if (name) {\n    node.style[name] = value;\n    if (name !== 'transitionProperty') {\n      node.style.transitionProperty = value;\n    }\n  }\n}\n\nfunction setTransform(node, value) {\n  const name = getTransformName();\n  if (name) {\n    node.style[name] = value;\n    if (name !== 'transform') {\n      node.style.transform = value;\n    }\n  }\n}\n\nexport function getTransitionProperty(node) {\n  return node.style.transitionProperty || node.style[getTransitionName()];\n}\n\nexport function getTransformXY(node) {\n  const style = window.getComputedStyle(node, null);\n  const transform =\n    style.getPropertyValue('transform') ||\n    style.getPropertyValue(getTransformName());\n  if (transform && transform !== 'none') {\n    const matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n    return {\n      x: parseFloat(matrix[12] || matrix[4], 0),\n      y: parseFloat(matrix[13] || matrix[5], 0),\n    };\n  }\n  return {\n    x: 0,\n    y: 0,\n  };\n}\n\nconst matrix2d = /matrix\\((.*)\\)/;\nconst matrix3d = /matrix3d\\((.*)\\)/;\n\nexport function setTransformXY(node, xy) {\n  const style = window.getComputedStyle(node, null);\n  const transform =\n    style.getPropertyValue('transform') ||\n    style.getPropertyValue(getTransformName());\n  if (transform && transform !== 'none') {\n    let arr;\n    let match2d = transform.match(matrix2d);\n    if (match2d) {\n      match2d = match2d[1];\n      arr = match2d.split(',').map(item => {\n        return parseFloat(item, 10);\n      });\n      arr[4] = xy.x;\n      arr[5] = xy.y;\n      setTransform(node, `matrix(${arr.join(',')})`);\n    } else {\n      const match3d = transform.match(matrix3d)[1];\n      arr = match3d.split(',').map(item => {\n        return parseFloat(item, 10);\n      });\n      arr[12] = xy.x;\n      arr[13] = xy.y;\n      setTransform(node, `matrix3d(${arr.join(',')})`);\n    }\n  } else {\n    setTransform(\n      node,\n      `translateX(${xy.x}px) translateY(${xy.y}px) translateZ(0)`,\n    );\n  }\n}\n","import {\n  setTransitionProperty,\n  getTransitionProperty,\n  getTransformXY,\n  setTransformXY,\n  getTransformName,\n} from './propertyUtils';\n\nconst RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nlet getComputedStyleX;\n\n// https://stackoverflow.com/a/3485654/3040605\nfunction forceRelayout(elem) {\n  const originalStyle = elem.style.display;\n  elem.style.display = 'none';\n  elem.offsetHeight; // eslint-disable-line\n  elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n  let value = v;\n  if (typeof name === 'object') {\n    for (const i in name) {\n      if (name.hasOwnProperty(i)) {\n        css(el, i, name[i]);\n      }\n    }\n    return undefined;\n  }\n  if (typeof value !== 'undefined') {\n    if (typeof value === 'number') {\n      value = `${value}px`;\n    }\n    el.style[name] = value;\n    return undefined;\n  }\n  return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n  let box;\n  let x;\n  let y;\n  const doc = elem.ownerDocument;\n  const body = doc.body;\n  const docElem = doc && doc.documentElement;\n  // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n  box = elem.getBoundingClientRect();\n\n  // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n  // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n  // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n  x = Math.floor(box.left);\n  y = Math.floor(box.top);\n\n  // In IE, most of the time, 2 extra pixels are added to the top and left\n  // due to the implicit 2-pixel inset border.  In IE6/7 quirks mode and\n  // IE6 standards mode, this border can be overridden by setting the\n  // document element's border to zero -- thus, we cannot rely on the\n  // offset always being 2 pixels.\n\n  // In quirks mode, the offset can be determined by querying the body's\n  // clientLeft/clientTop, but in standards mode, it is found by querying\n  // the document element's clientLeft/clientTop.  Since we already called\n  // getClientBoundingRect we have already forced a reflow, so it is not\n  // too expensive just to query them all.\n\n  // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n  // 窗口边框标准是设 documentElement ,quirks 时设置 body\n  // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n  // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n  // 标准 ie 下 docElem.clientTop 就是 border-top\n  // ie7 html 即窗口边框改变不了。永远为 2\n  // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n  x -= docElem.clientLeft || body.clientLeft || 0;\n  y -= docElem.clientTop || body.clientTop || 0;\n\n  return {\n    left: x,\n    top: y,\n  };\n}\n\nfunction getScroll(w, top) {\n  let ret = w[`page${top ? 'Y' : 'X'}Offset`];\n  const method = `scroll${top ? 'Top' : 'Left'}`;\n  if (typeof ret !== 'number') {\n    const d = w.document;\n    // ie6,7,8 standard mode\n    ret = d.documentElement[method];\n    if (typeof ret !== 'number') {\n      // quirks mode\n      ret = d.body[method];\n    }\n  }\n  return ret;\n}\n\nfunction getScrollLeft(w) {\n  return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n  return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n  const pos = getClientPosition(el);\n  const doc = el.ownerDocument;\n  const w = doc.defaultView || doc.parentWindow;\n  pos.left += getScrollLeft(w);\n  pos.top += getScrollTop(w);\n  return pos;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n  // must use == for ie8\n  /* eslint eqeqeq:0 */\n  return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n  if (isWindow(node)) {\n    return node.document;\n  }\n  if (node.nodeType === 9) {\n    return node;\n  }\n  return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n  let computedStyle = cs;\n  let val = '';\n  const d = getDocument(elem);\n  computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null);\n\n  // https://github.com/kissyteam/kissy/issues/61\n  if (computedStyle) {\n    val = computedStyle.getPropertyValue(name) || computedStyle[name];\n  }\n\n  return val;\n}\n\nconst _RE_NUM_NO_PX = new RegExp(`^(${RE_NUM})(?!px)[a-z%]+$`, 'i');\nconst RE_POS = /^(top|right|bottom|left)$/;\nconst CURRENT_STYLE = 'currentStyle';\nconst RUNTIME_STYLE = 'runtimeStyle';\nconst LEFT = 'left';\nconst PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n  // currentStyle maybe null\n  // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n  let ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n  // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n  // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n  // 在 ie 下不对,需要直接用 offset 方式\n  // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\n  // From the awesome hack by Dean Edwards\n  // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n  // If we're not dealing with a regular pixel number\n  // but a number that has a weird ending, we need to convert it to pixels\n  // exclude left right for relativity\n  if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n    // Remember the original values\n    const style = elem.style;\n    const left = style[LEFT];\n    const rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n    // prevent flashing of content\n    elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n    // Put in the new values to get a computed value out\n    style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n    ret = style.pixelLeft + PX;\n\n    // Revert the changed values\n    style[LEFT] = left;\n\n    elem[RUNTIME_STYLE][LEFT] = rsLeft;\n  }\n  return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n  getComputedStyleX = window.getComputedStyle\n    ? _getComputedStyle\n    : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n  if (dir === 'left') {\n    return option.useCssRight ? 'right' : dir;\n  }\n  return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n  if (dir === 'left') {\n    return 'right';\n  } else if (dir === 'right') {\n    return 'left';\n  } else if (dir === 'top') {\n    return 'bottom';\n  } else if (dir === 'bottom') {\n    return 'top';\n  }\n}\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setLeftTop(elem, offset, option) {\n  // set position first, in-case top/left are set even on static elem\n  if (css(elem, 'position') === 'static') {\n    elem.style.position = 'relative';\n  }\n  let presetH = -999;\n  let presetV = -999;\n  const horizontalProperty = getOffsetDirection('left', option);\n  const verticalProperty = getOffsetDirection('top', option);\n  const oppositeHorizontalProperty = oppositeOffsetDirection(\n    horizontalProperty,\n  );\n  const oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n  if (horizontalProperty !== 'left') {\n    presetH = 999;\n  }\n\n  if (verticalProperty !== 'top') {\n    presetV = 999;\n  }\n  let originalTransition = '';\n  const originalOffset = getOffset(elem);\n  if ('left' in offset || 'top' in offset) {\n    originalTransition = getTransitionProperty(elem) || '';\n    setTransitionProperty(elem, 'none');\n  }\n  if ('left' in offset) {\n    elem.style[oppositeHorizontalProperty] = '';\n    elem.style[horizontalProperty] = `${presetH}px`;\n  }\n  if ('top' in offset) {\n    elem.style[oppositeVerticalProperty] = '';\n    elem.style[verticalProperty] = `${presetV}px`;\n  }\n  // force relayout\n  forceRelayout(elem);\n  const old = getOffset(elem);\n  const originalStyle = {};\n  for (const key in offset) {\n    if (offset.hasOwnProperty(key)) {\n      const dir = getOffsetDirection(key, option);\n      const preset = key === 'left' ? presetH : presetV;\n      const off = originalOffset[key] - old[key];\n      if (dir === key) {\n        originalStyle[dir] = preset + off;\n      } else {\n        originalStyle[dir] = preset - off;\n      }\n    }\n  }\n  css(elem, originalStyle);\n  // force relayout\n  forceRelayout(elem);\n  if ('left' in offset || 'top' in offset) {\n    setTransitionProperty(elem, originalTransition);\n  }\n  const ret = {};\n  for (const key in offset) {\n    if (offset.hasOwnProperty(key)) {\n      const dir = getOffsetDirection(key, option);\n      const off = offset[key] - originalOffset[key];\n      if (key === dir) {\n        ret[dir] = originalStyle[dir] + off;\n      } else {\n        ret[dir] = originalStyle[dir] - off;\n      }\n    }\n  }\n  css(elem, ret);\n}\n\nfunction setTransform(elem, offset) {\n  const originalOffset = getOffset(elem);\n  const originalXY = getTransformXY(elem);\n  const resultXY = { x: originalXY.x, y: originalXY.y };\n  if ('left' in offset) {\n    resultXY.x = originalXY.x + offset.left - originalOffset.left;\n  }\n  if ('top' in offset) {\n    resultXY.y = originalXY.y + offset.top - originalOffset.top;\n  }\n  setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n  if (option.ignoreShake) {\n    const oriOffset = getOffset(elem);\n\n    const oLeft = oriOffset.left.toFixed(0);\n    const oTop = oriOffset.top.toFixed(0);\n    const tLeft = offset.left.toFixed(0);\n    const tTop = offset.top.toFixed(0);\n\n    if (oLeft === tLeft && oTop === tTop) {\n      return;\n    }\n  }\n\n  if (option.useCssRight || option.useCssBottom) {\n    setLeftTop(elem, offset, option);\n  } else if (\n    option.useCssTransform &&\n    getTransformName() in document.body.style\n  ) {\n    setTransform(elem, offset, option);\n  } else {\n    setLeftTop(elem, offset, option);\n  }\n}\n\nfunction each(arr, fn) {\n  for (let i = 0; i < arr.length; i++) {\n    fn(arr[i]);\n  }\n}\n\nfunction isBorderBoxFn(elem) {\n  return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nconst BOX_MODELS = ['margin', 'border', 'padding'];\nconst CONTENT_INDEX = -1;\nconst PADDING_INDEX = 2;\nconst BORDER_INDEX = 1;\nconst MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n  const old = {};\n  const style = elem.style;\n  let name;\n\n  // Remember the old values, and insert the new ones\n  for (name in options) {\n    if (options.hasOwnProperty(name)) {\n      old[name] = style[name];\n      style[name] = options[name];\n    }\n  }\n\n  callback.call(elem);\n\n  // Revert the old values\n  for (name in options) {\n    if (options.hasOwnProperty(name)) {\n      style[name] = old[name];\n    }\n  }\n}\n\nfunction getPBMWidth(elem, props, which) {\n  let value = 0;\n  let prop;\n  let j;\n  let i;\n  for (j = 0; j < props.length; j++) {\n    prop = props[j];\n    if (prop) {\n      for (i = 0; i < which.length; i++) {\n        let cssProp;\n        if (prop === 'border') {\n          cssProp = `${prop}${which[i]}Width`;\n        } else {\n          cssProp = prop + which[i];\n        }\n        value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n      }\n    }\n  }\n  return value;\n}\n\nconst domUtils = {\n  getParent(element) {\n    let parent = element;\n    do {\n      if (parent.nodeType === 11 && parent.host) {\n        parent = parent.host;\n      } else {\n        parent = parent.parentNode;\n      }\n    } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n    return parent;\n  },\n};\n\neach(['Width', 'Height'], name => {\n  domUtils[`doc${name}`] = refWin => {\n    const d = refWin.document;\n    return Math.max(\n      // firefox chrome documentElement.scrollHeight< body.scrollHeight\n      // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n      d.documentElement[`scroll${name}`],\n      // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n      d.body[`scroll${name}`],\n      domUtils[`viewport${name}`](d),\n    );\n  };\n\n  domUtils[`viewport${name}`] = win => {\n    // pc browser includes scrollbar in window.innerWidth\n    const prop = `client${name}`;\n    const doc = win.document;\n    const body = doc.body;\n    const documentElement = doc.documentElement;\n    const documentElementProp = documentElement[prop];\n    // 标准模式取 documentElement\n    // backcompat 取 body\n    return (\n      (doc.compatMode === 'CSS1Compat' && documentElementProp) ||\n      (body && body[prop]) ||\n      documentElementProp\n    );\n  };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra]  'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, ex) {\n  let extra = ex;\n  if (isWindow(elem)) {\n    return name === 'width'\n      ? domUtils.viewportWidth(elem)\n      : domUtils.viewportHeight(elem);\n  } else if (elem.nodeType === 9) {\n    return name === 'width'\n      ? domUtils.docWidth(elem)\n      : domUtils.docHeight(elem);\n  }\n  const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n  let borderBoxValue =\n    name === 'width'\n      ? Math.floor(elem.getBoundingClientRect().width)\n      : Math.floor(elem.getBoundingClientRect().height);\n  const isBorderBox = isBorderBoxFn(elem);\n  let cssBoxValue = 0;\n  if (\n    borderBoxValue === null ||\n    borderBoxValue === undefined ||\n    borderBoxValue <= 0\n  ) {\n    borderBoxValue = undefined;\n    // Fall back to computed then un computed css if necessary\n    cssBoxValue = getComputedStyleX(elem, name);\n    if (\n      cssBoxValue === null ||\n      cssBoxValue === undefined ||\n      Number(cssBoxValue) < 0\n    ) {\n      cssBoxValue = elem.style[name] || 0;\n    }\n    // Normalize '', auto, and prepare for extra\n    cssBoxValue = Math.floor(parseFloat(cssBoxValue)) || 0;\n  }\n  if (extra === undefined) {\n    extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n  }\n  const borderBoxValueOrIsBorderBox =\n    borderBoxValue !== undefined || isBorderBox;\n  const val = borderBoxValue || cssBoxValue;\n  if (extra === CONTENT_INDEX) {\n    if (borderBoxValueOrIsBorderBox) {\n      return val - getPBMWidth(elem, ['border', 'padding'], which);\n    }\n    return cssBoxValue;\n  } else if (borderBoxValueOrIsBorderBox) {\n    if (extra === BORDER_INDEX) {\n      return val;\n    }\n    return (\n      val +\n      (extra === PADDING_INDEX\n        ? -getPBMWidth(elem, ['border'], which)\n        : getPBMWidth(elem, ['margin'], which))\n    );\n  }\n  return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nconst cssShow = {\n  position: 'absolute',\n  visibility: 'hidden',\n  display: 'block',\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(...args) {\n  let val;\n  const elem = args[0];\n  // in case elem is window\n  // elem.offsetWidth === undefined\n  if (elem.offsetWidth !== 0) {\n    val = getWH.apply(undefined, args);\n  } else {\n    swap(elem, cssShow, () => {\n      val = getWH.apply(undefined, args);\n    });\n  }\n  return val;\n}\n\neach(['width', 'height'], name => {\n  const first = name.charAt(0).toUpperCase() + name.slice(1);\n  domUtils[`outer${first}`] = (el, includeMargin) => {\n    return (\n      el &&\n      getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX)\n    );\n  };\n  const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n  domUtils[name] = (elem, v) => {\n    let val = v;\n    if (val !== undefined) {\n      if (elem) {\n        const isBorderBox = isBorderBoxFn(elem);\n        if (isBorderBox) {\n          val += getPBMWidth(elem, ['padding', 'border'], which);\n        }\n        return css(elem, name, val);\n      }\n      return undefined;\n    }\n    return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n  };\n});\n\nfunction mix(to, from) {\n  for (const i in from) {\n    if (from.hasOwnProperty(i)) {\n      to[i] = from[i];\n    }\n  }\n  return to;\n}\n\nconst utils = {\n  getWindow(node) {\n    if (node && node.document && node.setTimeout) {\n      return node;\n    }\n    const doc = node.ownerDocument || node;\n    return doc.defaultView || doc.parentWindow;\n  },\n  getDocument,\n  offset(el, value, option) {\n    if (typeof value !== 'undefined') {\n      setOffset(el, value, option || {});\n    } else {\n      return getOffset(el);\n    }\n  },\n  isWindow,\n  each,\n  css,\n  clone(obj) {\n    let i;\n    const ret = {};\n    for (i in obj) {\n      if (obj.hasOwnProperty(i)) {\n        ret[i] = obj[i];\n      }\n    }\n    const overflow = obj.overflow;\n    if (overflow) {\n      for (i in obj) {\n        if (obj.hasOwnProperty(i)) {\n          ret.overflow[i] = obj.overflow[i];\n        }\n      }\n    }\n    return ret;\n  },\n  mix,\n  getWindowScrollLeft(w) {\n    return getScrollLeft(w);\n  },\n  getWindowScrollTop(w) {\n    return getScrollTop(w);\n  },\n  merge(...args) {\n    const ret = {};\n    for (let i = 0; i < args.length; i++) {\n      utils.mix(ret, args[i]);\n    }\n    return ret;\n  },\n  viewportWidth: 0,\n  viewportHeight: 0,\n};\n\nmix(utils, domUtils);\n\nexport default utils;\n","import utils from './utils';\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\nconst { getParent } = utils;\n\nfunction getOffsetParent(element) {\n  if (utils.isWindow(element) || element.nodeType === 9) {\n    return null;\n  }\n  // ie 这个也不是完全可行\n  /*\n   <div style=\"width: 50px;height: 100px;overflow: hidden\">\n   <div style=\"width: 50px;height: 100px;position: relative;\" id=\"d6\">\n   元素 6 高 100px 宽 50px<br/>\n   </div>\n   </div>\n   */\n  // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n  //  In other browsers it only includes elements with position absolute, relative or\n  // fixed, not elements with overflow set to auto or scroll.\n  //        if (UA.ie && ieMode < 8) {\n  //            return element.offsetParent;\n  //        }\n  // 统一的 offsetParent 方法\n  const doc = utils.getDocument(element);\n  const body = doc.body;\n  let parent;\n  let positionStyle = utils.css(element, 'position');\n  const skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n  if (!skipStatic) {\n    return element.nodeName.toLowerCase() === 'html'\n      ? null\n      : getParent(element);\n  }\n\n  for (\n    parent = getParent(element);\n    parent && parent !== body && parent.nodeType !== 9;\n    parent = getParent(parent)\n  ) {\n    positionStyle = utils.css(parent, 'position');\n    if (positionStyle !== 'static') {\n      return parent;\n    }\n  }\n  return null;\n}\n\nexport default getOffsetParent;\n","import utils from './utils';\n\nconst { getParent } = utils;\n\nexport default function isAncestorFixed(element) {\n  if (utils.isWindow(element) || element.nodeType === 9) {\n    return false;\n  }\n\n  const doc = utils.getDocument(element);\n  const body = doc.body;\n  let parent = null;\n  for (\n    parent = getParent(element);\n    // 修复元素位于 document.documentElement 下导致崩溃问题\n    parent && parent !== body && parent !== doc;\n    parent = getParent(parent)\n  ) {\n    const positionStyle = utils.css(parent, 'position');\n    if (positionStyle === 'fixed') {\n      return true;\n    }\n  }\n  return false;\n}\n","import utils from './utils';\nimport getOffsetParent from './getOffsetParent';\nimport isAncestorFixed from './isAncestorFixed';\n\n/**\n * 获得元素的显示部分的区域\n */\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n  const visibleRect = {\n    left: 0,\n    right: Infinity,\n    top: 0,\n    bottom: Infinity,\n  };\n  let el = getOffsetParent(element);\n  const doc = utils.getDocument(element);\n  const win = doc.defaultView || doc.parentWindow;\n  const body = doc.body;\n  const documentElement = doc.documentElement;\n\n  // Determine the size of the visible rect by climbing the dom accounting for\n  // all scrollable containers.\n  while (el) {\n    // clientWidth is zero for inline block elements in ie.\n    if (\n      (navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) &&\n      // body may have overflow set on it, yet we still get the entire\n      // viewport. In some browsers, el.offsetParent may be\n      // document.documentElement, so check for that too.\n      (el !== body &&\n        el !== documentElement &&\n        utils.css(el, 'overflow') !== 'visible')\n    ) {\n      const pos = utils.offset(el);\n      // add border\n      pos.left += el.clientLeft;\n      pos.top += el.clientTop;\n      visibleRect.top = Math.max(visibleRect.top, pos.top);\n      visibleRect.right = Math.min(\n        visibleRect.right,\n        // consider area without scrollBar\n        pos.left + el.clientWidth,\n      );\n      visibleRect.bottom = Math.min(\n        visibleRect.bottom,\n        pos.top + el.clientHeight,\n      );\n      visibleRect.left = Math.max(visibleRect.left, pos.left);\n    } else if (el === body || el === documentElement) {\n      break;\n    }\n    el = getOffsetParent(el);\n  }\n\n  // Set element position to fixed\n  // make sure absolute element itself don't affect it's visible area\n  // https://github.com/ant-design/ant-design/issues/7601\n  let originalPosition = null;\n  if (!utils.isWindow(element) && element.nodeType !== 9) {\n    originalPosition = element.style.position;\n    const position = utils.css(element, 'position');\n    if (position === 'absolute') {\n      element.style.position = 'fixed';\n    }\n  }\n\n  const scrollX = utils.getWindowScrollLeft(win);\n  const scrollY = utils.getWindowScrollTop(win);\n  const viewportWidth = utils.viewportWidth(win);\n  const viewportHeight = utils.viewportHeight(win);\n  let documentWidth = documentElement.scrollWidth;\n  let documentHeight = documentElement.scrollHeight;\n\n  // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n  // We should cut this ourself.\n  const bodyStyle = window.getComputedStyle(body);\n  if (bodyStyle.overflowX === 'hidden') {\n    documentWidth = win.innerWidth;\n  }\n  if (bodyStyle.overflowY === 'hidden') {\n    documentHeight = win.innerHeight;\n  }\n\n  // Reset element position after calculate the visible area\n  if (element.style) {\n    element.style.position = originalPosition;\n  }\n\n  if (alwaysByViewport || isAncestorFixed(element)) {\n    // Clip by viewport's size.\n    visibleRect.left = Math.max(visibleRect.left, scrollX);\n    visibleRect.top = Math.max(visibleRect.top, scrollY);\n    visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n    visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n  } else {\n    // Clip by document's size.\n    const maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n    visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n\n    const maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n    visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n  }\n\n  return visibleRect.top >= 0 &&\n    visibleRect.left >= 0 &&\n    visibleRect.bottom > visibleRect.top &&\n    visibleRect.right > visibleRect.left\n    ? visibleRect\n    : null;\n}\n\nexport default getVisibleRectForElement;\n","import utils from './utils';\n\nfunction getRegion(node) {\n  let offset;\n  let w;\n  let h;\n  if (!utils.isWindow(node) && node.nodeType !== 9) {\n    offset = utils.offset(node);\n    w = utils.outerWidth(node);\n    h = utils.outerHeight(node);\n  } else {\n    const win = utils.getWindow(node);\n    offset = {\n      left: utils.getWindowScrollLeft(win),\n      top: utils.getWindowScrollTop(win),\n    };\n    w = utils.viewportWidth(win);\n    h = utils.viewportHeight(win);\n  }\n  offset.width = w;\n  offset.height = h;\n  return offset;\n}\n\nexport default getRegion;\n","/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\n\nfunction getAlignOffset(region, align) {\n  const V = align.charAt(0);\n  const H = align.charAt(1);\n  const w = region.width;\n  const h = region.height;\n\n  let x = region.left;\n  let y = region.top;\n\n  if (V === 'c') {\n    y += h / 2;\n  } else if (V === 'b') {\n    y += h;\n  }\n\n  if (H === 'c') {\n    x += w / 2;\n  } else if (H === 'r') {\n    x += w;\n  }\n\n  return {\n    left: x,\n    top: y,\n  };\n}\n\nexport default getAlignOffset;\n","import getAlignOffset from './getAlignOffset';\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n  const p1 = getAlignOffset(refNodeRegion, points[1]);\n  const p2 = getAlignOffset(elRegion, points[0]);\n  const diff = [p2.left - p1.left, p2.top - p1.top];\n\n  return {\n    left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n    top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1]),\n  };\n}\n\nexport default getElFuturePos;\n","/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nimport utils from '../utils';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport adjustForViewport from '../adjustForViewport';\nimport getRegion from '../getRegion';\nimport getElFuturePos from '../getElFuturePos';\n\n// http://yiminghe.iteye.com/blog/1124720\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n  return (\n    elFuturePos.left < visibleRect.left ||\n    elFuturePos.left + elRegion.width > visibleRect.right\n  );\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n  return (\n    elFuturePos.top < visibleRect.top ||\n    elFuturePos.top + elRegion.height > visibleRect.bottom\n  );\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n  return (\n    elFuturePos.left > visibleRect.right ||\n    elFuturePos.left + elRegion.width < visibleRect.left\n  );\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n  return (\n    elFuturePos.top > visibleRect.bottom ||\n    elFuturePos.top + elRegion.height < visibleRect.top\n  );\n}\n\nfunction flip(points, reg, map) {\n  const ret = [];\n  utils.each(points, p => {\n    ret.push(\n      p.replace(reg, m => {\n        return map[m];\n      }),\n    );\n  });\n  return ret;\n}\n\nfunction flipOffset(offset, index) {\n  offset[index] = -offset[index];\n  return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n  let n;\n  if (/%$/.test(str)) {\n    n = (parseInt(str.substring(0, str.length - 1), 10) / 100) * offsetLen;\n  } else {\n    n = parseInt(str, 10);\n  }\n  return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n  offset[0] = convertOffset(offset[0], el.width);\n  offset[1] = convertOffset(offset[1], el.height);\n}\n\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n  let points = align.points;\n  let offset = align.offset || [0, 0];\n  let targetOffset = align.targetOffset || [0, 0];\n  let overflow = align.overflow;\n  const source = align.source || el;\n  offset = [].concat(offset);\n  targetOffset = [].concat(targetOffset);\n  overflow = overflow || {};\n  const newOverflowCfg = {};\n  let fail = 0;\n  const alwaysByViewport = !!(overflow && overflow.alwaysByViewport);\n  // 当前节点可以被放置的显示区域\n  const visibleRect = getVisibleRectForElement(source, alwaysByViewport);\n  // 当前节点所占的区域, left/top/width/height\n  const elRegion = getRegion(source);\n  // 将 offset 转换成数值,支持百分比\n  normalizeOffset(offset, elRegion);\n  normalizeOffset(targetOffset, tgtRegion);\n  // 当前节点将要被放置的位置\n  let elFuturePos = getElFuturePos(\n    elRegion,\n    tgtRegion,\n    points,\n    offset,\n    targetOffset,\n  );\n  // 当前节点将要所处的区域\n  let newElRegion = utils.merge(elRegion, elFuturePos);\n\n  // 如果可视区域不能完全放置当前节点时允许调整\n  if (\n    visibleRect &&\n    (overflow.adjustX || overflow.adjustY) &&\n    isTgtRegionVisible\n  ) {\n    if (overflow.adjustX) {\n      // 如果横向不能放下\n      if (isFailX(elFuturePos, elRegion, visibleRect)) {\n        // 对齐位置反下\n        const newPoints = flip(points, /[lr]/gi, {\n          l: 'r',\n          r: 'l',\n        });\n        // 偏移量也反下\n        const newOffset = flipOffset(offset, 0);\n        const newTargetOffset = flipOffset(targetOffset, 0);\n        const newElFuturePos = getElFuturePos(\n          elRegion,\n          tgtRegion,\n          newPoints,\n          newOffset,\n          newTargetOffset,\n        );\n\n        if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n          fail = 1;\n          points = newPoints;\n          offset = newOffset;\n          targetOffset = newTargetOffset;\n        }\n      }\n    }\n\n    if (overflow.adjustY) {\n      // 如果纵向不能放下\n      if (isFailY(elFuturePos, elRegion, visibleRect)) {\n        // 对齐位置反下\n        const newPoints = flip(points, /[tb]/gi, {\n          t: 'b',\n          b: 't',\n        });\n        // 偏移量也反下\n        const newOffset = flipOffset(offset, 1);\n        const newTargetOffset = flipOffset(targetOffset, 1);\n        const newElFuturePos = getElFuturePos(\n          elRegion,\n          tgtRegion,\n          newPoints,\n          newOffset,\n          newTargetOffset,\n        );\n\n        if (!isCompleteFailY(newElFuturePos, elRegion, visibleRect)) {\n          fail = 1;\n          points = newPoints;\n          offset = newOffset;\n          targetOffset = newTargetOffset;\n        }\n      }\n    }\n\n    // 如果失败,重新计算当前节点将要被放置的位置\n    if (fail) {\n      elFuturePos = getElFuturePos(\n        elRegion,\n        tgtRegion,\n        points,\n        offset,\n        targetOffset,\n      );\n      utils.mix(newElRegion, elFuturePos);\n    }\n    const isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n    const isStillFailY = isFailY(elFuturePos, elRegion, visibleRect);\n    // 检查反下后的位置是否可以放下了,如果仍然放不下:\n    // 1. 复原修改过的定位参数\n    if (isStillFailX || isStillFailY) {\n      let newPoints = points;\n\n      // 重置对应部分的翻转逻辑\n      if (isStillFailX) {\n        newPoints = flip(points, /[lr]/gi, {\n          l: 'r',\n          r: 'l',\n        });\n      }\n      if (isStillFailY) {\n        newPoints = flip(points, /[tb]/gi, {\n          t: 'b',\n          b: 't',\n        });\n      }\n\n      points = newPoints;\n\n      offset = align.offset || [0, 0];\n      targetOffset = align.targetOffset || [0, 0];\n    }\n    // 2. 只有指定了可以调整当前方向才调整\n    newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n    newOverflowCfg.adjustY = overflow.adjustY && isStillFailY;\n\n    // 确实要调整,甚至可能会调整高度宽度\n    if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n      newElRegion = adjustForViewport(\n        elFuturePos,\n        elRegion,\n        visibleRect,\n        newOverflowCfg,\n      );\n    }\n  }\n\n  // need judge to in case set fixed with in css on height auto element\n  if (newElRegion.width !== elRegion.width) {\n    utils.css(\n      source,\n      'width',\n      utils.width(source) + newElRegion.width - elRegion.width,\n    );\n  }\n\n  if (newElRegion.height !== elRegion.height) {\n    utils.css(\n      source,\n      'height',\n      utils.height(source) + newElRegion.height - elRegion.height,\n    );\n  }\n\n  // https://github.com/kissyteam/kissy/issues/190\n  // 相对于屏幕位置没变,而 left/top 变了\n  // 例如 <div 'relative'><el absolute></div>\n  utils.offset(\n    source,\n    {\n      left: newElRegion.left,\n      top: newElRegion.top,\n    },\n    {\n      useCssRight: align.useCssRight,\n      useCssBottom: align.useCssBottom,\n      useCssTransform: align.useCssTransform,\n      ignoreShake: align.ignoreShake,\n    },\n  );\n\n  return {\n    points,\n    offset,\n    targetOffset,\n    overflow: newOverflowCfg,\n  };\n}\n\nexport default doAlign;\n/**\n *  2012-04-26 yiminghe@gmail.com\n *   - 优化智能对齐算法\n *   - 慎用 resizeXX\n *\n *  2011-07-13 yiminghe@gmail.com note:\n *   - 增加智能对齐,以及大小调整选项\n **/\n","import utils from './utils';\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n  const pos = utils.clone(elFuturePos);\n  const size = {\n    width: elRegion.width,\n    height: elRegion.height,\n  };\n\n  if (overflow.adjustX && pos.left < visibleRect.left) {\n    pos.left = visibleRect.left;\n  }\n\n  // Left edge inside and right edge outside viewport, try to resize it.\n  if (\n    overflow.resizeWidth &&\n    pos.left >= visibleRect.left &&\n    pos.left + size.width > visibleRect.right\n  ) {\n    size.width -= pos.left + size.width - visibleRect.right;\n  }\n\n  // Right edge outside viewport, try to move it.\n  if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n    // 保证左边界和可视区域左边界对齐\n    pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n  }\n\n  // Top edge outside viewport, try to move it.\n  if (overflow.adjustY && pos.top < visibleRect.top) {\n    pos.top = visibleRect.top;\n  }\n\n  // Top edge inside and bottom edge outside viewport, try to resize it.\n  if (\n    overflow.resizeHeight &&\n    pos.top >= visibleRect.top &&\n    pos.top + size.height > visibleRect.bottom\n  ) {\n    size.height -= pos.top + size.height - visibleRect.bottom;\n  }\n\n  // Bottom edge outside viewport, try to move it.\n  if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n    // 保证上边界和可视区域上边界对齐\n    pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n  }\n\n  return utils.mix(pos, size);\n}\n\nexport default adjustForViewport;\n","import doAlign from './align';\nimport getOffsetParent from '../getOffsetParent';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport getRegion from '../getRegion';\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n  const visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n  const targetRegion = getRegion(target);\n\n  return (\n    !visibleRect ||\n    targetRegion.left + targetRegion.width <= visibleRect.left ||\n    targetRegion.top + targetRegion.height <= visibleRect.top ||\n    targetRegion.left >= visibleRect.right ||\n    targetRegion.top >= visibleRect.bottom\n  );\n}\n\nfunction alignElement(el, refNode, align) {\n  const target = align.target || refNode;\n  const refNodeRegion = getRegion(target);\n\n  const isTargetNotOutOfVisible = !isOutOfVisibleRect(\n    target,\n    align.overflow && align.overflow.alwaysByViewport,\n  );\n\n  return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\n\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\nexport default alignElement;\n","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport warning from \"./warning\";\n\n/**\n * Deeply compares two object literals.\n * @param obj1 object 1\n * @param obj2 object 2\n * @param shallow shallow compare\n * @returns\n */\nfunction isEqual(obj1, obj2) {\n  var shallow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  // https://github.com/mapbox/mapbox-gl-js/pull/5979/files#diff-fde7145050c47cc3a306856efd5f9c3016e86e859de9afbd02c879be5067e58f\n  var refSet = new Set();\n  function deepEqual(a, b) {\n    var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n    var circular = refSet.has(a);\n    warning(!circular, 'Warning: There may be circular references');\n    if (circular) {\n      return false;\n    }\n    if (a === b) {\n      return true;\n    }\n    if (shallow && level > 1) {\n      return false;\n    }\n    refSet.add(a);\n    var newLevel = level + 1;\n    if (Array.isArray(a)) {\n      if (!Array.isArray(b) || a.length !== b.length) {\n        return false;\n      }\n      for (var i = 0; i < a.length; i++) {\n        if (!deepEqual(a[i], b[i], newLevel)) {\n          return false;\n        }\n      }\n      return true;\n    }\n    if (a && b && _typeof(a) === 'object' && _typeof(b) === 'object') {\n      var keys = Object.keys(a);\n      if (keys.length !== Object.keys(b).length) {\n        return false;\n      }\n      return keys.every(function (key) {\n        return deepEqual(a[key], b[key], newLevel);\n      });\n    }\n    // other\n    return false;\n  }\n  return deepEqual(obj1, obj2);\n}\nexport default isEqual;","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport ResizeObserver from 'resize-observer-polyfill';\nimport contains from \"rc-util/es/Dom/contains\";\nexport function isSamePoint(prev, next) {\n  if (prev === next) return true;\n  if (!prev || !next) return false;\n\n  if ('pageX' in next && 'pageY' in next) {\n    return prev.pageX === next.pageX && prev.pageY === next.pageY;\n  }\n\n  if ('clientX' in next && 'clientY' in next) {\n    return prev.clientX === next.clientX && prev.clientY === next.clientY;\n  }\n\n  return false;\n}\nexport function restoreFocus(activeElement, container) {\n  // Focus back if is in the container\n  if (activeElement !== document.activeElement && contains(container, activeElement) && typeof activeElement.focus === 'function') {\n    activeElement.focus();\n  }\n}\nexport function monitorResize(element, callback) {\n  var prevWidth = null;\n  var prevHeight = null;\n\n  function onResize(_ref) {\n    var _ref2 = _slicedToArray(_ref, 1),\n        target = _ref2[0].target;\n\n    if (!document.documentElement.contains(target)) return;\n\n    var _target$getBoundingCl = target.getBoundingClientRect(),\n        width = _target$getBoundingCl.width,\n        height = _target$getBoundingCl.height;\n\n    var fixedWidth = Math.floor(width);\n    var fixedHeight = Math.floor(height);\n\n    if (prevWidth !== fixedWidth || prevHeight !== fixedHeight) {\n      // https://webkit.org/blog/9997/resizeobserver-in-webkit/\n      Promise.resolve().then(function () {\n        callback({\n          width: fixedWidth,\n          height: fixedHeight\n        });\n      });\n    }\n\n    prevWidth = fixedWidth;\n    prevHeight = fixedHeight;\n  }\n\n  var resizeObserver = new ResizeObserver(onResize);\n\n  if (element) {\n    resizeObserver.observe(element);\n  }\n\n  return function () {\n    resizeObserver.disconnect();\n  };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/**\n * Removed props:\n *  - childrenProps\n */\nimport { alignElement, alignPoint } from 'dom-align';\nimport isEqual from \"rc-util/es/isEqual\";\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport React from 'react';\nimport useBuffer from \"./hooks/useBuffer\";\nimport { isSamePoint, monitorResize, restoreFocus } from \"./util\";\n\nfunction getElement(func) {\n  if (typeof func !== 'function') return null;\n  return func();\n}\n\nfunction getPoint(point) {\n  if (_typeof(point) !== 'object' || !point) return null;\n  return point;\n}\n\nvar Align = function Align(_ref, ref) {\n  var children = _ref.children,\n      disabled = _ref.disabled,\n      target = _ref.target,\n      align = _ref.align,\n      onAlign = _ref.onAlign,\n      monitorWindowResize = _ref.monitorWindowResize,\n      _ref$monitorBufferTim = _ref.monitorBufferTime,\n      monitorBufferTime = _ref$monitorBufferTim === void 0 ? 0 : _ref$monitorBufferTim;\n  var cacheRef = React.useRef({});\n  /** Popup node ref */\n\n  var nodeRef = React.useRef();\n  var childNode = React.Children.only(children); // ===================== Align ======================\n  // We save the props here to avoid closure makes props ood\n\n  var forceAlignPropsRef = React.useRef({});\n  forceAlignPropsRef.current.disabled = disabled;\n  forceAlignPropsRef.current.target = target;\n  forceAlignPropsRef.current.align = align;\n  forceAlignPropsRef.current.onAlign = onAlign;\n\n  var _useBuffer = useBuffer(function () {\n    var _forceAlignPropsRef$c = forceAlignPropsRef.current,\n        latestDisabled = _forceAlignPropsRef$c.disabled,\n        latestTarget = _forceAlignPropsRef$c.target,\n        latestAlign = _forceAlignPropsRef$c.align,\n        latestOnAlign = _forceAlignPropsRef$c.onAlign;\n    var source = nodeRef.current;\n\n    if (!latestDisabled && latestTarget && source) {\n      var _result;\n\n      var _element = getElement(latestTarget);\n\n      var _point = getPoint(latestTarget);\n\n      cacheRef.current.element = _element;\n      cacheRef.current.point = _point;\n      cacheRef.current.align = latestAlign; // IE lose focus after element realign\n      // We should record activeElement and restore later\n\n      var _document = document,\n          activeElement = _document.activeElement; // We only align when element is visible\n\n      if (_element && isVisible(_element)) {\n        _result = alignElement(source, _element, latestAlign);\n      } else if (_point) {\n        _result = alignPoint(source, _point, latestAlign);\n      }\n\n      restoreFocus(activeElement, source);\n\n      if (latestOnAlign && _result) {\n        latestOnAlign(source, _result);\n      }\n\n      return true;\n    }\n\n    return false;\n  }, monitorBufferTime),\n      _useBuffer2 = _slicedToArray(_useBuffer, 2),\n      _forceAlign = _useBuffer2[0],\n      cancelForceAlign = _useBuffer2[1]; // ===================== Effect =====================\n  // Handle props change\n\n\n  var _React$useState = React.useState(),\n      _React$useState2 = _slicedToArray(_React$useState, 2),\n      element = _React$useState2[0],\n      setElement = _React$useState2[1];\n\n  var _React$useState3 = React.useState(),\n      _React$useState4 = _slicedToArray(_React$useState3, 2),\n      point = _React$useState4[0],\n      setPoint = _React$useState4[1];\n\n  useLayoutEffect(function () {\n    setElement(getElement(target));\n    setPoint(getPoint(target));\n  });\n  React.useEffect(function () {\n    if (cacheRef.current.element !== element || !isSamePoint(cacheRef.current.point, point) || !isEqual(cacheRef.current.align, align)) {\n      _forceAlign();\n    }\n  }); // Watch popup element resize\n\n  React.useEffect(function () {\n    var cancelFn = monitorResize(nodeRef.current, _forceAlign);\n    return cancelFn;\n  }, [nodeRef.current]); // Watch target element resize\n\n  React.useEffect(function () {\n    var cancelFn = monitorResize(element, _forceAlign);\n    return cancelFn;\n  }, [element]); // Listen for disabled change\n\n  React.useEffect(function () {\n    if (!disabled) {\n      _forceAlign();\n    } else {\n      cancelForceAlign();\n    }\n  }, [disabled]); // Listen for window resize\n\n  React.useEffect(function () {\n    if (monitorWindowResize) {\n      var cancelFn = addEventListener(window, 'resize', _forceAlign);\n      return cancelFn.remove;\n    }\n  }, [monitorWindowResize]); // Clear all if unmount\n\n  React.useEffect(function () {\n    return function () {\n      cancelForceAlign();\n    };\n  }, []); // ====================== Ref =======================\n\n  React.useImperativeHandle(ref, function () {\n    return {\n      forceAlign: function forceAlign() {\n        return _forceAlign(true);\n      }\n    };\n  }); // ===================== Render =====================\n\n  if ( /*#__PURE__*/React.isValidElement(childNode)) {\n    childNode = /*#__PURE__*/React.cloneElement(childNode, {\n      ref: composeRef(childNode.ref, nodeRef)\n    });\n  }\n\n  return childNode;\n};\n\nvar RcAlign = /*#__PURE__*/React.forwardRef(Align);\nRcAlign.displayName = 'Align';\nexport default RcAlign;","import React from 'react';\nexport default (function (callback, buffer) {\n  var calledRef = React.useRef(false);\n  var timeoutRef = React.useRef(null);\n\n  function cancelTrigger() {\n    window.clearTimeout(timeoutRef.current);\n  }\n\n  function trigger(force) {\n    cancelTrigger();\n\n    if (!calledRef.current || force === true) {\n      if (callback(force) === false) {\n        // Not delay since callback cancelled self\n        return;\n      }\n\n      calledRef.current = true;\n      timeoutRef.current = window.setTimeout(function () {\n        calledRef.current = false;\n      }, buffer);\n    } else {\n      timeoutRef.current = window.setTimeout(function () {\n        calledRef.current = false;\n        trigger();\n      }, buffer);\n    }\n  }\n\n  return [trigger, function () {\n    calledRef.current = false;\n    cancelTrigger();\n  }];\n});","import utils from '../utils';\nimport doAlign from './align';\n\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n  let pageX;\n  let pageY;\n\n  const doc = utils.getDocument(el);\n  const win = doc.defaultView || doc.parentWindow;\n\n  const scrollX = utils.getWindowScrollLeft(win);\n  const scrollY = utils.getWindowScrollTop(win);\n  const viewportWidth = utils.viewportWidth(win);\n  const viewportHeight = utils.viewportHeight(win);\n\n  if ('pageX' in tgtPoint) {\n    pageX = tgtPoint.pageX;\n  } else {\n    pageX = scrollX + tgtPoint.clientX;\n  }\n\n  if ('pageY' in tgtPoint) {\n    pageY = tgtPoint.pageY;\n  } else {\n    pageY = scrollY + tgtPoint.clientY;\n  }\n\n  const tgtRegion = {\n    left: pageX,\n    top: pageY,\n    width: 0,\n    height: 0,\n  };\n\n  const pointInView =\n    pageX >= 0 &&\n    pageX <= scrollX + viewportWidth &&\n    (pageY >= 0 && pageY <= scrollY + viewportHeight);\n\n  // Provide default target point\n  const points = [align.points[0], 'cc'];\n\n  return doAlign(el, tgtRegion, { ...align, points }, pointInView);\n}\n\nexport default alignPoint;\n","// export this package's api\nimport Align from \"./Align\";\nexport default Align;","import _typeof from \"./typeof.js\";\nfunction _regeneratorRuntime() {\n  \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n  _regeneratorRuntime = function _regeneratorRuntime() {\n    return e;\n  };\n  var t,\n    e = {},\n    r = Object.prototype,\n    n = r.hasOwnProperty,\n    o = Object.defineProperty || function (t, e, r) {\n      t[e] = r.value;\n    },\n    i = \"function\" == typeof Symbol ? Symbol : {},\n    a = i.iterator || \"@@iterator\",\n    c = i.asyncIterator || \"@@asyncIterator\",\n    u = i.toStringTag || \"@@toStringTag\";\n  function define(t, e, r) {\n    return Object.defineProperty(t, e, {\n      value: r,\n      enumerable: !0,\n      configurable: !0,\n      writable: !0\n    }), t[e];\n  }\n  try {\n    define({}, \"\");\n  } catch (t) {\n    define = function define(t, e, r) {\n      return t[e] = r;\n    };\n  }\n  function wrap(t, e, r, n) {\n    var i = e && e.prototype instanceof Generator ? e : Generator,\n      a = Object.create(i.prototype),\n      c = new Context(n || []);\n    return o(a, \"_invoke\", {\n      value: makeInvokeMethod(t, r, c)\n    }), a;\n  }\n  function tryCatch(t, e, r) {\n    try {\n      return {\n        type: \"normal\",\n        arg: t.call(e, r)\n      };\n    } catch (t) {\n      return {\n        type: \"throw\",\n        arg: t\n      };\n    }\n  }\n  e.wrap = wrap;\n  var h = \"suspendedStart\",\n    l = \"suspendedYield\",\n    f = \"executing\",\n    s = \"completed\",\n    y = {};\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n  var p = {};\n  define(p, a, function () {\n    return this;\n  });\n  var d = Object.getPrototypeOf,\n    v = d && d(d(values([])));\n  v && v !== r && n.call(v, a) && (p = v);\n  var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n  function defineIteratorMethods(t) {\n    [\"next\", \"throw\", \"return\"].forEach(function (e) {\n      define(t, e, function (t) {\n        return this._invoke(e, t);\n      });\n    });\n  }\n  function AsyncIterator(t, e) {\n    function invoke(r, o, i, a) {\n      var c = tryCatch(t[r], t, o);\n      if (\"throw\" !== c.type) {\n        var u = c.arg,\n          h = u.value;\n        return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n          invoke(\"next\", t, i, a);\n        }, function (t) {\n          invoke(\"throw\", t, i, a);\n        }) : e.resolve(h).then(function (t) {\n          u.value = t, i(u);\n        }, function (t) {\n          return invoke(\"throw\", t, i, a);\n        });\n      }\n      a(c.arg);\n    }\n    var r;\n    o(this, \"_invoke\", {\n      value: function value(t, n) {\n        function callInvokeWithMethodAndArg() {\n          return new e(function (e, r) {\n            invoke(t, n, e, r);\n          });\n        }\n        return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n      }\n    });\n  }\n  function makeInvokeMethod(e, r, n) {\n    var o = h;\n    return function (i, a) {\n      if (o === f) throw Error(\"Generator is already running\");\n      if (o === s) {\n        if (\"throw\" === i) throw a;\n        return {\n          value: t,\n          done: !0\n        };\n      }\n      for (n.method = i, n.arg = a;;) {\n        var c = n.delegate;\n        if (c) {\n          var u = maybeInvokeDelegate(c, n);\n          if (u) {\n            if (u === y) continue;\n            return u;\n          }\n        }\n        if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n          if (o === h) throw o = s, n.arg;\n          n.dispatchException(n.arg);\n        } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n        o = f;\n        var p = tryCatch(e, r, n);\n        if (\"normal\" === p.type) {\n          if (o = n.done ? s : l, p.arg === y) continue;\n          return {\n            value: p.arg,\n            done: n.done\n          };\n        }\n        \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n      }\n    };\n  }\n  function maybeInvokeDelegate(e, r) {\n    var n = r.method,\n      o = e.iterator[n];\n    if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n    var i = tryCatch(o, e.iterator, r.arg);\n    if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n    var a = i.arg;\n    return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n  }\n  function pushTryEntry(t) {\n    var e = {\n      tryLoc: t[0]\n    };\n    1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n  }\n  function resetTryEntry(t) {\n    var e = t.completion || {};\n    e.type = \"normal\", delete e.arg, t.completion = e;\n  }\n  function Context(t) {\n    this.tryEntries = [{\n      tryLoc: \"root\"\n    }], t.forEach(pushTryEntry, this), this.reset(!0);\n  }\n  function values(e) {\n    if (e || \"\" === e) {\n      var r = e[a];\n      if (r) return r.call(e);\n      if (\"function\" == typeof e.next) return e;\n      if (!isNaN(e.length)) {\n        var o = -1,\n          i = function next() {\n            for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n            return next.value = t, next.done = !0, next;\n          };\n        return i.next = i;\n      }\n    }\n    throw new TypeError(_typeof(e) + \" is not iterable\");\n  }\n  return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n    value: GeneratorFunctionPrototype,\n    configurable: !0\n  }), o(GeneratorFunctionPrototype, \"constructor\", {\n    value: GeneratorFunction,\n    configurable: !0\n  }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n    var e = \"function\" == typeof t && t.constructor;\n    return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n  }, e.mark = function (t) {\n    return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n  }, e.awrap = function (t) {\n    return {\n      __await: t\n    };\n  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n    return this;\n  }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n    void 0 === i && (i = Promise);\n    var a = new AsyncIterator(wrap(t, r, n, o), i);\n    return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n      return t.done ? t.value : a.next();\n    });\n  }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n    return this;\n  }), define(g, \"toString\", function () {\n    return \"[object Generator]\";\n  }), e.keys = function (t) {\n    var e = Object(t),\n      r = [];\n    for (var n in e) r.push(n);\n    return r.reverse(), function next() {\n      for (; r.length;) {\n        var t = r.pop();\n        if (t in e) return next.value = t, next.done = !1, next;\n      }\n      return next.done = !0, next;\n    };\n  }, e.values = values, Context.prototype = {\n    constructor: Context,\n    reset: function reset(e) {\n      if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n    },\n    stop: function stop() {\n      this.done = !0;\n      var t = this.tryEntries[0].completion;\n      if (\"throw\" === t.type) throw t.arg;\n      return this.rval;\n    },\n    dispatchException: function dispatchException(e) {\n      if (this.done) throw e;\n      var r = this;\n      function handle(n, o) {\n        return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n      }\n      for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n        var i = this.tryEntries[o],\n          a = i.completion;\n        if (\"root\" === i.tryLoc) return handle(\"end\");\n        if (i.tryLoc <= this.prev) {\n          var c = n.call(i, \"catchLoc\"),\n            u = n.call(i, \"finallyLoc\");\n          if (c && u) {\n            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n          } else if (c) {\n            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n          } else {\n            if (!u) throw Error(\"try statement without catch or finally\");\n            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n          }\n        }\n      }\n    },\n    abrupt: function abrupt(t, e) {\n      for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n        var o = this.tryEntries[r];\n        if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n          var i = o;\n          break;\n        }\n      }\n      i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n      var a = i ? i.completion : {};\n      return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n    },\n    complete: function complete(t, e) {\n      if (\"throw\" === t.type) throw t.arg;\n      return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n    },\n    finish: function finish(t) {\n      for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n        var r = this.tryEntries[e];\n        if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n      }\n    },\n    \"catch\": function _catch(t) {\n      for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n        var r = this.tryEntries[e];\n        if (r.tryLoc === t) {\n          var n = r.completion;\n          if (\"throw\" === n.type) {\n            var o = n.arg;\n            resetTryEntry(r);\n          }\n          return o;\n        }\n      }\n      throw Error(\"illegal catch attempt\");\n    },\n    delegateYield: function delegateYield(e, r, n) {\n      return this.delegate = {\n        iterator: values(e),\n        resultName: r,\n        nextLoc: n\n      }, \"next\" === this.method && (this.arg = t), y;\n    }\n  }, e;\n}\nexport { _regeneratorRuntime as default };","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n  try {\n    var i = n[a](c),\n      u = i.value;\n  } catch (n) {\n    return void e(n);\n  }\n  i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n  return function () {\n    var t = this,\n      e = arguments;\n    return new Promise(function (r, o) {\n      var a = n.apply(t, e);\n      function _next(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n      }\n      function _throw(n) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n      }\n      _next(void 0);\n    });\n  };\n}\nexport { _asyncToGenerator as default };","import _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEffect, useRef } from 'react';\nimport raf from \"rc-util/es/raf\";\nimport useState from \"rc-util/es/hooks/useState\";\n/**\n * Popup should follow the steps for each component work correctly:\n * measure - check for the current stretch size\n * align - let component align the position\n * aligned - re-align again in case additional className changed the size\n * afterAlign - choice next step is trigger motion or finished\n * beforeMotion - should reset motion to invisible so that CSSMotion can do normal motion\n * motion - play the motion\n * stable - everything is done\n */\n\nvar StatusQueue = ['measure', 'alignPre', 'align', null, 'motion'];\nexport default (function (visible, doMeasure) {\n  var _useState = useState(null),\n      _useState2 = _slicedToArray(_useState, 2),\n      status = _useState2[0],\n      setInternalStatus = _useState2[1];\n\n  var rafRef = useRef();\n\n  function setStatus(nextStatus) {\n    setInternalStatus(nextStatus, true);\n  }\n\n  function cancelRaf() {\n    raf.cancel(rafRef.current);\n  }\n\n  function goNextStatus(callback) {\n    cancelRaf();\n    rafRef.current = raf(function () {\n      // Only align should be manually trigger\n      setStatus(function (prev) {\n        switch (status) {\n          case 'align':\n            return 'motion';\n\n          case 'motion':\n            return 'stable';\n\n          default:\n        }\n\n        return prev;\n      });\n      callback === null || callback === void 0 ? void 0 : callback();\n    });\n  } // Init status\n\n\n  useEffect(function () {\n    setStatus('measure');\n  }, [visible]); // Go next status\n\n  useEffect(function () {\n    switch (status) {\n      case 'measure':\n        doMeasure();\n        break;\n\n      default:\n    }\n\n    if (status) {\n      rafRef.current = raf( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n        var index, nextStatus;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                index = StatusQueue.indexOf(status);\n                nextStatus = StatusQueue[index + 1];\n\n                if (nextStatus && index !== -1) {\n                  setStatus(nextStatus);\n                }\n\n              case 3:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee);\n      })));\n    }\n  }, [status]);\n  useEffect(function () {\n    return function () {\n      cancelRaf();\n    };\n  }, []);\n  return [status, goNextStatus];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport Align from 'rc-align';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nimport useVisibleStatus from \"./useVisibleStatus\";\nimport { getMotion } from \"../utils/legacyUtil\";\nimport useStretchStyle from \"./useStretchStyle\";\nvar PopupInner = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var visible = props.visible,\n      prefixCls = props.prefixCls,\n      className = props.className,\n      style = props.style,\n      children = props.children,\n      zIndex = props.zIndex,\n      stretch = props.stretch,\n      destroyPopupOnHide = props.destroyPopupOnHide,\n      forceRender = props.forceRender,\n      align = props.align,\n      point = props.point,\n      getRootDomNode = props.getRootDomNode,\n      getClassNameFromAlign = props.getClassNameFromAlign,\n      onAlign = props.onAlign,\n      onMouseEnter = props.onMouseEnter,\n      onMouseLeave = props.onMouseLeave,\n      onMouseDown = props.onMouseDown,\n      onTouchStart = props.onTouchStart,\n      onClick = props.onClick;\n  var alignRef = useRef();\n  var elementRef = useRef();\n\n  var _useState = useState(),\n      _useState2 = _slicedToArray(_useState, 2),\n      alignedClassName = _useState2[0],\n      setAlignedClassName = _useState2[1]; // ======================= Measure ========================\n\n\n  var _useStretchStyle = useStretchStyle(stretch),\n      _useStretchStyle2 = _slicedToArray(_useStretchStyle, 2),\n      stretchStyle = _useStretchStyle2[0],\n      measureStretchStyle = _useStretchStyle2[1];\n\n  function doMeasure() {\n    if (stretch) {\n      measureStretchStyle(getRootDomNode());\n    }\n  } // ======================== Status ========================\n\n\n  var _useVisibleStatus = useVisibleStatus(visible, doMeasure),\n      _useVisibleStatus2 = _slicedToArray(_useVisibleStatus, 2),\n      status = _useVisibleStatus2[0],\n      goNextStatus = _useVisibleStatus2[1]; // ======================== Aligns ========================\n\n  /**\n   * `alignedClassName` may modify `source` size,\n   * which means one time align may not move to the correct position at once.\n   *\n   * We will reset `alignTimes` for each status switch to `alignPre`\n   * and let `rc-align` to align for multiple times to ensure get final stable place.\n   * Currently we mark `alignTimes < 2` repeat align, it will increase if user report for align issue.\n   * \n   * Update:\n   * In React 18. `rc-align` effect of align may faster than ref called trigger `forceAlign`.\n   * We adjust this to `alignTimes < 2`.\n   * We need refactor `rc-align` to support mark of `forceAlign` call if this still happen.\n   */\n\n\n  var _useState3 = useState(0),\n      _useState4 = _slicedToArray(_useState3, 2),\n      alignTimes = _useState4[0],\n      setAlignTimes = _useState4[1];\n\n  var prepareResolveRef = useRef();\n  useLayoutEffect(function () {\n    if (status === 'alignPre') {\n      setAlignTimes(0);\n    }\n  }, [status]); // `target` on `rc-align` can accept as a function to get the bind element or a point.\n  // ref: https://www.npmjs.com/package/rc-align\n\n  function getAlignTarget() {\n    if (point) {\n      return point;\n    }\n\n    return getRootDomNode;\n  }\n\n  function forceAlign() {\n    var _alignRef$current;\n\n    (_alignRef$current = alignRef.current) === null || _alignRef$current === void 0 ? void 0 : _alignRef$current.forceAlign();\n  }\n\n  function onInternalAlign(popupDomNode, matchAlign) {\n    var nextAlignedClassName = getClassNameFromAlign(matchAlign);\n\n    if (alignedClassName !== nextAlignedClassName) {\n      setAlignedClassName(nextAlignedClassName);\n    } // We will retry multi times to make sure that the element has been align in the right position.\n\n\n    setAlignTimes(function (val) {\n      return val + 1;\n    });\n\n    if (status === 'align') {\n      onAlign === null || onAlign === void 0 ? void 0 : onAlign(popupDomNode, matchAlign);\n    }\n  } // Delay to go to next status\n\n\n  useLayoutEffect(function () {\n    if (status === 'align') {\n      // Repeat until not more align needed\n      if (alignTimes < 3) {\n        forceAlign();\n      } else {\n        goNextStatus(function () {\n          var _prepareResolveRef$cu;\n\n          (_prepareResolveRef$cu = prepareResolveRef.current) === null || _prepareResolveRef$cu === void 0 ? void 0 : _prepareResolveRef$cu.call(prepareResolveRef);\n        });\n      }\n    }\n  }, [alignTimes]); // ======================== Motion ========================\n\n  var motion = _objectSpread({}, getMotion(props));\n\n  ['onAppearEnd', 'onEnterEnd', 'onLeaveEnd'].forEach(function (eventName) {\n    var originHandler = motion[eventName];\n\n    motion[eventName] = function (element, event) {\n      goNextStatus();\n      return originHandler === null || originHandler === void 0 ? void 0 : originHandler(element, event);\n    };\n  });\n\n  function onShowPrepare() {\n    return new Promise(function (resolve) {\n      prepareResolveRef.current = resolve;\n    });\n  } // Go to stable directly when motion not provided\n\n\n  React.useEffect(function () {\n    if (!motion.motionName && status === 'motion') {\n      goNextStatus();\n    }\n  }, [motion.motionName, status]); // ========================= Refs =========================\n\n  React.useImperativeHandle(ref, function () {\n    return {\n      forceAlign: forceAlign,\n      getElement: function getElement() {\n        return elementRef.current;\n      }\n    };\n  }); // ======================== Render ========================\n\n  var mergedStyle = _objectSpread(_objectSpread({}, stretchStyle), {}, {\n    zIndex: zIndex,\n    opacity: status === 'motion' || status === 'stable' || !visible ? undefined : 0,\n    // Cannot interact with disappearing elements\n    // https://github.com/ant-design/ant-design/issues/35051#issuecomment-1101340714\n    pointerEvents: !visible && status !== 'stable' ? 'none' : undefined\n  }, style); // Align status\n\n\n  var alignDisabled = true;\n\n  if (align !== null && align !== void 0 && align.points && (status === 'align' || status === 'stable')) {\n    alignDisabled = false;\n  }\n\n  var childNode = children; // Wrapper when multiple children\n\n  if (React.Children.count(children) > 1) {\n    childNode = /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(prefixCls, \"-content\")\n    }, children);\n  }\n\n  return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n    visible: visible,\n    ref: elementRef,\n    leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n  }, motion, {\n    onAppearPrepare: onShowPrepare,\n    onEnterPrepare: onShowPrepare,\n    removeOnLeave: destroyPopupOnHide,\n    forceRender: forceRender\n  }), function (_ref, motionRef) {\n    var motionClassName = _ref.className,\n        motionStyle = _ref.style;\n    var mergedClassName = classNames(prefixCls, className, alignedClassName, motionClassName);\n    return /*#__PURE__*/React.createElement(Align, {\n      target: getAlignTarget(),\n      key: \"popup\",\n      ref: alignRef,\n      monitorWindowResize: true,\n      disabled: alignDisabled,\n      align: align,\n      onAlign: onInternalAlign\n    }, /*#__PURE__*/React.createElement(\"div\", {\n      ref: motionRef,\n      className: mergedClassName,\n      onMouseEnter: onMouseEnter,\n      onMouseLeave: onMouseLeave,\n      onMouseDownCapture: onMouseDown,\n      onTouchStartCapture: onTouchStart,\n      onClick: onClick,\n      style: _objectSpread(_objectSpread({}, motionStyle), mergedStyle)\n    }, childNode));\n  });\n});\nPopupInner.displayName = 'PopupInner';\nexport default PopupInner;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default (function (stretch) {\n  var _React$useState = React.useState({\n    width: 0,\n    height: 0\n  }),\n      _React$useState2 = _slicedToArray(_React$useState, 2),\n      targetSize = _React$useState2[0],\n      setTargetSize = _React$useState2[1];\n\n  function measureStretch(element) {\n    var tgtWidth = element.offsetWidth,\n        tgtHeight = element.offsetHeight;\n\n    var _element$getBoundingC = element.getBoundingClientRect(),\n        width = _element$getBoundingC.width,\n        height = _element$getBoundingC.height; // Rect is more accurate than offset, use if near\n\n\n    if (Math.abs(tgtWidth - width) < 1 && Math.abs(tgtHeight - height) < 1) {\n      tgtWidth = width;\n      tgtHeight = height;\n    }\n\n    setTargetSize({\n      width: tgtWidth,\n      height: tgtHeight\n    });\n  } // Merge stretch style\n\n\n  var style = React.useMemo(function () {\n    var sizeStyle = {};\n\n    if (stretch) {\n      var width = targetSize.width,\n          height = targetSize.height; // Stretch with target\n\n      if (stretch.indexOf('height') !== -1 && height) {\n        sizeStyle.height = height;\n      } else if (stretch.indexOf('minHeight') !== -1 && height) {\n        sizeStyle.minHeight = height;\n      }\n\n      if (stretch.indexOf('width') !== -1 && width) {\n        sizeStyle.width = width;\n      } else if (stretch.indexOf('minWidth') !== -1 && width) {\n        sizeStyle.minWidth = width;\n      }\n    }\n\n    return sizeStyle;\n  }, [stretch, targetSize]);\n  return [style, measureStretch];\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport CSSMotion from 'rc-motion';\nimport classNames from 'classnames';\nvar MobilePopupInner = /*#__PURE__*/React.forwardRef(function (props, ref) {\n  var prefixCls = props.prefixCls,\n      visible = props.visible,\n      zIndex = props.zIndex,\n      children = props.children,\n      _props$mobile = props.mobile;\n  _props$mobile = _props$mobile === void 0 ? {} : _props$mobile;\n  var popupClassName = _props$mobile.popupClassName,\n      popupStyle = _props$mobile.popupStyle,\n      _props$mobile$popupMo = _props$mobile.popupMotion,\n      popupMotion = _props$mobile$popupMo === void 0 ? {} : _props$mobile$popupMo,\n      popupRender = _props$mobile.popupRender,\n      onClick = props.onClick;\n  var elementRef = React.useRef(); // ========================= Refs =========================\n\n  React.useImperativeHandle(ref, function () {\n    return {\n      forceAlign: function forceAlign() {},\n      getElement: function getElement() {\n        return elementRef.current;\n      }\n    };\n  }); // ======================== Render ========================\n\n  var mergedStyle = _objectSpread({\n    zIndex: zIndex\n  }, popupStyle);\n\n  var childNode = children; // Wrapper when multiple children\n\n  if (React.Children.count(children) > 1) {\n    childNode = /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(prefixCls, \"-content\")\n    }, children);\n  } // Mobile support additional render\n\n\n  if (popupRender) {\n    childNode = popupRender(childNode);\n  }\n\n  return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n    visible: visible,\n    ref: elementRef,\n    removeOnLeave: true\n  }, popupMotion), function (_ref, motionRef) {\n    var motionClassName = _ref.className,\n        motionStyle = _ref.style;\n    var mergedClassName = classNames(prefixCls, popupClassName, motionClassName);\n    return /*#__PURE__*/React.createElement(\"div\", {\n      ref: motionRef,\n      className: mergedClassName,\n      onClick: onClick,\n      style: _objectSpread(_objectSpread({}, motionStyle), mergedStyle)\n    }, childNode);\n  });\n});\nMobilePopupInner.displayName = 'MobilePopupInner';\nexport default MobilePopupInner;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"visible\", \"mobile\"];\nimport * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport isMobile from \"rc-util/es/isMobile\";\nimport Mask from \"./Mask\";\nimport PopupInner from \"./PopupInner\";\nimport MobilePopupInner from \"./MobilePopupInner\";\nvar Popup = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n  var visible = _ref.visible,\n      mobile = _ref.mobile,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  var _useState = useState(visible),\n      _useState2 = _slicedToArray(_useState, 2),\n      innerVisible = _useState2[0],\n      serInnerVisible = _useState2[1];\n\n  var _useState3 = useState(false),\n      _useState4 = _slicedToArray(_useState3, 2),\n      inMobile = _useState4[0],\n      setInMobile = _useState4[1];\n\n  var cloneProps = _objectSpread(_objectSpread({}, props), {}, {\n    visible: innerVisible\n  }); // We check mobile in visible changed here.\n  // And this also delay set `innerVisible` to avoid popup component render flash\n\n\n  useEffect(function () {\n    serInnerVisible(visible);\n\n    if (visible && mobile) {\n      setInMobile(isMobile());\n    }\n  }, [visible, mobile]);\n  var popupNode = inMobile ? /*#__PURE__*/React.createElement(MobilePopupInner, _extends({}, cloneProps, {\n    mobile: mobile,\n    ref: ref\n  })) : /*#__PURE__*/React.createElement(PopupInner, _extends({}, cloneProps, {\n    ref: ref\n  })); // We can use fragment directly but this may failed some selector usage. Keep as origin logic\n\n  return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Mask, cloneProps), popupNode);\n});\nPopup.displayName = 'Popup';\nexport default Popup;","export default (function () {\n  if (typeof navigator === 'undefined' || typeof window === 'undefined') {\n    return false;\n  }\n  var agent = navigator.userAgent || navigator.vendor || window.opera;\n  return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));\n});","import * as React from 'react';\nvar TriggerContext = /*#__PURE__*/React.createContext(null);\nexport default TriggerContext;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport raf from \"rc-util/es/raf\";\nimport contains from \"rc-util/es/Dom/contains\";\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { composeRef, supportRef } from \"rc-util/es/ref\";\nimport addEventListener from \"rc-util/es/Dom/addEventListener\";\nimport Portal from \"rc-util/es/Portal\";\nimport classNames from 'classnames';\nimport { getAlignFromPlacement, getAlignPopupClassName } from \"./utils/alignUtil\";\nimport Popup from \"./Popup\";\nimport TriggerContext from \"./context\";\n\nfunction noop() {}\n\nfunction returnEmptyString() {\n  return '';\n}\n\nfunction returnDocument(element) {\n  if (element) {\n    return element.ownerDocument;\n  }\n\n  return window.document;\n}\n\nvar ALL_HANDLERS = ['onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur', 'onContextMenu'];\n\n/**\n * Internal usage. Do not use in your code since this will be removed.\n */\nexport function generateTrigger(PortalComponent) {\n  var Trigger = /*#__PURE__*/function (_React$Component) {\n    _inherits(Trigger, _React$Component);\n\n    var _super = _createSuper(Trigger);\n\n    // ensure `getContainer` will be called only once\n    function Trigger(props) {\n      var _this;\n\n      _classCallCheck(this, Trigger);\n\n      _this = _super.call(this, props);\n\n      _defineProperty(_assertThisInitialized(_this), \"popupRef\", /*#__PURE__*/React.createRef());\n\n      _defineProperty(_assertThisInitialized(_this), \"triggerRef\", /*#__PURE__*/React.createRef());\n\n      _defineProperty(_assertThisInitialized(_this), \"portalContainer\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"attachId\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"clickOutsideHandler\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"touchOutsideHandler\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"contextMenuOutsideHandler1\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"contextMenuOutsideHandler2\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"mouseDownTimeout\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"focusTime\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"preClickTime\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"preTouchTime\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"delayTimer\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"hasPopupMouseDown\", void 0);\n\n      _defineProperty(_assertThisInitialized(_this), \"onMouseEnter\", function (e) {\n        var mouseEnterDelay = _this.props.mouseEnterDelay;\n\n        _this.fireEvents('onMouseEnter', e);\n\n        _this.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e);\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onMouseMove\", function (e) {\n        _this.fireEvents('onMouseMove', e);\n\n        _this.setPoint(e);\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function (e) {\n        _this.fireEvents('onMouseLeave', e);\n\n        _this.delaySetPopupVisible(false, _this.props.mouseLeaveDelay);\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onPopupMouseEnter\", function () {\n        _this.clearDelayTimer();\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onPopupMouseLeave\", function (e) {\n        var _this$popupRef$curren;\n\n        // https://github.com/react-component/trigger/pull/13\n        // react bug?\n        if (e.relatedTarget && !e.relatedTarget.setTimeout && contains((_this$popupRef$curren = _this.popupRef.current) === null || _this$popupRef$curren === void 0 ? void 0 : _this$popupRef$curren.getElement(), e.relatedTarget)) {\n          return;\n        }\n\n        _this.delaySetPopupVisible(false, _this.props.mouseLeaveDelay);\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onFocus\", function (e) {\n        _this.fireEvents('onFocus', e); // incase focusin and focusout\n\n\n        _this.clearDelayTimer();\n\n        if (_this.isFocusToShow()) {\n          _this.focusTime = Date.now();\n\n          _this.delaySetPopupVisible(true, _this.props.focusDelay);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (e) {\n        _this.fireEvents('onMouseDown', e);\n\n        _this.preClickTime = Date.now();\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onTouchStart\", function (e) {\n        _this.fireEvents('onTouchStart', e);\n\n        _this.preTouchTime = Date.now();\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onBlur\", function (e) {\n        _this.fireEvents('onBlur', e);\n\n        _this.clearDelayTimer();\n\n        if (_this.isBlurToHide()) {\n          _this.delaySetPopupVisible(false, _this.props.blurDelay);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onContextMenu\", function (e) {\n        e.preventDefault();\n\n        _this.fireEvents('onContextMenu', e);\n\n        _this.setPopupVisible(true, e);\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onContextMenuClose\", function () {\n        if (_this.isContextMenuToShow()) {\n          _this.close();\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n        _this.fireEvents('onClick', event); // focus will trigger click\n\n\n        if (_this.focusTime) {\n          var preTime;\n\n          if (_this.preClickTime && _this.preTouchTime) {\n            preTime = Math.min(_this.preClickTime, _this.preTouchTime);\n          } else if (_this.preClickTime) {\n            preTime = _this.preClickTime;\n          } else if (_this.preTouchTime) {\n            preTime = _this.preTouchTime;\n          }\n\n          if (Math.abs(preTime - _this.focusTime) < 20) {\n            return;\n          }\n\n          _this.focusTime = 0;\n        }\n\n        _this.preClickTime = 0;\n        _this.preTouchTime = 0; // Only prevent default when all the action is click.\n        // https://github.com/ant-design/ant-design/issues/17043\n        // https://github.com/ant-design/ant-design/issues/17291\n\n        if (_this.isClickToShow() && (_this.isClickToHide() || _this.isBlurToHide()) && event && event.preventDefault) {\n          event.preventDefault();\n        }\n\n        var nextVisible = !_this.state.popupVisible;\n\n        if (_this.isClickToHide() && !nextVisible || nextVisible && _this.isClickToShow()) {\n          _this.setPopupVisible(!_this.state.popupVisible, event);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onPopupMouseDown\", function () {\n        _this.hasPopupMouseDown = true;\n        clearTimeout(_this.mouseDownTimeout);\n        _this.mouseDownTimeout = window.setTimeout(function () {\n          _this.hasPopupMouseDown = false;\n        }, 0);\n\n        if (_this.context) {\n          var _this$context;\n\n          (_this$context = _this.context).onPopupMouseDown.apply(_this$context, arguments);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"onDocumentClick\", function (event) {\n        if (_this.props.mask && !_this.props.maskClosable) {\n          return;\n        }\n\n        var target = event.target;\n\n        var root = _this.getRootDomNode();\n\n        var popupNode = _this.getPopupDomNode();\n\n        if ( // mousedown on the target should also close popup when action is contextMenu.\n        // https://github.com/ant-design/ant-design/issues/29853\n        (!contains(root, target) || _this.isContextMenuOnly()) && !contains(popupNode, target) && !_this.hasPopupMouseDown) {\n          _this.close();\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"getRootDomNode\", function () {\n        var getTriggerDOMNode = _this.props.getTriggerDOMNode;\n\n        if (getTriggerDOMNode) {\n          return getTriggerDOMNode(_this.triggerRef.current);\n        }\n\n        try {\n          var domNode = findDOMNode(_this.triggerRef.current);\n\n          if (domNode) {\n            return domNode;\n          }\n        } catch (err) {// Do nothing\n        }\n\n        return ReactDOM.findDOMNode(_assertThisInitialized(_this));\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"getPopupClassNameFromAlign\", function (align) {\n        var className = [];\n        var _this$props = _this.props,\n            popupPlacement = _this$props.popupPlacement,\n            builtinPlacements = _this$props.builtinPlacements,\n            prefixCls = _this$props.prefixCls,\n            alignPoint = _this$props.alignPoint,\n            getPopupClassNameFromAlign = _this$props.getPopupClassNameFromAlign;\n\n        if (popupPlacement && builtinPlacements) {\n          className.push(getAlignPopupClassName(builtinPlacements, prefixCls, align, alignPoint));\n        }\n\n        if (getPopupClassNameFromAlign) {\n          className.push(getPopupClassNameFromAlign(align));\n        }\n\n        return className.join(' ');\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"getComponent\", function () {\n        var _this$props2 = _this.props,\n            prefixCls = _this$props2.prefixCls,\n            destroyPopupOnHide = _this$props2.destroyPopupOnHide,\n            popupClassName = _this$props2.popupClassName,\n            onPopupAlign = _this$props2.onPopupAlign,\n            popupMotion = _this$props2.popupMotion,\n            popupAnimation = _this$props2.popupAnimation,\n            popupTransitionName = _this$props2.popupTransitionName,\n            popupStyle = _this$props2.popupStyle,\n            mask = _this$props2.mask,\n            maskAnimation = _this$props2.maskAnimation,\n            maskTransitionName = _this$props2.maskTransitionName,\n            maskMotion = _this$props2.maskMotion,\n            zIndex = _this$props2.zIndex,\n            popup = _this$props2.popup,\n            stretch = _this$props2.stretch,\n            alignPoint = _this$props2.alignPoint,\n            mobile = _this$props2.mobile,\n            forceRender = _this$props2.forceRender,\n            onPopupClick = _this$props2.onPopupClick;\n        var _this$state = _this.state,\n            popupVisible = _this$state.popupVisible,\n            point = _this$state.point;\n\n        var align = _this.getPopupAlign();\n\n        var mouseProps = {};\n\n        if (_this.isMouseEnterToShow()) {\n          mouseProps.onMouseEnter = _this.onPopupMouseEnter;\n        }\n\n        if (_this.isMouseLeaveToHide()) {\n          mouseProps.onMouseLeave = _this.onPopupMouseLeave;\n        }\n\n        mouseProps.onMouseDown = _this.onPopupMouseDown;\n        mouseProps.onTouchStart = _this.onPopupMouseDown;\n        return /*#__PURE__*/React.createElement(Popup, _extends({\n          prefixCls: prefixCls,\n          destroyPopupOnHide: destroyPopupOnHide,\n          visible: popupVisible,\n          point: alignPoint && point,\n          className: popupClassName,\n          align: align,\n          onAlign: onPopupAlign,\n          animation: popupAnimation,\n          getClassNameFromAlign: _this.getPopupClassNameFromAlign\n        }, mouseProps, {\n          stretch: stretch,\n          getRootDomNode: _this.getRootDomNode,\n          style: popupStyle,\n          mask: mask,\n          zIndex: zIndex,\n          transitionName: popupTransitionName,\n          maskAnimation: maskAnimation,\n          maskTransitionName: maskTransitionName,\n          maskMotion: maskMotion,\n          ref: _this.popupRef,\n          motion: popupMotion,\n          mobile: mobile,\n          forceRender: forceRender,\n          onClick: onPopupClick\n        }), typeof popup === 'function' ? popup() : popup);\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"attachParent\", function (popupContainer) {\n        raf.cancel(_this.attachId);\n        var _this$props3 = _this.props,\n            getPopupContainer = _this$props3.getPopupContainer,\n            getDocument = _this$props3.getDocument;\n\n        var domNode = _this.getRootDomNode();\n\n        var mountNode;\n\n        if (!getPopupContainer) {\n          mountNode = getDocument(_this.getRootDomNode()).body;\n        } else if (domNode || getPopupContainer.length === 0) {\n          // Compatible for legacy getPopupContainer with domNode argument.\n          // If no need `domNode` argument, will call directly.\n          // https://codesandbox.io/s/eloquent-mclean-ss93m?file=/src/App.js\n          mountNode = getPopupContainer(domNode);\n        }\n\n        if (mountNode) {\n          mountNode.appendChild(popupContainer);\n        } else {\n          // Retry after frame render in case parent not ready\n          _this.attachId = raf(function () {\n            _this.attachParent(popupContainer);\n          });\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"getContainer\", function () {\n        if (!_this.portalContainer) {\n          // In React.StrictMode component will call render multiple time in first mount.\n          // When you want to refactor with FC, useRef will also init multiple time and\n          // point to different useRef instance which will create multiple element\n          // (This multiple render will not trigger effect so you can not clean up this\n          // in effect). But this is safe with class component since it always point to same class instance.\n          var getDocument = _this.props.getDocument;\n          var popupContainer = getDocument(_this.getRootDomNode()).createElement('div'); // Make sure default popup container will never cause scrollbar appearing\n          // https://github.com/react-component/trigger/issues/41\n\n          popupContainer.style.position = 'absolute';\n          popupContainer.style.top = '0';\n          popupContainer.style.left = '0';\n          popupContainer.style.width = '100%';\n          _this.portalContainer = popupContainer;\n        }\n\n        _this.attachParent(_this.portalContainer);\n\n        return _this.portalContainer;\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"setPoint\", function (point) {\n        var alignPoint = _this.props.alignPoint;\n        if (!alignPoint || !point) return;\n\n        _this.setState({\n          point: {\n            pageX: point.pageX,\n            pageY: point.pageY\n          }\n        });\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"handlePortalUpdate\", function () {\n        if (_this.state.prevPopupVisible !== _this.state.popupVisible) {\n          _this.props.afterPopupVisibleChange(_this.state.popupVisible);\n        }\n      });\n\n      _defineProperty(_assertThisInitialized(_this), \"triggerContextValue\", {\n        onPopupMouseDown: _this.onPopupMouseDown\n      });\n\n      var _popupVisible;\n\n      if ('popupVisible' in props) {\n        _popupVisible = !!props.popupVisible;\n      } else {\n        _popupVisible = !!props.defaultPopupVisible;\n      }\n\n      _this.state = {\n        prevPopupVisible: _popupVisible,\n        popupVisible: _popupVisible\n      };\n      ALL_HANDLERS.forEach(function (h) {\n        _this[\"fire\".concat(h)] = function (e) {\n          _this.fireEvents(h, e);\n        };\n      });\n      return _this;\n    }\n\n    _createClass(Trigger, [{\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        this.componentDidUpdate();\n      }\n    }, {\n      key: \"componentDidUpdate\",\n      value: function componentDidUpdate() {\n        var props = this.props;\n        var state = this.state; // We must listen to `mousedown` or `touchstart`, edge case:\n        // https://github.com/ant-design/ant-design/issues/5804\n        // https://github.com/react-component/calendar/issues/250\n        // https://github.com/react-component/trigger/issues/50\n\n        if (state.popupVisible) {\n          var currentDocument;\n\n          if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextMenuToShow())) {\n            currentDocument = props.getDocument(this.getRootDomNode());\n            this.clickOutsideHandler = addEventListener(currentDocument, 'mousedown', this.onDocumentClick);\n          } // always hide on mobile\n\n\n          if (!this.touchOutsideHandler) {\n            currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n            this.touchOutsideHandler = addEventListener(currentDocument, 'touchstart', this.onDocumentClick);\n          } // close popup when trigger type contains 'onContextMenu' and document is scrolling.\n\n\n          if (!this.contextMenuOutsideHandler1 && this.isContextMenuToShow()) {\n            currentDocument = currentDocument || props.getDocument(this.getRootDomNode());\n            this.contextMenuOutsideHandler1 = addEventListener(currentDocument, 'scroll', this.onContextMenuClose);\n          } // close popup when trigger type contains 'onContextMenu' and window is blur.\n\n\n          if (!this.contextMenuOutsideHandler2 && this.isContextMenuToShow()) {\n            this.contextMenuOutsideHandler2 = addEventListener(window, 'blur', this.onContextMenuClose);\n          }\n\n          return;\n        }\n\n        this.clearOutsideHandler();\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        this.clearDelayTimer();\n        this.clearOutsideHandler();\n        clearTimeout(this.mouseDownTimeout);\n        raf.cancel(this.attachId);\n      }\n    }, {\n      key: \"getPopupDomNode\",\n      value: function getPopupDomNode() {\n        var _this$popupRef$curren2;\n\n        // for test\n        return ((_this$popupRef$curren2 = this.popupRef.current) === null || _this$popupRef$curren2 === void 0 ? void 0 : _this$popupRef$curren2.getElement()) || null;\n      }\n    }, {\n      key: \"getPopupAlign\",\n      value: function getPopupAlign() {\n        var props = this.props;\n        var popupPlacement = props.popupPlacement,\n            popupAlign = props.popupAlign,\n            builtinPlacements = props.builtinPlacements;\n\n        if (popupPlacement && builtinPlacements) {\n          return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n        }\n\n        return popupAlign;\n      }\n    }, {\n      key: \"setPopupVisible\",\n      value:\n      /**\n       * @param popupVisible    Show or not the popup element\n       * @param event           SyntheticEvent, used for `pointAlign`\n       */\n      function setPopupVisible(popupVisible, event) {\n        var alignPoint = this.props.alignPoint;\n        var prevPopupVisible = this.state.popupVisible;\n        this.clearDelayTimer();\n\n        if (prevPopupVisible !== popupVisible) {\n          if (!('popupVisible' in this.props)) {\n            this.setState({\n              popupVisible: popupVisible,\n              prevPopupVisible: prevPopupVisible\n            });\n          }\n\n          this.props.onPopupVisibleChange(popupVisible);\n        } // Always record the point position since mouseEnterDelay will delay the show\n\n\n        if (alignPoint && event && popupVisible) {\n          this.setPoint(event);\n        }\n      }\n    }, {\n      key: \"delaySetPopupVisible\",\n      value: function delaySetPopupVisible(visible, delayS, event) {\n        var _this2 = this;\n\n        var delay = delayS * 1000;\n        this.clearDelayTimer();\n\n        if (delay) {\n          var point = event ? {\n            pageX: event.pageX,\n            pageY: event.pageY\n          } : null;\n          this.delayTimer = window.setTimeout(function () {\n            _this2.setPopupVisible(visible, point);\n\n            _this2.clearDelayTimer();\n          }, delay);\n        } else {\n          this.setPopupVisible(visible, event);\n        }\n      }\n    }, {\n      key: \"clearDelayTimer\",\n      value: function clearDelayTimer() {\n        if (this.delayTimer) {\n          clearTimeout(this.delayTimer);\n          this.delayTimer = null;\n        }\n      }\n    }, {\n      key: \"clearOutsideHandler\",\n      value: function clearOutsideHandler() {\n        if (this.clickOutsideHandler) {\n          this.clickOutsideHandler.remove();\n          this.clickOutsideHandler = null;\n        }\n\n        if (this.contextMenuOutsideHandler1) {\n          this.contextMenuOutsideHandler1.remove();\n          this.contextMenuOutsideHandler1 = null;\n        }\n\n        if (this.contextMenuOutsideHandler2) {\n          this.contextMenuOutsideHandler2.remove();\n          this.contextMenuOutsideHandler2 = null;\n        }\n\n        if (this.touchOutsideHandler) {\n          this.touchOutsideHandler.remove();\n          this.touchOutsideHandler = null;\n        }\n      }\n    }, {\n      key: \"createTwoChains\",\n      value: function createTwoChains(event) {\n        var childPros = this.props.children.props;\n        var props = this.props;\n\n        if (childPros[event] && props[event]) {\n          return this[\"fire\".concat(event)];\n        }\n\n        return childPros[event] || props[event];\n      }\n    }, {\n      key: \"isClickToShow\",\n      value: function isClickToShow() {\n        var _this$props4 = this.props,\n            action = _this$props4.action,\n            showAction = _this$props4.showAction;\n        return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n      }\n    }, {\n      key: \"isContextMenuOnly\",\n      value: function isContextMenuOnly() {\n        var action = this.props.action;\n        return action === 'contextMenu' || action.length === 1 && action[0] === 'contextMenu';\n      }\n    }, {\n      key: \"isContextMenuToShow\",\n      value: function isContextMenuToShow() {\n        var _this$props5 = this.props,\n            action = _this$props5.action,\n            showAction = _this$props5.showAction;\n        return action.indexOf('contextMenu') !== -1 || showAction.indexOf('contextMenu') !== -1;\n      }\n    }, {\n      key: \"isClickToHide\",\n      value: function isClickToHide() {\n        var _this$props6 = this.props,\n            action = _this$props6.action,\n            hideAction = _this$props6.hideAction;\n        return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n      }\n    }, {\n      key: \"isMouseEnterToShow\",\n      value: function isMouseEnterToShow() {\n        var _this$props7 = this.props,\n            action = _this$props7.action,\n            showAction = _this$props7.showAction;\n        return action.indexOf('hover') !== -1 || showAction.indexOf('mouseEnter') !== -1;\n      }\n    }, {\n      key: \"isMouseLeaveToHide\",\n      value: function isMouseLeaveToHide() {\n        var _this$props8 = this.props,\n            action = _this$props8.action,\n            hideAction = _this$props8.hideAction;\n        return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseLeave') !== -1;\n      }\n    }, {\n      key: \"isFocusToShow\",\n      value: function isFocusToShow() {\n        var _this$props9 = this.props,\n            action = _this$props9.action,\n            showAction = _this$props9.showAction;\n        return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n      }\n    }, {\n      key: \"isBlurToHide\",\n      value: function isBlurToHide() {\n        var _this$props10 = this.props,\n            action = _this$props10.action,\n            hideAction = _this$props10.hideAction;\n        return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n      }\n    }, {\n      key: \"forcePopupAlign\",\n      value: function forcePopupAlign() {\n        if (this.state.popupVisible) {\n          var _this$popupRef$curren3;\n\n          (_this$popupRef$curren3 = this.popupRef.current) === null || _this$popupRef$curren3 === void 0 ? void 0 : _this$popupRef$curren3.forceAlign();\n        }\n      }\n    }, {\n      key: \"fireEvents\",\n      value: function fireEvents(type, e) {\n        var childCallback = this.props.children.props[type];\n\n        if (childCallback) {\n          childCallback(e);\n        }\n\n        var callback = this.props[type];\n\n        if (callback) {\n          callback(e);\n        }\n      }\n    }, {\n      key: \"close\",\n      value: function close() {\n        this.setPopupVisible(false);\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var popupVisible = this.state.popupVisible;\n        var _this$props11 = this.props,\n            children = _this$props11.children,\n            forceRender = _this$props11.forceRender,\n            alignPoint = _this$props11.alignPoint,\n            className = _this$props11.className,\n            autoDestroy = _this$props11.autoDestroy;\n        var child = React.Children.only(children);\n        var newChildProps = {\n          key: 'trigger'\n        }; // ============================== Visible Handlers ==============================\n        // >>> ContextMenu\n\n        if (this.isContextMenuToShow()) {\n          newChildProps.onContextMenu = this.onContextMenu;\n        } else {\n          newChildProps.onContextMenu = this.createTwoChains('onContextMenu');\n        } // >>> Click\n\n\n        if (this.isClickToHide() || this.isClickToShow()) {\n          newChildProps.onClick = this.onClick;\n          newChildProps.onMouseDown = this.onMouseDown;\n          newChildProps.onTouchStart = this.onTouchStart;\n        } else {\n          newChildProps.onClick = this.createTwoChains('onClick');\n          newChildProps.onMouseDown = this.createTwoChains('onMouseDown');\n          newChildProps.onTouchStart = this.createTwoChains('onTouchStart');\n        } // >>> Hover(enter)\n\n\n        if (this.isMouseEnterToShow()) {\n          newChildProps.onMouseEnter = this.onMouseEnter; // Point align\n\n          if (alignPoint) {\n            newChildProps.onMouseMove = this.onMouseMove;\n          }\n        } else {\n          newChildProps.onMouseEnter = this.createTwoChains('onMouseEnter');\n        } // >>> Hover(leave)\n\n\n        if (this.isMouseLeaveToHide()) {\n          newChildProps.onMouseLeave = this.onMouseLeave;\n        } else {\n          newChildProps.onMouseLeave = this.createTwoChains('onMouseLeave');\n        } // >>> Focus\n\n\n        if (this.isFocusToShow() || this.isBlurToHide()) {\n          newChildProps.onFocus = this.onFocus;\n          newChildProps.onBlur = this.onBlur;\n        } else {\n          newChildProps.onFocus = this.createTwoChains('onFocus');\n          newChildProps.onBlur = this.createTwoChains('onBlur');\n        } // =================================== Render ===================================\n\n\n        var childrenClassName = classNames(child && child.props && child.props.className, className);\n\n        if (childrenClassName) {\n          newChildProps.className = childrenClassName;\n        }\n\n        var cloneProps = _objectSpread({}, newChildProps);\n\n        if (supportRef(child)) {\n          cloneProps.ref = composeRef(this.triggerRef, child.ref);\n        }\n\n        var trigger = /*#__PURE__*/React.cloneElement(child, cloneProps);\n        var portal; // prevent unmounting after it's rendered\n\n        if (popupVisible || this.popupRef.current || forceRender) {\n          portal = /*#__PURE__*/React.createElement(PortalComponent, {\n            key: \"portal\",\n            getContainer: this.getContainer,\n            didUpdate: this.handlePortalUpdate\n          }, this.getComponent());\n        }\n\n        if (!popupVisible && autoDestroy) {\n          portal = null;\n        }\n\n        return /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n          value: this.triggerContextValue\n        }, trigger, portal);\n      }\n    }], [{\n      key: \"getDerivedStateFromProps\",\n      value: function getDerivedStateFromProps(_ref, prevState) {\n        var popupVisible = _ref.popupVisible;\n        var newState = {};\n\n        if (popupVisible !== undefined && prevState.popupVisible !== popupVisible) {\n          newState.popupVisible = popupVisible;\n          newState.prevPopupVisible = prevState.popupVisible;\n        }\n\n        return newState;\n      }\n    }]);\n\n    return Trigger;\n  }(React.Component);\n\n  _defineProperty(Trigger, \"contextType\", TriggerContext);\n\n  _defineProperty(Trigger, \"defaultProps\", {\n    prefixCls: 'rc-trigger-popup',\n    getPopupClassNameFromAlign: returnEmptyString,\n    getDocument: returnDocument,\n    onPopupVisibleChange: noop,\n    afterPopupVisibleChange: noop,\n    onPopupAlign: noop,\n    popupClassName: '',\n    mouseEnterDelay: 0,\n    mouseLeaveDelay: 0.1,\n    focusDelay: 0,\n    blurDelay: 0.15,\n    popupStyle: {},\n    destroyPopupOnHide: false,\n    popupAlign: {},\n    defaultPopupVisible: false,\n    mask: false,\n    maskClosable: true,\n    action: [],\n    showAction: [],\n    hideAction: [],\n    autoDestroy: false\n  });\n\n  return Trigger;\n}\nexport default generateTrigger(Portal);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Trigger from 'rc-trigger';\nvar BUILT_IN_PLACEMENTS = {\n  bottomLeft: {\n    points: ['tl', 'bl'],\n    offset: [0, 4],\n    overflow: {\n      adjustX: 1,\n      adjustY: 1\n    }\n  },\n  bottomRight: {\n    points: ['tr', 'br'],\n    offset: [0, 4],\n    overflow: {\n      adjustX: 1,\n      adjustY: 1\n    }\n  },\n  topLeft: {\n    points: ['bl', 'tl'],\n    offset: [0, -4],\n    overflow: {\n      adjustX: 0,\n      adjustY: 1\n    }\n  },\n  topRight: {\n    points: ['br', 'tr'],\n    offset: [0, -4],\n    overflow: {\n      adjustX: 0,\n      adjustY: 1\n    }\n  }\n};\nfunction PickerTrigger(_ref) {\n  var _classNames;\n  var prefixCls = _ref.prefixCls,\n    popupElement = _ref.popupElement,\n    popupStyle = _ref.popupStyle,\n    visible = _ref.visible,\n    dropdownClassName = _ref.dropdownClassName,\n    dropdownAlign = _ref.dropdownAlign,\n    transitionName = _ref.transitionName,\n    getPopupContainer = _ref.getPopupContainer,\n    children = _ref.children,\n    range = _ref.range,\n    popupPlacement = _ref.popupPlacement,\n    direction = _ref.direction;\n  var dropdownPrefixCls = \"\".concat(prefixCls, \"-dropdown\");\n  var getPopupPlacement = function getPopupPlacement() {\n    if (popupPlacement !== undefined) {\n      return popupPlacement;\n    }\n    return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n  };\n  return /*#__PURE__*/React.createElement(Trigger, {\n    showAction: [],\n    hideAction: [],\n    popupPlacement: getPopupPlacement(),\n    builtinPlacements: BUILT_IN_PLACEMENTS,\n    prefixCls: dropdownPrefixCls,\n    popupTransitionName: transitionName,\n    popup: popupElement,\n    popupAlign: dropdownAlign,\n    popupVisible: visible,\n    popupClassName: classNames(dropdownClassName, (_classNames = {}, _defineProperty(_classNames, \"\".concat(dropdownPrefixCls, \"-range\"), range), _defineProperty(_classNames, \"\".concat(dropdownPrefixCls, \"-rtl\"), direction === 'rtl'), _classNames)),\n    popupStyle: popupStyle,\n    getPopupContainer: getPopupContainer\n  }, children);\n}\nexport default PickerTrigger;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useState, useEffect, useRef } from 'react';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport { addGlobalMouseDownEvent, getTargetFromEvent } from '../utils/uiUtil';\nexport default function usePickerInput(_ref) {\n  var open = _ref.open,\n    value = _ref.value,\n    isClickOutside = _ref.isClickOutside,\n    triggerOpen = _ref.triggerOpen,\n    forwardKeyDown = _ref.forwardKeyDown,\n    _onKeyDown = _ref.onKeyDown,\n    blurToCancel = _ref.blurToCancel,\n    onSubmit = _ref.onSubmit,\n    onCancel = _ref.onCancel,\n    _onFocus = _ref.onFocus,\n    _onBlur = _ref.onBlur,\n    currentFocusedKey = _ref.currentFocusedKey,\n    _ref$key = _ref.key,\n    key = _ref$key === void 0 ? 'start' : _ref$key;\n  var _useState = useState(false),\n    _useState2 = _slicedToArray(_useState, 2),\n    typing = _useState2[0],\n    setTyping = _useState2[1];\n  var _useState3 = useState(false),\n    _useState4 = _slicedToArray(_useState3, 2),\n    focused = _useState4[0],\n    setFocused = _useState4[1];\n  var delayBlurTimer = useRef();\n  /**\n   * We will prevent blur to handle open event when user click outside,\n   * since this will repeat trigger `onOpenChange` event.\n   */\n  var preventBlurRef = useRef(false);\n  var valueChangedRef = useRef(false);\n  var preventDefaultRef = useRef(false);\n  var inputProps = {\n    onMouseDown: function onMouseDown() {\n      setTyping(true);\n      triggerOpen(true);\n    },\n    onKeyDown: function onKeyDown(e) {\n      var preventDefault = function preventDefault() {\n        preventDefaultRef.current = true;\n      };\n      _onKeyDown(e, preventDefault);\n      if (preventDefaultRef.current) return;\n      switch (e.which) {\n        case KeyCode.ENTER:\n          {\n            if (!open) {\n              triggerOpen(true);\n            } else if (onSubmit() !== false) {\n              setTyping(true);\n            }\n            e.preventDefault();\n            return;\n          }\n        case KeyCode.TAB:\n          {\n            if (typing && open && !e.shiftKey) {\n              setTyping(false);\n              e.preventDefault();\n            } else if (!typing && open) {\n              if (!forwardKeyDown(e) && e.shiftKey) {\n                setTyping(true);\n                e.preventDefault();\n              }\n            }\n            return;\n          }\n        case KeyCode.ESC:\n          {\n            setTyping(true);\n            onCancel();\n            return;\n          }\n      }\n      if (!open && ![KeyCode.SHIFT].includes(e.which)) {\n        triggerOpen(true);\n      } else if (!typing) {\n        // Let popup panel handle keyboard\n        forwardKeyDown(e);\n      }\n    },\n    onFocus: function onFocus(e) {\n      setTyping(true);\n      setFocused(true);\n      if (currentFocusedKey) {\n        currentFocusedKey.current = key;\n      }\n      clearTimeout(delayBlurTimer.current);\n      if (_onFocus) {\n        _onFocus(e);\n      }\n    },\n    onBlur: function onBlur(e) {\n      if (preventBlurRef.current || !isClickOutside(document.activeElement)) {\n        preventBlurRef.current = false;\n        return;\n      }\n      if (blurToCancel) {\n        setTimeout(function () {\n          var _document = document,\n            activeElement = _document.activeElement;\n          while (activeElement && activeElement.shadowRoot) {\n            activeElement = activeElement.shadowRoot.activeElement;\n          }\n          if (isClickOutside(activeElement)) {\n            onCancel();\n          }\n        }, 0);\n      } else if (open) {\n        triggerOpen(false);\n        if (valueChangedRef.current) {\n          onSubmit();\n        }\n      }\n      setFocused(false);\n      if (currentFocusedKey) {\n        currentFocusedKey.current = '';\n        // Delay to prevent 'range' focus transitions from firing resulting in incorrect out-of-focus events\n        delayBlurTimer.current = setTimeout(function () {\n          // Prevent the 'blur' event from firing when there is currently a focused input\n          if (currentFocusedKey.current) {\n            return;\n          }\n          _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);\n        }, 100);\n      } else {\n        _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);\n      }\n    }\n  };\n  // check if value changed\n  useEffect(function () {\n    valueChangedRef.current = false;\n  }, [open]);\n  useEffect(function () {\n    valueChangedRef.current = true;\n  }, [value]);\n  // Global click handler\n  useEffect(function () {\n    return addGlobalMouseDownEvent(function (e) {\n      var target = getTargetFromEvent(e);\n      var clickedOutside = isClickOutside(target);\n      if (open) {\n        if (!clickedOutside) {\n          preventBlurRef.current = true;\n          // Always set back in case `onBlur` prevented by user\n          requestAnimationFrame(function () {\n            preventBlurRef.current = false;\n          });\n        } else if (!focused || clickedOutside) {\n          triggerOpen(false);\n        }\n      } else if (focused && !clickedOutside) {\n        preventBlurRef.current = true;\n      }\n    });\n  });\n  useEffect(function () {\n    return function () {\n      return clearTimeout(delayBlurTimer.current);\n    };\n  }, []);\n  return [inputProps, {\n    focused: focused,\n    typing: typing\n  }];\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useTextValueMapping(_ref) {\n  var valueTexts = _ref.valueTexts,\n    onTextChange = _ref.onTextChange;\n  var _React$useState = React.useState(''),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    text = _React$useState2[0],\n    setInnerText = _React$useState2[1];\n  var valueTextsRef = React.useRef([]);\n  valueTextsRef.current = valueTexts;\n  function triggerTextChange(value) {\n    setInnerText(value);\n    onTextChange(value);\n  }\n  function resetText() {\n    setInnerText(valueTextsRef.current[0]);\n  }\n  React.useEffect(function () {\n    if (valueTexts.every(function (valText) {\n      return valText !== text;\n    })) {\n      resetText();\n    }\n  }, [valueTexts.join('||')]);\n  return [text, triggerTextChange, resetText];\n}","import shallowEqual from 'shallowequal';\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport { formatValue } from '../utils/dateUtil';\nexport default function useValueTexts(value, _ref) {\n  var formatList = _ref.formatList,\n    generateConfig = _ref.generateConfig,\n    locale = _ref.locale;\n  return useMemo(function () {\n    if (!value) {\n      return [[''], ''];\n    }\n    // We will convert data format back to first format\n    var firstValueText = '';\n    var fullValueTexts = [];\n    for (var i = 0; i < formatList.length; i += 1) {\n      var format = formatList[i];\n      var formatStr = formatValue(value, {\n        generateConfig: generateConfig,\n        locale: locale,\n        format: format\n      });\n      fullValueTexts.push(formatStr);\n      if (i === 0) {\n        firstValueText = formatStr;\n      }\n    }\n    return [fullValueTexts, firstValueText];\n  }, [value, formatList], function (prev, next) {\n    return prev[0] !== next[0] || !shallowEqual(prev[1], next[1]);\n  });\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useState, useEffect, useRef } from 'react';\nimport useValueTexts from './useValueTexts';\nexport default function useHoverValue(valueText, _ref) {\n  var formatList = _ref.formatList,\n    generateConfig = _ref.generateConfig,\n    locale = _ref.locale;\n  var _useState = useState(null),\n    _useState2 = _slicedToArray(_useState, 2),\n    value = _useState2[0],\n    internalSetValue = _useState2[1];\n  var raf = useRef(null);\n  function setValue(val) {\n    var immediately = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n    cancelAnimationFrame(raf.current);\n    if (immediately) {\n      internalSetValue(val);\n      return;\n    }\n    raf.current = requestAnimationFrame(function () {\n      internalSetValue(val);\n    });\n  }\n  var _useValueTexts = useValueTexts(value, {\n      formatList: formatList,\n      generateConfig: generateConfig,\n      locale: locale\n    }),\n    _useValueTexts2 = _slicedToArray(_useValueTexts, 2),\n    firstText = _useValueTexts2[1];\n  function onEnter(date) {\n    setValue(date);\n  }\n  function onLeave() {\n    var immediately = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    setValue(null, immediately);\n  }\n  useEffect(function () {\n    onLeave(true);\n  }, [valueText]);\n  useEffect(function () {\n    return function () {\n      return cancelAnimationFrame(raf.current);\n    };\n  }, []);\n  return [firstText, onEnter, onLeave];\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * Removed:\n *  - getCalendarContainer: use `getPopupContainer` instead\n *  - onOk\n *\n * New Feature:\n *  - picker\n *  - allowEmpty\n *  - selectable\n *\n * Tips: Should add faq about `datetime` mode with `defaultValue`\n */\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport warning from \"rc-util/es/warning\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport PickerPanel from './PickerPanel';\nimport PickerTrigger from './PickerTrigger';\nimport { formatValue, isEqual, parseValue } from './utils/dateUtil';\nimport getDataOrAriaProps, { toArray } from './utils/miscUtil';\nimport PanelContext from './PanelContext';\nimport { getDefaultFormat, getInputSize, elementsContains } from './utils/uiUtil';\nimport usePickerInput from './hooks/usePickerInput';\nimport useTextValueMapping from './hooks/useTextValueMapping';\nimport useValueTexts from './hooks/useValueTexts';\nimport useHoverValue from './hooks/useHoverValue';\nimport { legacyPropsWarning } from './utils/warnUtil';\nfunction InnerPicker(props) {\n  var _classNames2;\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,\n    id = props.id,\n    tabIndex = props.tabIndex,\n    style = props.style,\n    className = props.className,\n    dropdownClassName = props.dropdownClassName,\n    dropdownAlign = props.dropdownAlign,\n    popupStyle = props.popupStyle,\n    transitionName = props.transitionName,\n    generateConfig = props.generateConfig,\n    locale = props.locale,\n    inputReadOnly = props.inputReadOnly,\n    allowClear = props.allowClear,\n    autoFocus = props.autoFocus,\n    showTime = props.showTime,\n    _props$picker = props.picker,\n    picker = _props$picker === void 0 ? 'date' : _props$picker,\n    format = props.format,\n    use12Hours = props.use12Hours,\n    value = props.value,\n    defaultValue = props.defaultValue,\n    open = props.open,\n    defaultOpen = props.defaultOpen,\n    defaultOpenValue = props.defaultOpenValue,\n    suffixIcon = props.suffixIcon,\n    clearIcon = props.clearIcon,\n    disabled = props.disabled,\n    disabledDate = props.disabledDate,\n    placeholder = props.placeholder,\n    getPopupContainer = props.getPopupContainer,\n    pickerRef = props.pickerRef,\n    panelRender = props.panelRender,\n    onChange = props.onChange,\n    onOpenChange = props.onOpenChange,\n    onFocus = props.onFocus,\n    onBlur = props.onBlur,\n    onMouseDown = props.onMouseDown,\n    onMouseUp = props.onMouseUp,\n    onMouseEnter = props.onMouseEnter,\n    onMouseLeave = props.onMouseLeave,\n    onContextMenu = props.onContextMenu,\n    onClick = props.onClick,\n    _onKeyDown = props.onKeyDown,\n    _onSelect = props.onSelect,\n    direction = props.direction,\n    _props$autoComplete = props.autoComplete,\n    autoComplete = _props$autoComplete === void 0 ? 'off' : _props$autoComplete,\n    inputRender = props.inputRender;\n  var inputRef = React.useRef(null);\n  var needConfirmButton = picker === 'date' && !!showTime || picker === 'time';\n  // ============================ Warning ============================\n  if (process.env.NODE_ENV !== 'production') {\n    legacyPropsWarning(props);\n  }\n  // ============================= State =============================\n  var formatList = toArray(getDefaultFormat(format, picker, showTime, use12Hours));\n  // Panel ref\n  var panelDivRef = React.useRef(null);\n  var inputDivRef = React.useRef(null);\n  var containerRef = React.useRef(null);\n  // Real value\n  var _useMergedState = useMergedState(null, {\n      value: value,\n      defaultValue: defaultValue\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    mergedValue = _useMergedState2[0],\n    setInnerValue = _useMergedState2[1];\n  // Selected value\n  var _React$useState = React.useState(mergedValue),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    selectedValue = _React$useState2[0],\n    setSelectedValue = _React$useState2[1];\n  // Operation ref\n  var operationRef = React.useRef(null);\n  // Open\n  var _useMergedState3 = useMergedState(false, {\n      value: open,\n      defaultValue: defaultOpen,\n      postState: function postState(postOpen) {\n        return disabled ? false : postOpen;\n      },\n      onChange: function onChange(newOpen) {\n        if (onOpenChange) {\n          onOpenChange(newOpen);\n        }\n        if (!newOpen && operationRef.current && operationRef.current.onClose) {\n          operationRef.current.onClose();\n        }\n      }\n    }),\n    _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n    mergedOpen = _useMergedState4[0],\n    triggerInnerOpen = _useMergedState4[1];\n  // ============================= Text ==============================\n  var _useValueTexts = useValueTexts(selectedValue, {\n      formatList: formatList,\n      generateConfig: generateConfig,\n      locale: locale\n    }),\n    _useValueTexts2 = _slicedToArray(_useValueTexts, 2),\n    valueTexts = _useValueTexts2[0],\n    firstValueText = _useValueTexts2[1];\n  var _useTextValueMapping = useTextValueMapping({\n      valueTexts: valueTexts,\n      onTextChange: function onTextChange(newText) {\n        var inputDate = parseValue(newText, {\n          locale: locale,\n          formatList: formatList,\n          generateConfig: generateConfig\n        });\n        if (inputDate && (!disabledDate || !disabledDate(inputDate))) {\n          setSelectedValue(inputDate);\n        }\n      }\n    }),\n    _useTextValueMapping2 = _slicedToArray(_useTextValueMapping, 3),\n    text = _useTextValueMapping2[0],\n    triggerTextChange = _useTextValueMapping2[1],\n    resetText = _useTextValueMapping2[2];\n  // ============================ Trigger ============================\n  var triggerChange = function triggerChange(newValue) {\n    setSelectedValue(newValue);\n    setInnerValue(newValue);\n    if (onChange && !isEqual(generateConfig, mergedValue, newValue)) {\n      onChange(newValue, newValue ? formatValue(newValue, {\n        generateConfig: generateConfig,\n        locale: locale,\n        format: formatList[0]\n      }) : '');\n    }\n  };\n  var triggerOpen = function triggerOpen(newOpen) {\n    if (disabled && newOpen) {\n      return;\n    }\n    triggerInnerOpen(newOpen);\n  };\n  var forwardKeyDown = function forwardKeyDown(e) {\n    if (mergedOpen && operationRef.current && operationRef.current.onKeyDown) {\n      // Let popup panel handle keyboard\n      return operationRef.current.onKeyDown(e);\n    }\n    /* istanbul ignore next */\n    /* eslint-disable no-lone-blocks */\n    {\n      warning(false, 'Picker not correct forward KeyDown operation. Please help to fire issue about this.');\n      return false;\n    }\n  };\n  var onInternalClick = function onInternalClick() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    onClick === null || onClick === void 0 ? void 0 : onClick.apply(void 0, args);\n    if (inputRef.current) {\n      inputRef.current.focus();\n      triggerOpen(true);\n    }\n  };\n  // ============================= Input =============================\n  var _usePickerInput = usePickerInput({\n      blurToCancel: needConfirmButton,\n      open: mergedOpen,\n      value: text,\n      triggerOpen: triggerOpen,\n      forwardKeyDown: forwardKeyDown,\n      isClickOutside: function isClickOutside(target) {\n        return !elementsContains([panelDivRef.current, inputDivRef.current, containerRef.current], target);\n      },\n      onSubmit: function onSubmit() {\n        if (\n        // When user typing disabledDate with keyboard and enter, this value will be empty\n        !selectedValue ||\n        // Normal disabled check\n        disabledDate && disabledDate(selectedValue)) {\n          return false;\n        }\n        triggerChange(selectedValue);\n        triggerOpen(false);\n        resetText();\n        return true;\n      },\n      onCancel: function onCancel() {\n        triggerOpen(false);\n        setSelectedValue(mergedValue);\n        resetText();\n      },\n      onKeyDown: function onKeyDown(e, preventDefault) {\n        _onKeyDown === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(e, preventDefault);\n      },\n      onFocus: onFocus,\n      onBlur: onBlur\n    }),\n    _usePickerInput2 = _slicedToArray(_usePickerInput, 2),\n    inputProps = _usePickerInput2[0],\n    _usePickerInput2$ = _usePickerInput2[1],\n    focused = _usePickerInput2$.focused,\n    typing = _usePickerInput2$.typing;\n  // ============================= Sync ==============================\n  // Close should sync back with text value\n  React.useEffect(function () {\n    if (!mergedOpen) {\n      setSelectedValue(mergedValue);\n      if (!valueTexts.length || valueTexts[0] === '') {\n        triggerTextChange('');\n      } else if (firstValueText !== text) {\n        resetText();\n      }\n    }\n  }, [mergedOpen, valueTexts]);\n  // Change picker should sync back with text value\n  React.useEffect(function () {\n    if (!mergedOpen) {\n      resetText();\n    }\n  }, [picker]);\n  // Sync innerValue with control mode\n  React.useEffect(function () {\n    // Sync select value\n    setSelectedValue(mergedValue);\n  }, [mergedValue]);\n  // ============================ Private ============================\n  if (pickerRef) {\n    pickerRef.current = {\n      focus: function focus() {\n        if (inputRef.current) {\n          inputRef.current.focus();\n        }\n      },\n      blur: function blur() {\n        if (inputRef.current) {\n          inputRef.current.blur();\n        }\n      }\n    };\n  }\n  var _useHoverValue = useHoverValue(text, {\n      formatList: formatList,\n      generateConfig: generateConfig,\n      locale: locale\n    }),\n    _useHoverValue2 = _slicedToArray(_useHoverValue, 3),\n    hoverValue = _useHoverValue2[0],\n    onEnter = _useHoverValue2[1],\n    onLeave = _useHoverValue2[2];\n  // ============================= Panel =============================\n  var panelProps = _objectSpread(_objectSpread({}, props), {}, {\n    className: undefined,\n    style: undefined,\n    pickerValue: undefined,\n    onPickerValueChange: undefined,\n    onChange: null\n  });\n  var panelNode = /*#__PURE__*/React.createElement(PickerPanel, _extends({}, panelProps, {\n    generateConfig: generateConfig,\n    className: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-panel-focused\"), !typing)),\n    value: selectedValue,\n    locale: locale,\n    tabIndex: -1,\n    onSelect: function onSelect(date) {\n      _onSelect === null || _onSelect === void 0 ? void 0 : _onSelect(date);\n      setSelectedValue(date);\n    },\n    direction: direction,\n    onPanelChange: function onPanelChange(viewDate, mode) {\n      var onPanelChange = props.onPanelChange;\n      onLeave(true);\n      onPanelChange === null || onPanelChange === void 0 ? void 0 : onPanelChange(viewDate, mode);\n    }\n  }));\n  if (panelRender) {\n    panelNode = panelRender(panelNode);\n  }\n  var panel = /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-panel-container\"),\n    onMouseDown: function onMouseDown(e) {\n      e.preventDefault();\n    }\n  }, panelNode);\n  var suffixNode;\n  if (suffixIcon) {\n    suffixNode = /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(prefixCls, \"-suffix\")\n    }, suffixIcon);\n  }\n  var clearNode;\n  if (allowClear && mergedValue && !disabled) {\n    clearNode = /*#__PURE__*/React.createElement(\"span\", {\n      onMouseDown: function onMouseDown(e) {\n        e.preventDefault();\n        e.stopPropagation();\n      },\n      onMouseUp: function onMouseUp(e) {\n        e.preventDefault();\n        e.stopPropagation();\n        triggerChange(null);\n        triggerOpen(false);\n      },\n      className: \"\".concat(prefixCls, \"-clear\"),\n      role: \"button\"\n    }, clearIcon || /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(prefixCls, \"-clear-btn\")\n    }));\n  }\n  var mergedInputProps = _objectSpread(_objectSpread(_objectSpread({\n    id: id,\n    tabIndex: tabIndex,\n    disabled: disabled,\n    readOnly: inputReadOnly || typeof formatList[0] === 'function' || !typing,\n    value: hoverValue || text,\n    onChange: function onChange(e) {\n      triggerTextChange(e.target.value);\n    },\n    autoFocus: autoFocus,\n    placeholder: placeholder,\n    ref: inputRef,\n    title: text\n  }, inputProps), {}, {\n    size: getInputSize(picker, formatList[0], generateConfig)\n  }, getDataOrAriaProps(props)), {}, {\n    autoComplete: autoComplete\n  });\n  var inputNode = inputRender ? inputRender(mergedInputProps) : /*#__PURE__*/React.createElement(\"input\", mergedInputProps);\n  // ============================ Warning ============================\n  if (process.env.NODE_ENV !== 'production') {\n    warning(!defaultOpenValue, '`defaultOpenValue` may confuse user for the current value status. Please use `defaultValue` instead.');\n  }\n  // ============================ Return =============================\n  var onContextSelect = function onContextSelect(date, type) {\n    if (type === 'submit' || type !== 'key' && !needConfirmButton) {\n      // triggerChange will also update selected values\n      triggerChange(date);\n      triggerOpen(false);\n    }\n  };\n  var popupPlacement = direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n  return /*#__PURE__*/React.createElement(PanelContext.Provider, {\n    value: {\n      operationRef: operationRef,\n      hideHeader: picker === 'time',\n      panelRef: panelDivRef,\n      onSelect: onContextSelect,\n      open: mergedOpen,\n      defaultOpenValue: defaultOpenValue,\n      onDateMouseEnter: onEnter,\n      onDateMouseLeave: onLeave\n    }\n  }, /*#__PURE__*/React.createElement(PickerTrigger, {\n    visible: mergedOpen,\n    popupElement: panel,\n    popupStyle: popupStyle,\n    prefixCls: prefixCls,\n    dropdownClassName: dropdownClassName,\n    dropdownAlign: dropdownAlign,\n    getPopupContainer: getPopupContainer,\n    transitionName: transitionName,\n    popupPlacement: popupPlacement,\n    direction: direction\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: containerRef,\n    className: classNames(prefixCls, className, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), disabled), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-focused\"), focused), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames2)),\n    style: style,\n    onMouseDown: onMouseDown,\n    onMouseUp: onMouseUp,\n    onMouseEnter: onMouseEnter,\n    onMouseLeave: onMouseLeave,\n    onContextMenu: onContextMenu,\n    onClick: onInternalClick\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-input\"), _defineProperty({}, \"\".concat(prefixCls, \"-input-placeholder\"), !!hoverValue)),\n    ref: inputDivRef\n  }, inputNode, suffixNode, clearNode))));\n}\n// Wrap with class component to enable pass generic with instance method\nvar Picker = /*#__PURE__*/function (_React$Component) {\n  _inherits(Picker, _React$Component);\n  var _super = _createSuper(Picker);\n  function Picker() {\n    var _this;\n    _classCallCheck(this, Picker);\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.pickerRef = /*#__PURE__*/React.createRef();\n    _this.focus = function () {\n      if (_this.pickerRef.current) {\n        _this.pickerRef.current.focus();\n      }\n    };\n    _this.blur = function () {\n      if (_this.pickerRef.current) {\n        _this.pickerRef.current.blur();\n      }\n    };\n    return _this;\n  }\n  _createClass(Picker, [{\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/React.createElement(InnerPicker, _extends({}, this.props, {\n        pickerRef: this.pickerRef\n      }));\n    }\n  }]);\n  return Picker;\n}(React.Component);\nexport default Picker;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { getValue, updateValues } from '../utils/miscUtil';\nimport { getClosingViewDate, isSameYear, isSameMonth, isSameDecade } from '../utils/dateUtil';\nfunction getStartEndDistance(startDate, endDate, picker, generateConfig) {\n  var startNext = getClosingViewDate(startDate, picker, generateConfig, 1);\n  function getDistance(compareFunc) {\n    if (compareFunc(startDate, endDate)) {\n      return 'same';\n    }\n    if (compareFunc(startNext, endDate)) {\n      return 'closing';\n    }\n    return 'far';\n  }\n  switch (picker) {\n    case 'year':\n      return getDistance(function (start, end) {\n        return isSameDecade(generateConfig, start, end);\n      });\n    case 'quarter':\n    case 'month':\n      return getDistance(function (start, end) {\n        return isSameYear(generateConfig, start, end);\n      });\n    default:\n      return getDistance(function (start, end) {\n        return isSameMonth(generateConfig, start, end);\n      });\n  }\n}\nfunction getRangeViewDate(values, index, picker, generateConfig) {\n  var startDate = getValue(values, 0);\n  var endDate = getValue(values, 1);\n  if (index === 0) {\n    return startDate;\n  }\n  if (startDate && endDate) {\n    var distance = getStartEndDistance(startDate, endDate, picker, generateConfig);\n    switch (distance) {\n      case 'same':\n        return startDate;\n      case 'closing':\n        return startDate;\n      default:\n        return getClosingViewDate(endDate, picker, generateConfig, -1);\n    }\n  }\n  return startDate;\n}\nexport default function useRangeViewDates(_ref) {\n  var values = _ref.values,\n    picker = _ref.picker,\n    defaultDates = _ref.defaultDates,\n    generateConfig = _ref.generateConfig;\n  var _React$useState = React.useState(function () {\n      return [getValue(defaultDates, 0), getValue(defaultDates, 1)];\n    }),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    defaultViewDates = _React$useState2[0],\n    setDefaultViewDates = _React$useState2[1];\n  var _React$useState3 = React.useState(null),\n    _React$useState4 = _slicedToArray(_React$useState3, 2),\n    viewDates = _React$useState4[0],\n    setInternalViewDates = _React$useState4[1];\n  var startDate = getValue(values, 0);\n  var endDate = getValue(values, 1);\n  function getViewDate(index) {\n    // If set default view date, use it\n    if (defaultViewDates[index]) {\n      return defaultViewDates[index];\n    }\n    return getValue(viewDates, index) || getRangeViewDate(values, index, picker, generateConfig) || startDate || endDate || generateConfig.getNow();\n  }\n  function setViewDate(viewDate, index) {\n    if (viewDate) {\n      var newViewDates = updateValues(viewDates, viewDate, index);\n      // Set view date will clean up default one\n      setDefaultViewDates(\n      // Should always be an array\n      updateValues(defaultViewDates, null, index) || [null, null]);\n      // Reset another one when not have value\n      var anotherIndex = (index + 1) % 2;\n      if (!getValue(values, anotherIndex)) {\n        newViewDates = updateValues(newViewDates, viewDate, anotherIndex);\n      }\n      setInternalViewDates(newViewDates);\n    } else if (startDate || endDate) {\n      // Reset all when has values when `viewDate` is `null` which means from open trigger\n      setInternalViewDates(null);\n    }\n  }\n  return [getViewDate, setViewDate];\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useEffect, useState } from 'react';\nimport classNames from 'classnames';\nimport warning from \"rc-util/es/warning\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport PickerTrigger from './PickerTrigger';\nimport PickerPanel from './PickerPanel';\nimport usePickerInput from './hooks/usePickerInput';\nimport getDataOrAriaProps, { toArray, getValue, updateValues } from './utils/miscUtil';\nimport { getDefaultFormat, getInputSize, elementsContains } from './utils/uiUtil';\nimport PanelContext from './PanelContext';\nimport { isEqual, getClosingViewDate, isSameDate, isSameWeek, isSameQuarter, formatValue, parseValue } from './utils/dateUtil';\nimport useValueTexts from './hooks/useValueTexts';\nimport useTextValueMapping from './hooks/useTextValueMapping';\nimport RangeContext from './RangeContext';\nimport useRangeDisabled from './hooks/useRangeDisabled';\nimport getExtraFooter from './utils/getExtraFooter';\nimport getRanges from './utils/getRanges';\nimport useRangeViewDates from './hooks/useRangeViewDates';\nimport useHoverValue from './hooks/useHoverValue';\nimport { legacyPropsWarning } from './utils/warnUtil';\nfunction reorderValues(values, generateConfig) {\n  if (values && values[0] && values[1] && generateConfig.isAfter(values[0], values[1])) {\n    return [values[1], values[0]];\n  }\n  return values;\n}\nfunction canValueTrigger(value, index, disabled, allowEmpty) {\n  if (value) {\n    return true;\n  }\n  if (allowEmpty && allowEmpty[index]) {\n    return true;\n  }\n  if (disabled[(index + 1) % 2]) {\n    return true;\n  }\n  return false;\n}\nfunction InnerRangePicker(props) {\n  var _classNames2, _classNames3, _classNames4;\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,\n    id = props.id,\n    style = props.style,\n    className = props.className,\n    popupStyle = props.popupStyle,\n    dropdownClassName = props.dropdownClassName,\n    transitionName = props.transitionName,\n    dropdownAlign = props.dropdownAlign,\n    getPopupContainer = props.getPopupContainer,\n    generateConfig = props.generateConfig,\n    locale = props.locale,\n    placeholder = props.placeholder,\n    autoFocus = props.autoFocus,\n    disabled = props.disabled,\n    format = props.format,\n    _props$picker = props.picker,\n    picker = _props$picker === void 0 ? 'date' : _props$picker,\n    showTime = props.showTime,\n    use12Hours = props.use12Hours,\n    _props$separator = props.separator,\n    separator = _props$separator === void 0 ? '~' : _props$separator,\n    value = props.value,\n    defaultValue = props.defaultValue,\n    defaultPickerValue = props.defaultPickerValue,\n    open = props.open,\n    defaultOpen = props.defaultOpen,\n    disabledDate = props.disabledDate,\n    _disabledTime = props.disabledTime,\n    dateRender = props.dateRender,\n    panelRender = props.panelRender,\n    ranges = props.ranges,\n    allowEmpty = props.allowEmpty,\n    allowClear = props.allowClear,\n    suffixIcon = props.suffixIcon,\n    clearIcon = props.clearIcon,\n    pickerRef = props.pickerRef,\n    inputReadOnly = props.inputReadOnly,\n    mode = props.mode,\n    renderExtraFooter = props.renderExtraFooter,\n    onChange = props.onChange,\n    onOpenChange = props.onOpenChange,\n    onPanelChange = props.onPanelChange,\n    onCalendarChange = props.onCalendarChange,\n    _onFocus = props.onFocus,\n    onBlur = props.onBlur,\n    onMouseDown = props.onMouseDown,\n    onMouseUp = props.onMouseUp,\n    onMouseEnter = props.onMouseEnter,\n    onMouseLeave = props.onMouseLeave,\n    onClick = props.onClick,\n    _onOk = props.onOk,\n    _onKeyDown = props.onKeyDown,\n    components = props.components,\n    order = props.order,\n    direction = props.direction,\n    activePickerIndex = props.activePickerIndex,\n    _props$autoComplete = props.autoComplete,\n    autoComplete = _props$autoComplete === void 0 ? 'off' : _props$autoComplete;\n  var needConfirmButton = picker === 'date' && !!showTime || picker === 'time';\n  // We record opened status here in case repeat open with picker\n  var openRecordsRef = useRef({});\n  var containerRef = useRef(null);\n  var panelDivRef = useRef(null);\n  var startInputDivRef = useRef(null);\n  var endInputDivRef = useRef(null);\n  var separatorRef = useRef(null);\n  var startInputRef = useRef(null);\n  var endInputRef = useRef(null);\n  var arrowRef = useRef(null);\n  // ============================ Warning ============================\n  if (process.env.NODE_ENV !== 'production') {\n    legacyPropsWarning(props);\n  }\n  // ============================= Misc ==============================\n  var formatList = toArray(getDefaultFormat(format, picker, showTime, use12Hours));\n  // Active picker\n  var _useMergedState = useMergedState(0, {\n      value: activePickerIndex\n    }),\n    _useMergedState2 = _slicedToArray(_useMergedState, 2),\n    mergedActivePickerIndex = _useMergedState2[0],\n    setMergedActivePickerIndex = _useMergedState2[1];\n  // Operation ref\n  var operationRef = useRef(null);\n  var mergedDisabled = React.useMemo(function () {\n    if (Array.isArray(disabled)) {\n      return disabled;\n    }\n    return [disabled || false, disabled || false];\n  }, [disabled]);\n  // ============================= Value =============================\n  var _useMergedState3 = useMergedState(null, {\n      value: value,\n      defaultValue: defaultValue,\n      postState: function postState(values) {\n        return picker === 'time' && !order ? values : reorderValues(values, generateConfig);\n      }\n    }),\n    _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n    mergedValue = _useMergedState4[0],\n    setInnerValue = _useMergedState4[1];\n  // =========================== View Date ===========================\n  // Config view panel\n  var _useRangeViewDates = useRangeViewDates({\n      values: mergedValue,\n      picker: picker,\n      defaultDates: defaultPickerValue,\n      generateConfig: generateConfig\n    }),\n    _useRangeViewDates2 = _slicedToArray(_useRangeViewDates, 2),\n    getViewDate = _useRangeViewDates2[0],\n    setViewDate = _useRangeViewDates2[1];\n  // ========================= Select Values =========================\n  var _useMergedState5 = useMergedState(mergedValue, {\n      postState: function postState(values) {\n        var postValues = values;\n        if (mergedDisabled[0] && mergedDisabled[1]) {\n          return postValues;\n        }\n        // Fill disabled unit\n        for (var i = 0; i < 2; i += 1) {\n          if (mergedDisabled[i] && !postValues && !getValue(postValues, i) && !getValue(allowEmpty, i)) {\n            postValues = updateValues(postValues, generateConfig.getNow(), i);\n          }\n        }\n        return postValues;\n      }\n    }),\n    _useMergedState6 = _slicedToArray(_useMergedState5, 2),\n    selectedValue = _useMergedState6[0],\n    setSelectedValue = _useMergedState6[1];\n  // ============================= Modes =============================\n  var _useMergedState7 = useMergedState([picker, picker], {\n      value: mode\n    }),\n    _useMergedState8 = _slicedToArray(_useMergedState7, 2),\n    mergedModes = _useMergedState8[0],\n    setInnerModes = _useMergedState8[1];\n  useEffect(function () {\n    setInnerModes([picker, picker]);\n  }, [picker]);\n  var triggerModesChange = function triggerModesChange(modes, values) {\n    setInnerModes(modes);\n    if (onPanelChange) {\n      onPanelChange(values, modes);\n    }\n  };\n  // ========================= Disable Date ==========================\n  var _useRangeDisabled = useRangeDisabled({\n      picker: picker,\n      selectedValue: selectedValue,\n      locale: locale,\n      disabled: mergedDisabled,\n      disabledDate: disabledDate,\n      generateConfig: generateConfig\n    }, openRecordsRef.current[1], openRecordsRef.current[0]),\n    _useRangeDisabled2 = _slicedToArray(_useRangeDisabled, 2),\n    disabledStartDate = _useRangeDisabled2[0],\n    disabledEndDate = _useRangeDisabled2[1];\n  // ============================= Open ==============================\n  var _useMergedState9 = useMergedState(false, {\n      value: open,\n      defaultValue: defaultOpen,\n      postState: function postState(postOpen) {\n        return mergedDisabled[mergedActivePickerIndex] ? false : postOpen;\n      },\n      onChange: function onChange(newOpen) {\n        if (onOpenChange) {\n          onOpenChange(newOpen);\n        }\n        if (!newOpen && operationRef.current && operationRef.current.onClose) {\n          operationRef.current.onClose();\n        }\n      }\n    }),\n    _useMergedState10 = _slicedToArray(_useMergedState9, 2),\n    mergedOpen = _useMergedState10[0],\n    triggerInnerOpen = _useMergedState10[1];\n  var startOpen = mergedOpen && mergedActivePickerIndex === 0;\n  var endOpen = mergedOpen && mergedActivePickerIndex === 1;\n  // ============================= Popup =============================\n  // Popup min width\n  var _useState = useState(0),\n    _useState2 = _slicedToArray(_useState, 2),\n    popupMinWidth = _useState2[0],\n    setPopupMinWidth = _useState2[1];\n  useEffect(function () {\n    if (!mergedOpen && containerRef.current) {\n      setPopupMinWidth(containerRef.current.offsetWidth);\n    }\n  }, [mergedOpen]);\n  // ============================ Trigger ============================\n  var triggerRef = React.useRef();\n  function _triggerOpen(newOpen, index) {\n    if (newOpen) {\n      clearTimeout(triggerRef.current);\n      openRecordsRef.current[index] = true;\n      setMergedActivePickerIndex(index);\n      triggerInnerOpen(newOpen);\n      // Open to reset view date\n      if (!mergedOpen) {\n        setViewDate(null, index);\n      }\n    } else if (mergedActivePickerIndex === index) {\n      triggerInnerOpen(newOpen);\n      // Clean up async\n      // This makes ref not quick refresh in case user open another input with blur trigger\n      var openRecords = openRecordsRef.current;\n      triggerRef.current = setTimeout(function () {\n        if (openRecords === openRecordsRef.current) {\n          openRecordsRef.current = {};\n        }\n      });\n    }\n  }\n  function triggerOpenAndFocus(index) {\n    _triggerOpen(true, index);\n    // Use setTimeout to make sure panel DOM exists\n    setTimeout(function () {\n      var inputRef = [startInputRef, endInputRef][index];\n      if (inputRef.current) {\n        inputRef.current.focus();\n      }\n    }, 0);\n  }\n  function triggerChange(newValue, sourceIndex) {\n    var values = newValue;\n    var startValue = getValue(values, 0);\n    var endValue = getValue(values, 1);\n    // >>>>> Format start & end values\n    if (startValue && endValue && generateConfig.isAfter(startValue, endValue)) {\n      if (\n      // WeekPicker only compare week\n      picker === 'week' && !isSameWeek(generateConfig, locale.locale, startValue, endValue) ||\n      // QuotaPicker only compare week\n      picker === 'quarter' && !isSameQuarter(generateConfig, startValue, endValue) ||\n      // Other non-TimePicker compare date\n      picker !== 'week' && picker !== 'quarter' && picker !== 'time' && !isSameDate(generateConfig, startValue, endValue)) {\n        // Clean up end date when start date is after end date\n        if (sourceIndex === 0) {\n          values = [startValue, null];\n          endValue = null;\n        } else {\n          startValue = null;\n          values = [null, endValue];\n        }\n        // Clean up cache since invalidate\n        openRecordsRef.current = _defineProperty({}, sourceIndex, true);\n      } else if (picker !== 'time' || order !== false) {\n        // Reorder when in same date\n        values = reorderValues(values, generateConfig);\n      }\n    }\n    setSelectedValue(values);\n    var startStr = values && values[0] ? formatValue(values[0], {\n      generateConfig: generateConfig,\n      locale: locale,\n      format: formatList[0]\n    }) : '';\n    var endStr = values && values[1] ? formatValue(values[1], {\n      generateConfig: generateConfig,\n      locale: locale,\n      format: formatList[0]\n    }) : '';\n    if (onCalendarChange) {\n      var info = {\n        range: sourceIndex === 0 ? 'start' : 'end'\n      };\n      onCalendarChange(values, [startStr, endStr], info);\n    }\n    // >>>>> Trigger `onChange` event\n    var canStartValueTrigger = canValueTrigger(startValue, 0, mergedDisabled, allowEmpty);\n    var canEndValueTrigger = canValueTrigger(endValue, 1, mergedDisabled, allowEmpty);\n    var canTrigger = values === null || canStartValueTrigger && canEndValueTrigger;\n    if (canTrigger) {\n      // Trigger onChange only when value is validate\n      setInnerValue(values);\n      if (onChange && (!isEqual(generateConfig, getValue(mergedValue, 0), startValue) || !isEqual(generateConfig, getValue(mergedValue, 1), endValue))) {\n        onChange(values, [startStr, endStr]);\n      }\n    }\n    // >>>>> Open picker when\n    // Always open another picker if possible\n    var nextOpenIndex = null;\n    if (sourceIndex === 0 && !mergedDisabled[1]) {\n      nextOpenIndex = 1;\n    } else if (sourceIndex === 1 && !mergedDisabled[0]) {\n      nextOpenIndex = 0;\n    }\n    if (nextOpenIndex !== null && nextOpenIndex !== mergedActivePickerIndex && (!openRecordsRef.current[nextOpenIndex] || !getValue(values, nextOpenIndex)) && getValue(values, sourceIndex)) {\n      // Delay to focus to avoid input blur trigger expired selectedValues\n      triggerOpenAndFocus(nextOpenIndex);\n    } else {\n      _triggerOpen(false, sourceIndex);\n    }\n  }\n  var forwardKeyDown = function forwardKeyDown(e) {\n    if (mergedOpen && operationRef.current && operationRef.current.onKeyDown) {\n      // Let popup panel handle keyboard\n      return operationRef.current.onKeyDown(e);\n    }\n    /* istanbul ignore next */\n    /* eslint-disable no-lone-blocks */\n    {\n      warning(false, 'Picker not correct forward KeyDown operation. Please help to fire issue about this.');\n      return false;\n    }\n  };\n  // ============================= Text ==============================\n  var sharedTextHooksProps = {\n    formatList: formatList,\n    generateConfig: generateConfig,\n    locale: locale\n  };\n  var _useValueTexts = useValueTexts(getValue(selectedValue, 0), sharedTextHooksProps),\n    _useValueTexts2 = _slicedToArray(_useValueTexts, 2),\n    startValueTexts = _useValueTexts2[0],\n    firstStartValueText = _useValueTexts2[1];\n  var _useValueTexts3 = useValueTexts(getValue(selectedValue, 1), sharedTextHooksProps),\n    _useValueTexts4 = _slicedToArray(_useValueTexts3, 2),\n    endValueTexts = _useValueTexts4[0],\n    firstEndValueText = _useValueTexts4[1];\n  var _onTextChange = function onTextChange(newText, index) {\n    var inputDate = parseValue(newText, {\n      locale: locale,\n      formatList: formatList,\n      generateConfig: generateConfig\n    });\n    var disabledFunc = index === 0 ? disabledStartDate : disabledEndDate;\n    if (inputDate && !disabledFunc(inputDate)) {\n      setSelectedValue(updateValues(selectedValue, inputDate, index));\n      setViewDate(inputDate, index);\n    }\n  };\n  var _useTextValueMapping = useTextValueMapping({\n      valueTexts: startValueTexts,\n      onTextChange: function onTextChange(newText) {\n        return _onTextChange(newText, 0);\n      }\n    }),\n    _useTextValueMapping2 = _slicedToArray(_useTextValueMapping, 3),\n    startText = _useTextValueMapping2[0],\n    triggerStartTextChange = _useTextValueMapping2[1],\n    resetStartText = _useTextValueMapping2[2];\n  var _useTextValueMapping3 = useTextValueMapping({\n      valueTexts: endValueTexts,\n      onTextChange: function onTextChange(newText) {\n        return _onTextChange(newText, 1);\n      }\n    }),\n    _useTextValueMapping4 = _slicedToArray(_useTextValueMapping3, 3),\n    endText = _useTextValueMapping4[0],\n    triggerEndTextChange = _useTextValueMapping4[1],\n    resetEndText = _useTextValueMapping4[2];\n  var _useState3 = useState(null),\n    _useState4 = _slicedToArray(_useState3, 2),\n    rangeHoverValue = _useState4[0],\n    setRangeHoverValue = _useState4[1];\n  // ========================== Hover Range ==========================\n  var _useState5 = useState(null),\n    _useState6 = _slicedToArray(_useState5, 2),\n    hoverRangedValue = _useState6[0],\n    setHoverRangedValue = _useState6[1];\n  var _useHoverValue = useHoverValue(startText, {\n      formatList: formatList,\n      generateConfig: generateConfig,\n      locale: locale\n    }),\n    _useHoverValue2 = _slicedToArray(_useHoverValue, 3),\n    startHoverValue = _useHoverValue2[0],\n    onStartEnter = _useHoverValue2[1],\n    onStartLeave = _useHoverValue2[2];\n  var _useHoverValue3 = useHoverValue(endText, {\n      formatList: formatList,\n      generateConfig: generateConfig,\n      locale: locale\n    }),\n    _useHoverValue4 = _slicedToArray(_useHoverValue3, 3),\n    endHoverValue = _useHoverValue4[0],\n    onEndEnter = _useHoverValue4[1],\n    onEndLeave = _useHoverValue4[2];\n  var onDateMouseEnter = function onDateMouseEnter(date) {\n    setHoverRangedValue(updateValues(selectedValue, date, mergedActivePickerIndex));\n    if (mergedActivePickerIndex === 0) {\n      onStartEnter(date);\n    } else {\n      onEndEnter(date);\n    }\n  };\n  var onDateMouseLeave = function onDateMouseLeave() {\n    setHoverRangedValue(updateValues(selectedValue, null, mergedActivePickerIndex));\n    if (mergedActivePickerIndex === 0) {\n      onStartLeave();\n    } else {\n      onEndLeave();\n    }\n  };\n  // ============================= Input =============================\n  var getSharedInputHookProps = function getSharedInputHookProps(index, resetText) {\n    return {\n      blurToCancel: needConfirmButton,\n      forwardKeyDown: forwardKeyDown,\n      onBlur: onBlur,\n      isClickOutside: function isClickOutside(target) {\n        return !elementsContains([panelDivRef.current, startInputDivRef.current, endInputDivRef.current, containerRef.current], target);\n      },\n      onFocus: function onFocus(e) {\n        setMergedActivePickerIndex(index);\n        if (_onFocus) {\n          _onFocus(e);\n        }\n      },\n      triggerOpen: function triggerOpen(newOpen) {\n        _triggerOpen(newOpen, index);\n      },\n      onSubmit: function onSubmit() {\n        if (\n        // When user typing disabledDate with keyboard and enter, this value will be empty\n        !selectedValue ||\n        // Normal disabled check\n        disabledDate && disabledDate(selectedValue[index])) {\n          return false;\n        }\n        triggerChange(selectedValue, index);\n        resetText();\n      },\n      onCancel: function onCancel() {\n        _triggerOpen(false, index);\n        setSelectedValue(mergedValue);\n        resetText();\n      }\n    };\n  };\n  var currentFocusedKey = useRef('');\n  var _usePickerInput = usePickerInput(_objectSpread(_objectSpread({}, getSharedInputHookProps(0, resetStartText)), {}, {\n      open: startOpen,\n      value: startText,\n      currentFocusedKey: currentFocusedKey,\n      key: 'start',\n      onKeyDown: function onKeyDown(e, preventDefault) {\n        _onKeyDown === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(e, preventDefault);\n      }\n    })),\n    _usePickerInput2 = _slicedToArray(_usePickerInput, 2),\n    startInputProps = _usePickerInput2[0],\n    _usePickerInput2$ = _usePickerInput2[1],\n    startFocused = _usePickerInput2$.focused,\n    startTyping = _usePickerInput2$.typing;\n  var _usePickerInput3 = usePickerInput(_objectSpread(_objectSpread({}, getSharedInputHookProps(1, resetEndText)), {}, {\n      open: endOpen,\n      value: endText,\n      currentFocusedKey: currentFocusedKey,\n      key: 'end',\n      onKeyDown: function onKeyDown(e, preventDefault) {\n        _onKeyDown === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(e, preventDefault);\n      }\n    })),\n    _usePickerInput4 = _slicedToArray(_usePickerInput3, 2),\n    endInputProps = _usePickerInput4[0],\n    _usePickerInput4$ = _usePickerInput4[1],\n    endFocused = _usePickerInput4$.focused,\n    endTyping = _usePickerInput4$.typing;\n  // ========================== Click Picker ==========================\n  var onPickerClick = function onPickerClick(e) {\n    // When click inside the picker & outside the picker's input elements\n    // the panel should still be opened\n    if (onClick) {\n      onClick(e);\n    }\n    if (!mergedOpen && !startInputRef.current.contains(e.target) && !endInputRef.current.contains(e.target)) {\n      if (!mergedDisabled[0]) {\n        triggerOpenAndFocus(0);\n      } else if (!mergedDisabled[1]) {\n        triggerOpenAndFocus(1);\n      }\n    }\n  };\n  var onPickerMouseDown = function onPickerMouseDown(e) {\n    // shouldn't affect input elements if picker is active\n    if (onMouseDown) {\n      onMouseDown(e);\n    }\n    if (mergedOpen && (startFocused || endFocused) && !startInputRef.current.contains(e.target) && !endInputRef.current.contains(e.target)) {\n      e.preventDefault();\n    }\n  };\n  // ============================= Sync ==============================\n  // Close should sync back with text value\n  var startStr = mergedValue && mergedValue[0] ? formatValue(mergedValue[0], {\n    locale: locale,\n    format: 'YYYYMMDDHHmmss',\n    generateConfig: generateConfig\n  }) : '';\n  var endStr = mergedValue && mergedValue[1] ? formatValue(mergedValue[1], {\n    locale: locale,\n    format: 'YYYYMMDDHHmmss',\n    generateConfig: generateConfig\n  }) : '';\n  useEffect(function () {\n    if (!mergedOpen) {\n      setSelectedValue(mergedValue);\n      if (!startValueTexts.length || startValueTexts[0] === '') {\n        triggerStartTextChange('');\n      } else if (firstStartValueText !== startText) {\n        resetStartText();\n      }\n      if (!endValueTexts.length || endValueTexts[0] === '') {\n        triggerEndTextChange('');\n      } else if (firstEndValueText !== endText) {\n        resetEndText();\n      }\n    }\n  }, [mergedOpen, startValueTexts, endValueTexts]);\n  // Sync innerValue with control mode\n  useEffect(function () {\n    setSelectedValue(mergedValue);\n  }, [startStr, endStr]);\n  // ============================ Warning ============================\n  if (process.env.NODE_ENV !== 'production') {\n    if (value && Array.isArray(disabled) && (getValue(disabled, 0) && !getValue(value, 0) || getValue(disabled, 1) && !getValue(value, 1))) {\n      warning(false, '`disabled` should not set with empty `value`. You should set `allowEmpty` or `value` instead.');\n    }\n  }\n  // ============================ Private ============================\n  if (pickerRef) {\n    pickerRef.current = {\n      focus: function focus() {\n        if (startInputRef.current) {\n          startInputRef.current.focus();\n        }\n      },\n      blur: function blur() {\n        if (startInputRef.current) {\n          startInputRef.current.blur();\n        }\n        if (endInputRef.current) {\n          endInputRef.current.blur();\n        }\n      }\n    };\n  }\n  // ============================ Ranges =============================\n  var rangeLabels = Object.keys(ranges || {});\n  var rangeList = rangeLabels.map(function (label) {\n    var range = ranges[label];\n    var newValues = typeof range === 'function' ? range() : range;\n    return {\n      label: label,\n      onClick: function onClick() {\n        triggerChange(newValues, null);\n        _triggerOpen(false, mergedActivePickerIndex);\n      },\n      onMouseEnter: function onMouseEnter() {\n        setRangeHoverValue(newValues);\n      },\n      onMouseLeave: function onMouseLeave() {\n        setRangeHoverValue(null);\n      }\n    };\n  });\n  // ============================= Panel =============================\n  function renderPanel() {\n    var panelPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var panelProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var panelHoverRangedValue = null;\n    if (mergedOpen && hoverRangedValue && hoverRangedValue[0] && hoverRangedValue[1] && generateConfig.isAfter(hoverRangedValue[1], hoverRangedValue[0])) {\n      panelHoverRangedValue = hoverRangedValue;\n    }\n    var panelShowTime = showTime;\n    if (showTime && _typeof(showTime) === 'object' && showTime.defaultValue) {\n      var timeDefaultValues = showTime.defaultValue;\n      panelShowTime = _objectSpread(_objectSpread({}, showTime), {}, {\n        defaultValue: getValue(timeDefaultValues, mergedActivePickerIndex) || undefined\n      });\n    }\n    var panelDateRender = null;\n    if (dateRender) {\n      panelDateRender = function panelDateRender(date, today) {\n        return dateRender(date, today, {\n          range: mergedActivePickerIndex ? 'end' : 'start'\n        });\n      };\n    }\n    return /*#__PURE__*/React.createElement(RangeContext.Provider, {\n      value: {\n        inRange: true,\n        panelPosition: panelPosition,\n        rangedValue: rangeHoverValue || selectedValue,\n        hoverRangedValue: panelHoverRangedValue\n      }\n    }, /*#__PURE__*/React.createElement(PickerPanel, _extends({}, props, panelProps, {\n      dateRender: panelDateRender,\n      showTime: panelShowTime,\n      mode: mergedModes[mergedActivePickerIndex],\n      generateConfig: generateConfig,\n      style: undefined,\n      direction: direction,\n      disabledDate: mergedActivePickerIndex === 0 ? disabledStartDate : disabledEndDate,\n      disabledTime: function disabledTime(date) {\n        if (_disabledTime) {\n          return _disabledTime(date, mergedActivePickerIndex === 0 ? 'start' : 'end');\n        }\n        return false;\n      },\n      className: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-panel-focused\"), mergedActivePickerIndex === 0 ? !startTyping : !endTyping)),\n      value: getValue(selectedValue, mergedActivePickerIndex),\n      locale: locale,\n      tabIndex: -1,\n      onPanelChange: function onPanelChange(date, newMode) {\n        // clear hover value when panel change\n        if (mergedActivePickerIndex === 0) {\n          onStartLeave(true);\n        }\n        if (mergedActivePickerIndex === 1) {\n          onEndLeave(true);\n        }\n        triggerModesChange(updateValues(mergedModes, newMode, mergedActivePickerIndex), updateValues(selectedValue, date, mergedActivePickerIndex));\n        var viewDate = date;\n        if (panelPosition === 'right' && mergedModes[mergedActivePickerIndex] === newMode) {\n          viewDate = getClosingViewDate(viewDate, newMode, generateConfig, -1);\n        }\n        setViewDate(viewDate, mergedActivePickerIndex);\n      },\n      onOk: null,\n      onSelect: undefined,\n      onChange: undefined,\n      defaultValue: mergedActivePickerIndex === 0 ? getValue(selectedValue, 1) : getValue(selectedValue, 0)\n    })));\n  }\n  var arrowLeft = 0;\n  var panelLeft = 0;\n  if (mergedActivePickerIndex && startInputDivRef.current && separatorRef.current && panelDivRef.current) {\n    // Arrow offset\n    arrowLeft = startInputDivRef.current.offsetWidth + separatorRef.current.offsetWidth;\n    // If panelWidth - arrowWidth - arrowMarginLeft < arrowLeft, panel should move to right side.\n    // If arrowOffsetLeft > arrowLeft, arrowMarginLeft = arrowOffsetLeft - arrowLeft\n    var arrowMarginLeft = arrowRef.current.offsetLeft > arrowLeft ? arrowRef.current.offsetLeft - arrowLeft : arrowRef.current.offsetLeft;\n    if (panelDivRef.current.offsetWidth && arrowRef.current.offsetWidth && arrowLeft > panelDivRef.current.offsetWidth - arrowRef.current.offsetWidth - (direction === 'rtl' ? 0 : arrowMarginLeft)) {\n      panelLeft = arrowLeft;\n    }\n  }\n  var arrowPositionStyle = direction === 'rtl' ? {\n    right: arrowLeft\n  } : {\n    left: arrowLeft\n  };\n  function renderPanels() {\n    var panels;\n    var extraNode = getExtraFooter(prefixCls, mergedModes[mergedActivePickerIndex], renderExtraFooter);\n    var rangesNode = getRanges({\n      prefixCls: prefixCls,\n      components: components,\n      needConfirmButton: needConfirmButton,\n      okDisabled: !getValue(selectedValue, mergedActivePickerIndex) || disabledDate && disabledDate(selectedValue[mergedActivePickerIndex]),\n      locale: locale,\n      rangeList: rangeList,\n      onOk: function onOk() {\n        if (getValue(selectedValue, mergedActivePickerIndex)) {\n          // triggerChangeOld(selectedValue);\n          triggerChange(selectedValue, mergedActivePickerIndex);\n          if (_onOk) {\n            _onOk(selectedValue);\n          }\n        }\n      }\n    });\n    if (picker !== 'time' && !showTime) {\n      var viewDate = getViewDate(mergedActivePickerIndex);\n      var nextViewDate = getClosingViewDate(viewDate, picker, generateConfig);\n      var currentMode = mergedModes[mergedActivePickerIndex];\n      var showDoublePanel = currentMode === picker;\n      var leftPanel = renderPanel(showDoublePanel ? 'left' : false, {\n        pickerValue: viewDate,\n        onPickerValueChange: function onPickerValueChange(newViewDate) {\n          setViewDate(newViewDate, mergedActivePickerIndex);\n        }\n      });\n      var rightPanel = renderPanel('right', {\n        pickerValue: nextViewDate,\n        onPickerValueChange: function onPickerValueChange(newViewDate) {\n          setViewDate(getClosingViewDate(newViewDate, picker, generateConfig, -1), mergedActivePickerIndex);\n        }\n      });\n      if (direction === 'rtl') {\n        panels = /*#__PURE__*/React.createElement(React.Fragment, null, rightPanel, showDoublePanel && leftPanel);\n      } else {\n        panels = /*#__PURE__*/React.createElement(React.Fragment, null, leftPanel, showDoublePanel && rightPanel);\n      }\n    } else {\n      panels = renderPanel();\n    }\n    var mergedNodes = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(prefixCls, \"-panels\")\n    }, panels), (extraNode || rangesNode) && /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(prefixCls, \"-footer\")\n    }, extraNode, rangesNode));\n    if (panelRender) {\n      mergedNodes = panelRender(mergedNodes);\n    }\n    return /*#__PURE__*/React.createElement(\"div\", {\n      className: \"\".concat(prefixCls, \"-panel-container\"),\n      style: {\n        marginLeft: panelLeft\n      },\n      ref: panelDivRef,\n      onMouseDown: function onMouseDown(e) {\n        e.preventDefault();\n      }\n    }, mergedNodes);\n  }\n  var rangePanel = /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-range-wrapper\"), \"\".concat(prefixCls, \"-\").concat(picker, \"-range-wrapper\")),\n    style: {\n      minWidth: popupMinWidth\n    }\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    ref: arrowRef,\n    className: \"\".concat(prefixCls, \"-range-arrow\"),\n    style: arrowPositionStyle\n  }), renderPanels());\n  // ============================= Icons =============================\n  var suffixNode;\n  if (suffixIcon) {\n    suffixNode = /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(prefixCls, \"-suffix\")\n    }, suffixIcon);\n  }\n  var clearNode;\n  if (allowClear && (getValue(mergedValue, 0) && !mergedDisabled[0] || getValue(mergedValue, 1) && !mergedDisabled[1])) {\n    clearNode = /*#__PURE__*/React.createElement(\"span\", {\n      onMouseDown: function onMouseDown(e) {\n        e.preventDefault();\n        e.stopPropagation();\n      },\n      onMouseUp: function onMouseUp(e) {\n        e.preventDefault();\n        e.stopPropagation();\n        var values = mergedValue;\n        if (!mergedDisabled[0]) {\n          values = updateValues(values, null, 0);\n        }\n        if (!mergedDisabled[1]) {\n          values = updateValues(values, null, 1);\n        }\n        triggerChange(values, null);\n        _triggerOpen(false, mergedActivePickerIndex);\n      },\n      className: \"\".concat(prefixCls, \"-clear\")\n    }, clearIcon || /*#__PURE__*/React.createElement(\"span\", {\n      className: \"\".concat(prefixCls, \"-clear-btn\")\n    }));\n  }\n  var inputSharedProps = {\n    size: getInputSize(picker, formatList[0], generateConfig)\n  };\n  var activeBarLeft = 0;\n  var activeBarWidth = 0;\n  if (startInputDivRef.current && endInputDivRef.current && separatorRef.current) {\n    if (mergedActivePickerIndex === 0) {\n      activeBarWidth = startInputDivRef.current.offsetWidth;\n    } else {\n      activeBarLeft = arrowLeft;\n      activeBarWidth = endInputDivRef.current.offsetWidth;\n    }\n  }\n  var activeBarPositionStyle = direction === 'rtl' ? {\n    right: activeBarLeft\n  } : {\n    left: activeBarLeft\n  };\n  // ============================ Return =============================\n  var onContextSelect = function onContextSelect(date, type) {\n    var values = updateValues(selectedValue, date, mergedActivePickerIndex);\n    if (type === 'submit' || type !== 'key' && !needConfirmButton) {\n      // triggerChange will also update selected values\n      triggerChange(values, mergedActivePickerIndex);\n      // clear hover value style\n      if (mergedActivePickerIndex === 0) {\n        onStartLeave();\n      } else {\n        onEndLeave();\n      }\n    } else {\n      setSelectedValue(values);\n    }\n  };\n  return /*#__PURE__*/React.createElement(PanelContext.Provider, {\n    value: {\n      operationRef: operationRef,\n      hideHeader: picker === 'time',\n      onDateMouseEnter: onDateMouseEnter,\n      onDateMouseLeave: onDateMouseLeave,\n      hideRanges: true,\n      onSelect: onContextSelect,\n      open: mergedOpen\n    }\n  }, /*#__PURE__*/React.createElement(PickerTrigger, {\n    visible: mergedOpen,\n    popupElement: rangePanel,\n    popupStyle: popupStyle,\n    prefixCls: prefixCls,\n    dropdownClassName: dropdownClassName,\n    dropdownAlign: dropdownAlign,\n    getPopupContainer: getPopupContainer,\n    transitionName: transitionName,\n    range: true,\n    direction: direction\n  }, /*#__PURE__*/React.createElement(\"div\", _extends({\n    ref: containerRef,\n    className: classNames(prefixCls, \"\".concat(prefixCls, \"-range\"), className, (_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-disabled\"), mergedDisabled[0] && mergedDisabled[1]), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-focused\"), mergedActivePickerIndex === 0 ? startFocused : endFocused), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _classNames2)),\n    style: style,\n    onClick: onPickerClick,\n    onMouseEnter: onMouseEnter,\n    onMouseLeave: onMouseLeave,\n    onMouseDown: onPickerMouseDown,\n    onMouseUp: onMouseUp\n  }, getDataOrAriaProps(props)), /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-input\"), (_classNames3 = {}, _defineProperty(_classNames3, \"\".concat(prefixCls, \"-input-active\"), mergedActivePickerIndex === 0), _defineProperty(_classNames3, \"\".concat(prefixCls, \"-input-placeholder\"), !!startHoverValue), _classNames3)),\n    ref: startInputDivRef\n  }, /*#__PURE__*/React.createElement(\"input\", _extends({\n    id: id,\n    disabled: mergedDisabled[0],\n    readOnly: inputReadOnly || typeof formatList[0] === 'function' || !startTyping,\n    value: startHoverValue || startText,\n    onChange: function onChange(e) {\n      triggerStartTextChange(e.target.value);\n    },\n    autoFocus: autoFocus,\n    placeholder: getValue(placeholder, 0) || '',\n    ref: startInputRef\n  }, startInputProps, inputSharedProps, {\n    autoComplete: autoComplete\n  }))), /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-range-separator\"),\n    ref: separatorRef\n  }, separator), /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-input\"), (_classNames4 = {}, _defineProperty(_classNames4, \"\".concat(prefixCls, \"-input-active\"), mergedActivePickerIndex === 1), _defineProperty(_classNames4, \"\".concat(prefixCls, \"-input-placeholder\"), !!endHoverValue), _classNames4)),\n    ref: endInputDivRef\n  }, /*#__PURE__*/React.createElement(\"input\", _extends({\n    disabled: mergedDisabled[1],\n    readOnly: inputReadOnly || typeof formatList[0] === 'function' || !endTyping,\n    value: endHoverValue || endText,\n    onChange: function onChange(e) {\n      triggerEndTextChange(e.target.value);\n    },\n    placeholder: getValue(placeholder, 1) || '',\n    ref: endInputRef\n  }, endInputProps, inputSharedProps, {\n    autoComplete: autoComplete\n  }))), /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-active-bar\"),\n    style: _objectSpread(_objectSpread({}, activeBarPositionStyle), {}, {\n      width: activeBarWidth,\n      position: 'absolute'\n    })\n  }), suffixNode, clearNode)));\n}\n// Wrap with class component to enable pass generic with instance method\nvar RangePicker = /*#__PURE__*/function (_React$Component) {\n  _inherits(RangePicker, _React$Component);\n  var _super = _createSuper(RangePicker);\n  function RangePicker() {\n    var _this;\n    _classCallCheck(this, RangePicker);\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(args));\n    _this.pickerRef = /*#__PURE__*/React.createRef();\n    _this.focus = function () {\n      if (_this.pickerRef.current) {\n        _this.pickerRef.current.focus();\n      }\n    };\n    _this.blur = function () {\n      if (_this.pickerRef.current) {\n        _this.pickerRef.current.blur();\n      }\n    };\n    return _this;\n  }\n  _createClass(RangePicker, [{\n    key: \"render\",\n    value: function render() {\n      return /*#__PURE__*/React.createElement(InnerRangePicker, _extends({}, this.props, {\n        pickerRef: this.pickerRef\n      }));\n    }\n  }]);\n  return RangePicker;\n}(React.Component);\nexport default RangePicker;","import * as React from 'react';\nimport { getValue } from '../utils/miscUtil';\nimport { isSameDate, getQuarter } from '../utils/dateUtil';\nexport default function useRangeDisabled(_ref, disabledStart, disabledEnd) {\n  var picker = _ref.picker,\n    locale = _ref.locale,\n    selectedValue = _ref.selectedValue,\n    disabledDate = _ref.disabledDate,\n    disabled = _ref.disabled,\n    generateConfig = _ref.generateConfig;\n  var startDate = getValue(selectedValue, 0);\n  var endDate = getValue(selectedValue, 1);\n  function weekFirstDate(date) {\n    return generateConfig.locale.getWeekFirstDate(locale.locale, date);\n  }\n  function monthNumber(date) {\n    var year = generateConfig.getYear(date);\n    var month = generateConfig.getMonth(date);\n    return year * 100 + month;\n  }\n  function quarterNumber(date) {\n    var year = generateConfig.getYear(date);\n    var quarter = getQuarter(generateConfig, date);\n    return year * 10 + quarter;\n  }\n  var disabledStartDate = React.useCallback(function (date) {\n    if (disabledDate && disabledDate(date)) {\n      return true;\n    }\n    // Disabled range\n    if (disabled[1] && endDate) {\n      return !isSameDate(generateConfig, date, endDate) && generateConfig.isAfter(date, endDate);\n    }\n    // Disabled part\n    if (disabledStart && endDate) {\n      switch (picker) {\n        case 'quarter':\n          return quarterNumber(date) > quarterNumber(endDate);\n        case 'month':\n          return monthNumber(date) > monthNumber(endDate);\n        case 'week':\n          return weekFirstDate(date) > weekFirstDate(endDate);\n        default:\n          return !isSameDate(generateConfig, date, endDate) && generateConfig.isAfter(date, endDate);\n      }\n    }\n    return false;\n  }, [disabledDate, disabled[1], endDate, disabledStart]);\n  var disabledEndDate = React.useCallback(function (date) {\n    if (disabledDate && disabledDate(date)) {\n      return true;\n    }\n    // Disabled range\n    if (disabled[0] && startDate) {\n      return !isSameDate(generateConfig, date, endDate) && generateConfig.isAfter(startDate, date);\n    }\n    // Disabled part\n    if (disabledEnd && startDate) {\n      switch (picker) {\n        case 'quarter':\n          return quarterNumber(date) < quarterNumber(startDate);\n        case 'month':\n          return monthNumber(date) < monthNumber(startDate);\n        case 'week':\n          return weekFirstDate(date) < weekFirstDate(startDate);\n        default:\n          return !isSameDate(generateConfig, date, startDate) && generateConfig.isAfter(startDate, date);\n      }\n    }\n    return false;\n  }, [disabledDate, disabled[0], startDate, disabledEnd]);\n  return [disabledStartDate, disabledEndDate];\n}","import Picker from './Picker';\nimport PickerPanel from './PickerPanel';\nimport RangePicker from './RangePicker';\nexport { PickerPanel, RangePicker };\nexport default Picker;","import warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nexport var HOOK_MARK = 'RC_FORM_INTERNAL_HOOKS';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar warningFunc = function warningFunc() {\n  warning(false, 'Can not find FormContext. Please make sure you wrap Field under Form.');\n};\nvar Context = /*#__PURE__*/React.createContext({\n  getFieldValue: warningFunc,\n  getFieldsValue: warningFunc,\n  getFieldError: warningFunc,\n  getFieldWarning: warningFunc,\n  getFieldsError: warningFunc,\n  isFieldsTouched: warningFunc,\n  isFieldTouched: warningFunc,\n  isFieldValidating: warningFunc,\n  isFieldsValidating: warningFunc,\n  resetFields: warningFunc,\n  setFields: warningFunc,\n  setFieldValue: warningFunc,\n  setFieldsValue: warningFunc,\n  validateFields: warningFunc,\n  submit: warningFunc,\n  getInternalHooks: function getInternalHooks() {\n    warningFunc();\n    return {\n      dispatch: warningFunc,\n      initEntityValue: warningFunc,\n      registerField: warningFunc,\n      useSubscribe: warningFunc,\n      setInitialValues: warningFunc,\n      destroyForm: warningFunc,\n      setCallbacks: warningFunc,\n      registerWatch: warningFunc,\n      getFields: warningFunc,\n      setValidateMessages: warningFunc,\n      setPreserve: warningFunc,\n      getInitialValue: warningFunc\n    };\n  }\n});\nexport default Context;","export function toArray(value) {\n  if (value === undefined || value === null) {\n    return [];\n  }\n  return Array.isArray(value) ? value : [value];\n}","/* eslint no-console:0 */\n\nimport {\n  ValidateError,\n  ValidateOption,\n  RuleValuePackage,\n  InternalRuleItem,\n  SyncErrorType,\n  RuleType,\n  Value,\n  Values,\n} from './interface';\n\nconst formatRegExp = /%[sdj%]/g;\n\ndeclare var ASYNC_VALIDATOR_NO_WARNING;\n\nexport let warning: (type: string, errors: SyncErrorType[]) => void = () => {};\n\n// don't print warning message when in production env or node runtime\nif (\n  typeof process !== 'undefined' &&\n  process.env &&\n  process.env.NODE_ENV !== 'production' &&\n  typeof window !== 'undefined' &&\n  typeof document !== 'undefined'\n) {\n  warning = (type, errors) => {\n    if (\n      typeof console !== 'undefined' &&\n      console.warn &&\n      typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined'\n    ) {\n      if (errors.every(e => typeof e === 'string')) {\n        console.warn(type, errors);\n      }\n    }\n  };\n}\n\nexport function convertFieldsError(\n  errors: ValidateError[],\n): Record<string, ValidateError[]> {\n  if (!errors || !errors.length) return null;\n  const fields = {};\n  errors.forEach(error => {\n    const field = error.field;\n    fields[field] = fields[field] || [];\n    fields[field].push(error);\n  });\n  return fields;\n}\n\nexport function format(\n  template: ((...args: any[]) => string) | string,\n  ...args: any[]\n): string {\n  let i = 0;\n  const len = args.length;\n  if (typeof template === 'function') {\n    return template.apply(null, args);\n  }\n  if (typeof template === 'string') {\n    let str = template.replace(formatRegExp, x => {\n      if (x === '%%') {\n        return '%';\n      }\n      if (i >= len) {\n        return x;\n      }\n      switch (x) {\n        case '%s':\n          return String(args[i++]);\n        case '%d':\n          return (Number(args[i++]) as unknown) as string;\n        case '%j':\n          try {\n            return JSON.stringify(args[i++]);\n          } catch (_) {\n            return '[Circular]';\n          }\n          break;\n        default:\n          return x;\n      }\n    });\n    return str;\n  }\n  return template;\n}\n\nfunction isNativeStringType(type: string) {\n  return (\n    type === 'string' ||\n    type === 'url' ||\n    type === 'hex' ||\n    type === 'email' ||\n    type === 'date' ||\n    type === 'pattern'\n  );\n}\n\nexport function isEmptyValue(value: Value, type?: string) {\n  if (value === undefined || value === null) {\n    return true;\n  }\n  if (type === 'array' && Array.isArray(value) && !value.length) {\n    return true;\n  }\n  if (isNativeStringType(type) && typeof value === 'string' && !value) {\n    return true;\n  }\n  return false;\n}\n\nexport function isEmptyObject(obj: object) {\n  return Object.keys(obj).length === 0;\n}\n\nfunction asyncParallelArray(\n  arr: RuleValuePackage[],\n  func: ValidateFunc,\n  callback: (errors: ValidateError[]) => void,\n) {\n  const results: ValidateError[] = [];\n  let total = 0;\n  const arrLength = arr.length;\n\n  function count(errors: ValidateError[]) {\n    results.push(...(errors || []));\n    total++;\n    if (total === arrLength) {\n      callback(results);\n    }\n  }\n\n  arr.forEach(a => {\n    func(a, count);\n  });\n}\n\nfunction asyncSerialArray(\n  arr: RuleValuePackage[],\n  func: ValidateFunc,\n  callback: (errors: ValidateError[]) => void,\n) {\n  let index = 0;\n  const arrLength = arr.length;\n\n  function next(errors: ValidateError[]) {\n    if (errors && errors.length) {\n      callback(errors);\n      return;\n    }\n    const original = index;\n    index = index + 1;\n    if (original < arrLength) {\n      func(arr[original], next);\n    } else {\n      callback([]);\n    }\n  }\n\n  next([]);\n}\n\nfunction flattenObjArr(objArr: Record<string, RuleValuePackage[]>) {\n  const ret: RuleValuePackage[] = [];\n  Object.keys(objArr).forEach(k => {\n    ret.push(...(objArr[k] || []));\n  });\n  return ret;\n}\n\nexport class AsyncValidationError extends Error {\n  errors: ValidateError[];\n  fields: Record<string, ValidateError[]>;\n\n  constructor(\n    errors: ValidateError[],\n    fields: Record<string, ValidateError[]>,\n  ) {\n    super('Async Validation Error');\n    this.errors = errors;\n    this.fields = fields;\n  }\n}\n\ntype ValidateFunc = (\n  data: RuleValuePackage,\n  doIt: (errors: ValidateError[]) => void,\n) => void;\n\nexport function asyncMap(\n  objArr: Record<string, RuleValuePackage[]>,\n  option: ValidateOption,\n  func: ValidateFunc,\n  callback: (errors: ValidateError[]) => void,\n  source: Values,\n): Promise<Values> {\n  if (option.first) {\n    const pending = new Promise<Values>((resolve, reject) => {\n      const next = (errors: ValidateError[]) => {\n        callback(errors);\n        return errors.length\n          ? reject(new AsyncValidationError(errors, convertFieldsError(errors)))\n          : resolve(source);\n      };\n      const flattenArr = flattenObjArr(objArr);\n      asyncSerialArray(flattenArr, func, next);\n    });\n    pending.catch(e => e);\n    return pending;\n  }\n  const firstFields =\n    option.firstFields === true\n      ? Object.keys(objArr)\n      : option.firstFields || [];\n\n  const objArrKeys = Object.keys(objArr);\n  const objArrLength = objArrKeys.length;\n  let total = 0;\n  const results: ValidateError[] = [];\n  const pending = new Promise<Values>((resolve, reject) => {\n    const next = (errors: ValidateError[]) => {\n      results.push.apply(results, errors);\n      total++;\n      if (total === objArrLength) {\n        callback(results);\n        return results.length\n          ? reject(\n              new AsyncValidationError(results, convertFieldsError(results)),\n            )\n          : resolve(source);\n      }\n    };\n    if (!objArrKeys.length) {\n      callback(results);\n      resolve(source);\n    }\n    objArrKeys.forEach(key => {\n      const arr = objArr[key];\n      if (firstFields.indexOf(key) !== -1) {\n        asyncSerialArray(arr, func, next);\n      } else {\n        asyncParallelArray(arr, func, next);\n      }\n    });\n  });\n  pending.catch(e => e);\n  return pending;\n}\n\nfunction isErrorObj(\n  obj: ValidateError | string | (() => string),\n): obj is ValidateError {\n  return !!(obj && (obj as ValidateError).message !== undefined);\n}\n\nfunction getValue(value: Values, path: string[]) {\n  let v = value;\n  for (let i = 0; i < path.length; i++) {\n    if (v == undefined) {\n      return v;\n    }\n    v = v[path[i]];\n  }\n  return v;\n}\n\nexport function complementError(rule: InternalRuleItem, source: Values) {\n  return (oe: ValidateError | (() => string) | string): ValidateError => {\n    let fieldValue;\n    if (rule.fullFields) {\n      fieldValue = getValue(source, rule.fullFields);\n    } else {\n      fieldValue = source[(oe as any).field || rule.fullField];\n    }\n    if (isErrorObj(oe)) {\n      oe.field = oe.field || rule.fullField;\n      oe.fieldValue = fieldValue;\n      return oe;\n    }\n    return {\n      message: typeof oe === 'function' ? oe() : oe,\n      fieldValue,\n      field: ((oe as unknown) as ValidateError).field || rule.fullField,\n    };\n  };\n}\n\nexport function deepMerge<T extends object>(target: T, source: Partial<T>): T {\n  if (source) {\n    for (const s in source) {\n      if (source.hasOwnProperty(s)) {\n        const value = source[s];\n        if (typeof value === 'object' && typeof target[s] === 'object') {\n          target[s] = {\n            ...target[s],\n            ...value,\n          };\n        } else {\n          target[s] = value;\n        }\n      }\n    }\n  }\n  return target;\n}\n","import { ExecuteRule } from '../interface';\nimport { format, isEmptyValue } from '../util';\n\nconst required: ExecuteRule = (rule, value, source, errors, options, type) => {\n  if (\n    rule.required &&\n    (!source.hasOwnProperty(rule.field) ||\n      isEmptyValue(value, type || rule.type))\n  ) {\n    errors.push(format(options.messages.required, rule.fullField));\n  }\n};\n\nexport default required;\n","// https://github.com/kevva/url-regex/blob/master/index.js\nlet urlReg: RegExp;\n\nexport default () => {\n  if (urlReg) {\n    return urlReg;\n  }\n\n  const word = '[a-fA-F\\\\d:]';\n  const b = options =>\n    options && options.includeBoundaries\n      ? `(?:(?<=\\\\s|^)(?=${word})|(?<=${word})(?=\\\\s|$))`\n      : '';\n\n  const v4 =\n    '(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}';\n\n  const v6seg = '[a-fA-F\\\\d]{1,4}';\n  const v6 = `\n(?:\n(?:${v6seg}:){7}(?:${v6seg}|:)|                                    // 1:2:3:4:5:6:7::  1:2:3:4:5:6:7:8\n(?:${v6seg}:){6}(?:${v4}|:${v6seg}|:)|                             // 1:2:3:4:5:6::    1:2:3:4:5:6::8   1:2:3:4:5:6::8  1:2:3:4:5:6::1.2.3.4\n(?:${v6seg}:){5}(?::${v4}|(?::${v6seg}){1,2}|:)|                   // 1:2:3:4:5::      1:2:3:4:5::7:8   1:2:3:4:5::8    1:2:3:4:5::7:1.2.3.4\n(?:${v6seg}:){4}(?:(?::${v6seg}){0,1}:${v4}|(?::${v6seg}){1,3}|:)| // 1:2:3:4::        1:2:3:4::6:7:8   1:2:3:4::8      1:2:3:4::6:7:1.2.3.4\n(?:${v6seg}:){3}(?:(?::${v6seg}){0,2}:${v4}|(?::${v6seg}){1,4}|:)| // 1:2:3::          1:2:3::5:6:7:8   1:2:3::8        1:2:3::5:6:7:1.2.3.4\n(?:${v6seg}:){2}(?:(?::${v6seg}){0,3}:${v4}|(?::${v6seg}){1,5}|:)| // 1:2::            1:2::4:5:6:7:8   1:2::8          1:2::4:5:6:7:1.2.3.4\n(?:${v6seg}:){1}(?:(?::${v6seg}){0,4}:${v4}|(?::${v6seg}){1,6}|:)| // 1::              1::3:4:5:6:7:8   1::8            1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${v6seg}){0,5}:${v4}|(?::${v6seg}){1,7}|:))             // ::2:3:4:5:6:7:8  ::2:3:4:5:6:7:8  ::8             ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})?                                             // %eth0            %1\n`\n    .replace(/\\s*\\/\\/.*$/gm, '')\n    .replace(/\\n/g, '')\n    .trim();\n\n  // Pre-compile only the exact regexes because adding a global flag make regexes stateful\n  const v46Exact = new RegExp(`(?:^${v4}$)|(?:^${v6}$)`);\n  const v4exact = new RegExp(`^${v4}$`);\n  const v6exact = new RegExp(`^${v6}$`);\n\n  const ip = options =>\n    options && options.exact\n      ? v46Exact\n      : new RegExp(\n          `(?:${b(options)}${v4}${b(options)})|(?:${b(options)}${v6}${b(\n            options,\n          )})`,\n          'g',\n        );\n\n  ip.v4 = (options?) =>\n    options && options.exact\n      ? v4exact\n      : new RegExp(`${b(options)}${v4}${b(options)}`, 'g');\n  ip.v6 = (options?) =>\n    options && options.exact\n      ? v6exact\n      : new RegExp(`${b(options)}${v6}${b(options)}`, 'g');\n\n  const protocol = `(?:(?:[a-z]+:)?//)`;\n  const auth = '(?:\\\\S+(?::\\\\S*)?@)?';\n  const ipv4 = ip.v4().source;\n  const ipv6 = ip.v6().source;\n  const host = '(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)';\n  const domain =\n    '(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*';\n  const tld = `(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))`;\n  const port = '(?::\\\\d{2,5})?';\n  const path = '(?:[/?#][^\\\\s\"]*)?';\n  const regex = `(?:${protocol}|www\\\\.)${auth}(?:localhost|${ipv4}|${ipv6}|${host}${domain}${tld})${port}${path}`;\n  urlReg = new RegExp(`(?:^${regex}$)`, 'i');\n  return urlReg;\n};\n","import { ExecuteRule, Value } from '../interface';\nimport { format } from '../util';\nimport required from './required';\nimport getUrlRegex from './url';\n/* eslint max-len:0 */\n\nconst pattern = {\n  // http://emailregex.com/\n  email: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n  // url: new RegExp(\n  //   '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?$',\n  //   'i',\n  // ),\n  hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,\n};\n\nconst types = {\n  integer(value: Value) {\n    return types.number(value) && parseInt(value, 10) === value;\n  },\n  float(value: Value) {\n    return types.number(value) && !types.integer(value);\n  },\n  array(value: Value) {\n    return Array.isArray(value);\n  },\n  regexp(value: Value) {\n    if (value instanceof RegExp) {\n      return true;\n    }\n    try {\n      return !!new RegExp(value);\n    } catch (e) {\n      return false;\n    }\n  },\n  date(value: Value) {\n    return (\n      typeof value.getTime === 'function' &&\n      typeof value.getMonth === 'function' &&\n      typeof value.getYear === 'function' &&\n      !isNaN(value.getTime())\n    );\n  },\n  number(value: Value) {\n    if (isNaN(value)) {\n      return false;\n    }\n    return typeof value === 'number';\n  },\n  object(value: Value) {\n    return typeof value === 'object' && !types.array(value);\n  },\n  method(value: Value) {\n    return typeof value === 'function';\n  },\n  email(value: Value) {\n    return (\n      typeof value === 'string' &&\n      value.length <= 320 &&\n      !!value.match(pattern.email)\n    );\n  },\n  url(value: Value) {\n    return (\n      typeof value === 'string' &&\n      value.length <= 2048 &&\n      !!value.match(getUrlRegex())\n    );\n  },\n  hex(value: Value) {\n    return typeof value === 'string' && !!value.match(pattern.hex);\n  },\n};\n\nconst type: ExecuteRule = (rule, value, source, errors, options) => {\n  if (rule.required && value === undefined) {\n    required(rule, value, source, errors, options);\n    return;\n  }\n  const custom = [\n    'integer',\n    'float',\n    'array',\n    'regexp',\n    'object',\n    'method',\n    'email',\n    'number',\n    'date',\n    'url',\n    'hex',\n  ];\n  const ruleType = rule.type;\n  if (custom.indexOf(ruleType) > -1) {\n    if (!types[ruleType](value)) {\n      errors.push(\n        format(options.messages.types[ruleType], rule.fullField, rule.type),\n      );\n    }\n    // straight typeof check\n  } else if (ruleType && typeof value !== rule.type) {\n    errors.push(\n      format(options.messages.types[ruleType], rule.fullField, rule.type),\n    );\n  }\n};\n\nexport default type;\n","import { ExecuteRule } from '../interface';\nimport { format } from '../util';\n\nconst ENUM = 'enum' as const;\n\nconst enumerable: ExecuteRule = (rule, value, source, errors, options) => {\n  rule[ENUM] = Array.isArray(rule[ENUM]) ? rule[ENUM] : [];\n  if (rule[ENUM].indexOf(value) === -1) {\n    errors.push(\n      format(options.messages[ENUM], rule.fullField, rule[ENUM].join(', ')),\n    );\n  }\n};\n\nexport default enumerable;\n","import required from './required';\nimport whitespace from './whitespace';\nimport type from './type';\nimport range from './range';\nimport enumRule from './enum';\nimport pattern from './pattern';\n\nexport default {\n  required,\n  whitespace,\n  type,\n  range,\n  enum: enumRule,\n  pattern,\n};\n","import { ExecuteRule } from '../interface';\nimport { format } from '../util';\n\n/**\n *  Rule for validating whitespace.\n *\n *  @param rule The validation rule.\n *  @param value The value of the field on the source object.\n *  @param source The source object being validated.\n *  @param errors An array of errors that this rule may add\n *  validation errors to.\n *  @param options The validation options.\n *  @param options.messages The validation messages.\n */\nconst whitespace: ExecuteRule = (rule, value, source, errors, options) => {\n  if (/^\\s+$/.test(value) || value === '') {\n    errors.push(format(options.messages.whitespace, rule.fullField));\n  }\n};\n\nexport default whitespace;\n","import { ExecuteRule } from '../interface';\nimport { format } from '../util';\n\nconst range: ExecuteRule = (rule, value, source, errors, options) => {\n  const len = typeof rule.len === 'number';\n  const min = typeof rule.min === 'number';\n  const max = typeof rule.max === 'number';\n  // 正则匹配码点范围从U+010000一直到U+10FFFF的文字(补充平面Supplementary Plane)\n  const spRegexp = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n  let val = value;\n  let key = null;\n  const num = typeof value === 'number';\n  const str = typeof value === 'string';\n  const arr = Array.isArray(value);\n  if (num) {\n    key = 'number';\n  } else if (str) {\n    key = 'string';\n  } else if (arr) {\n    key = 'array';\n  }\n  // if the value is not of a supported type for range validation\n  // the validation rule rule should use the\n  // type property to also test for a particular type\n  if (!key) {\n    return false;\n  }\n  if (arr) {\n    val = value.length;\n  }\n  if (str) {\n    // 处理码点大于U+010000的文字length属性不准确的bug,如\"𠮷𠮷𠮷\".lenght !== 3\n    val = value.replace(spRegexp, '_').length;\n  }\n  if (len) {\n    if (val !== rule.len) {\n      errors.push(format(options.messages[key].len, rule.fullField, rule.len));\n    }\n  } else if (min && !max && val < rule.min) {\n    errors.push(format(options.messages[key].min, rule.fullField, rule.min));\n  } else if (max && !min && val > rule.max) {\n    errors.push(format(options.messages[key].max, rule.fullField, rule.max));\n  } else if (min && max && (val < rule.min || val > rule.max)) {\n    errors.push(\n      format(options.messages[key].range, rule.fullField, rule.min, rule.max),\n    );\n  }\n};\n\nexport default range;\n","import { ExecuteRule } from '../interface';\nimport { format } from '../util';\n\nconst pattern: ExecuteRule = (rule, value, source, errors, options) => {\n  if (rule.pattern) {\n    if (rule.pattern instanceof RegExp) {\n      // if a RegExp instance is passed, reset `lastIndex` in case its `global`\n      // flag is accidentally set to `true`, which in a validation scenario\n      // is not necessary and the result might be misleading\n      rule.pattern.lastIndex = 0;\n      if (!rule.pattern.test(value)) {\n        errors.push(\n          format(\n            options.messages.pattern.mismatch,\n            rule.fullField,\n            value,\n            rule.pattern,\n          ),\n        );\n      }\n    } else if (typeof rule.pattern === 'string') {\n      const _pattern = new RegExp(rule.pattern);\n      if (!_pattern.test(value)) {\n        errors.push(\n          format(\n            options.messages.pattern.mismatch,\n            rule.fullField,\n            value,\n            rule.pattern,\n          ),\n        );\n      }\n    }\n  }\n};\n\nexport default pattern;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst type: ExecuteValidator = (rule, value, callback, source, options) => {\n  const ruleType = rule.type;\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if (isEmptyValue(value, ruleType) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options, ruleType);\n    if (!isEmptyValue(value, ruleType)) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\n\nexport default type;\n","import string from './string';\nimport method from './method';\nimport number from './number';\nimport boolean from './boolean';\nimport regexp from './regexp';\nimport integer from './integer';\nimport float from './float';\nimport array from './array';\nimport object from './object';\nimport enumValidator from './enum';\nimport pattern from './pattern';\nimport date from './date';\nimport required from './required';\nimport type from './type';\nimport any from './any';\n\nexport default {\n  string,\n  method,\n  number,\n  boolean,\n  regexp,\n  integer,\n  float,\n  array,\n  object,\n  enum: enumValidator,\n  pattern,\n  date,\n  url: type,\n  hex: type,\n  email: type,\n  required,\n  any,\n};\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst string: ExecuteValidator = (rule, value, callback, source, options) => {\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if (isEmptyValue(value, 'string') && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options, 'string');\n    if (!isEmptyValue(value, 'string')) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n      rules.pattern(rule, value, source, errors, options);\n      if (rule.whitespace === true) {\n        rules.whitespace(rule, value, source, errors, options);\n      }\n    }\n  }\n  callback(errors);\n};\n\nexport default string;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst method: ExecuteValidator = (rule, value, callback, source, options) => {\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\n\nexport default method;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst number: ExecuteValidator = (rule, value, callback, source, options) => {\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if (value === '') {\n      value = undefined;\n    }\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\n\nexport default number;\n","import { isEmptyValue } from '../util';\nimport rules from '../rule';\nimport { ExecuteValidator } from '../interface';\n\nconst boolean: ExecuteValidator = (rule, value, callback, source, options) => {\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\n\nexport default boolean;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst regexp: ExecuteValidator = (rule, value, callback, source, options) => {\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (!isEmptyValue(value)) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\n\nexport default regexp;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst integer: ExecuteValidator = (rule, value, callback, source, options) => {\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\n\nexport default integer;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst floatFn: ExecuteValidator = (rule, value, callback, source, options) => {\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\n\nexport default floatFn;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule/index';\n\nconst array: ExecuteValidator = (rule, value, callback, source, options) => {\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if ((value === undefined || value === null) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options, 'array');\n    if (value !== undefined && value !== null) {\n      rules.type(rule, value, source, errors, options);\n      rules.range(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\n\nexport default array;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst object: ExecuteValidator = (rule, value, callback, source, options) => {\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules.type(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\n\nexport default object;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst ENUM = 'enum' as const;\n\nconst enumerable: ExecuteValidator = (\n  rule,\n  value,\n  callback,\n  source,\n  options,\n) => {\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (value !== undefined) {\n      rules[ENUM](rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\n\nexport default enumerable;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst pattern: ExecuteValidator = (rule, value, callback, source, options) => {\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if (isEmptyValue(value, 'string') && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (!isEmptyValue(value, 'string')) {\n      rules.pattern(rule, value, source, errors, options);\n    }\n  }\n  callback(errors);\n};\n\nexport default pattern;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst date: ExecuteValidator = (rule, value, callback, source, options) => {\n  // console.log('integer rule called %j', rule);\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  // console.log('validate on %s value', value);\n  if (validate) {\n    if (isEmptyValue(value, 'date') && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n    if (!isEmptyValue(value, 'date')) {\n      let dateObject;\n\n      if (value instanceof Date) {\n        dateObject = value;\n      } else {\n        dateObject = new Date(value);\n      }\n\n      rules.type(rule, dateObject, source, errors, options);\n      if (dateObject) {\n        rules.range(rule, dateObject.getTime(), source, errors, options);\n      }\n    }\n  }\n  callback(errors);\n};\n\nexport default date;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\n\nconst required: ExecuteValidator = (rule, value, callback, source, options) => {\n  const errors: string[] = [];\n  const type = Array.isArray(value) ? 'array' : typeof value;\n  rules.required(rule, value, source, errors, options, type);\n  callback(errors);\n};\n\nexport default required;\n","import { ExecuteValidator } from '../interface';\nimport rules from '../rule';\nimport { isEmptyValue } from '../util';\n\nconst any: ExecuteValidator = (rule, value, callback, source, options) => {\n  const errors: string[] = [];\n  const validate =\n    rule.required || (!rule.required && source.hasOwnProperty(rule.field));\n  if (validate) {\n    if (isEmptyValue(value) && !rule.required) {\n      return callback();\n    }\n    rules.required(rule, value, source, errors, options);\n  }\n  callback(errors);\n};\n\nexport default any;\n","import { InternalValidateMessages } from './interface';\n\nexport function newMessages(): InternalValidateMessages {\n  return {\n    default: 'Validation error on field %s',\n    required: '%s is required',\n    enum: '%s must be one of %s',\n    whitespace: '%s cannot be empty',\n    date: {\n      format: '%s date %s is invalid for format %s',\n      parse: '%s date could not be parsed, %s is invalid ',\n      invalid: '%s date %s is invalid',\n    },\n    types: {\n      string: '%s is not a %s',\n      method: '%s is not a %s (function)',\n      array: '%s is not an %s',\n      object: '%s is not an %s',\n      number: '%s is not a %s',\n      date: '%s is not a %s',\n      boolean: '%s is not a %s',\n      integer: '%s is not an %s',\n      float: '%s is not a %s',\n      regexp: '%s is not a valid %s',\n      email: '%s is not a valid %s',\n      url: '%s is not a valid %s',\n      hex: '%s is not a valid %s',\n    },\n    string: {\n      len: '%s must be exactly %s characters',\n      min: '%s must be at least %s characters',\n      max: '%s cannot be longer than %s characters',\n      range: '%s must be between %s and %s characters',\n    },\n    number: {\n      len: '%s must equal %s',\n      min: '%s cannot be less than %s',\n      max: '%s cannot be greater than %s',\n      range: '%s must be between %s and %s',\n    },\n    array: {\n      len: '%s must be exactly %s in length',\n      min: '%s cannot be less than %s in length',\n      max: '%s cannot be greater than %s in length',\n      range: '%s must be between %s and %s in length',\n    },\n    pattern: {\n      mismatch: '%s value %s does not match pattern %s',\n    },\n    clone() {\n      const cloned = JSON.parse(JSON.stringify(this));\n      cloned.clone = this.clone;\n      return cloned;\n    },\n  };\n}\n\nexport const messages = newMessages();\n","import {\n  format,\n  complementError,\n  asyncMap,\n  warning,\n  deepMerge,\n  convertFieldsError,\n} from './util';\nimport validators from './validator/index';\nimport { messages as defaultMessages, newMessages } from './messages';\nimport {\n  InternalRuleItem,\n  InternalValidateMessages,\n  Rule,\n  RuleItem,\n  Rules,\n  ValidateCallback,\n  ValidateMessages,\n  ValidateOption,\n  Values,\n  RuleValuePackage,\n  ValidateError,\n  ValidateFieldsError,\n  SyncErrorType,\n  ValidateResult,\n} from './interface';\n\nexport * from './interface';\n\n/**\n *  Encapsulates a validation schema.\n *\n *  @param descriptor An object declaring validation rules\n *  for this schema.\n */\nclass Schema {\n  // ========================= Static =========================\n  static register = function register(type: string, validator) {\n    if (typeof validator !== 'function') {\n      throw new Error(\n        'Cannot register a validator by type, validator is not a function',\n      );\n    }\n    validators[type] = validator;\n  };\n\n  static warning = warning;\n\n  static messages = defaultMessages;\n\n  static validators = validators;\n\n  // ======================== Instance ========================\n  rules: Record<string, RuleItem[]> = null;\n  _messages: InternalValidateMessages = defaultMessages;\n\n  constructor(descriptor: Rules) {\n    this.define(descriptor);\n  }\n\n  define(rules: Rules) {\n    if (!rules) {\n      throw new Error('Cannot configure a schema with no rules');\n    }\n    if (typeof rules !== 'object' || Array.isArray(rules)) {\n      throw new Error('Rules must be an object');\n    }\n    this.rules = {};\n\n    Object.keys(rules).forEach(name => {\n      const item: Rule = rules[name];\n      this.rules[name] = Array.isArray(item) ? item : [item];\n    });\n  }\n\n  messages(messages?: ValidateMessages) {\n    if (messages) {\n      this._messages = deepMerge(newMessages(), messages);\n    }\n    return this._messages;\n  }\n\n  validate(\n    source: Values,\n    option?: ValidateOption,\n    callback?: ValidateCallback,\n  ): Promise<Values>;\n  validate(source: Values, callback: ValidateCallback): Promise<Values>;\n  validate(source: Values): Promise<Values>;\n\n  validate(source_: Values, o: any = {}, oc: any = () => {}): Promise<Values> {\n    let source: Values = source_;\n    let options: ValidateOption = o;\n    let callback: ValidateCallback = oc;\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n    if (!this.rules || Object.keys(this.rules).length === 0) {\n      if (callback) {\n        callback(null, source);\n      }\n      return Promise.resolve(source);\n    }\n\n    function complete(results: (ValidateError | ValidateError[])[]) {\n      let errors: ValidateError[] = [];\n      let fields: ValidateFieldsError = {};\n\n      function add(e: ValidateError | ValidateError[]) {\n        if (Array.isArray(e)) {\n          errors = errors.concat(...e);\n        } else {\n          errors.push(e);\n        }\n      }\n\n      for (let i = 0; i < results.length; i++) {\n        add(results[i]);\n      }\n      if (!errors.length) {\n        callback(null, source);\n      } else {\n        fields = convertFieldsError(errors);\n        (callback as (\n          errors: ValidateError[],\n          fields: ValidateFieldsError,\n        ) => void)(errors, fields);\n      }\n    }\n\n    if (options.messages) {\n      let messages = this.messages();\n      if (messages === defaultMessages) {\n        messages = newMessages();\n      }\n      deepMerge(messages, options.messages);\n      options.messages = messages;\n    } else {\n      options.messages = this.messages();\n    }\n\n    const series: Record<string, RuleValuePackage[]> = {};\n    const keys = options.keys || Object.keys(this.rules);\n    keys.forEach(z => {\n      const arr = this.rules[z];\n      let value = source[z];\n      arr.forEach(r => {\n        let rule: InternalRuleItem = r;\n        if (typeof rule.transform === 'function') {\n          if (source === source_) {\n            source = { ...source };\n          }\n          value = source[z] = rule.transform(value);\n        }\n        if (typeof rule === 'function') {\n          rule = {\n            validator: rule,\n          };\n        } else {\n          rule = { ...rule };\n        }\n\n        // Fill validator. Skip if nothing need to validate\n        rule.validator = this.getValidationMethod(rule);\n        if (!rule.validator) {\n          return;\n        }\n\n        rule.field = z;\n        rule.fullField = rule.fullField || z;\n        rule.type = this.getType(rule);\n        series[z] = series[z] || [];\n        series[z].push({\n          rule,\n          value,\n          source,\n          field: z,\n        });\n      });\n    });\n    const errorFields = {};\n    return asyncMap(\n      series,\n      options,\n      (data, doIt) => {\n        const rule = data.rule;\n        let deep =\n          (rule.type === 'object' || rule.type === 'array') &&\n          (typeof rule.fields === 'object' ||\n            typeof rule.defaultField === 'object');\n        deep = deep && (rule.required || (!rule.required && data.value));\n        rule.field = data.field;\n\n        function addFullField(key: string, schema: RuleItem) {\n          return {\n            ...schema,\n            fullField: `${rule.fullField}.${key}`,\n            fullFields: rule.fullFields ? [...rule.fullFields, key] : [key],\n          };\n        }\n\n        function cb(e: SyncErrorType | SyncErrorType[] = []) {\n          let errorList = Array.isArray(e) ? e : [e];\n          if (!options.suppressWarning && errorList.length) {\n            Schema.warning('async-validator:', errorList);\n          }\n          if (errorList.length && rule.message !== undefined) {\n            errorList = [].concat(rule.message);\n          }\n\n          // Fill error info\n          let filledErrors = errorList.map(complementError(rule, source));\n\n          if (options.first && filledErrors.length) {\n            errorFields[rule.field] = 1;\n            return doIt(filledErrors);\n          }\n          if (!deep) {\n            doIt(filledErrors);\n          } else {\n            // if rule is required but the target object\n            // does not exist fail at the rule level and don't\n            // go deeper\n            if (rule.required && !data.value) {\n              if (rule.message !== undefined) {\n                filledErrors = []\n                  .concat(rule.message)\n                  .map(complementError(rule, source));\n              } else if (options.error) {\n                filledErrors = [\n                  options.error(\n                    rule,\n                    format(options.messages.required, rule.field),\n                  ),\n                ];\n              }\n              return doIt(filledErrors);\n            }\n\n            let fieldsSchema: Record<string, Rule> = {};\n            if (rule.defaultField) {\n              Object.keys(data.value).map(key => {\n                fieldsSchema[key] = rule.defaultField;\n              });\n            }\n            fieldsSchema = {\n              ...fieldsSchema,\n              ...data.rule.fields,\n            };\n\n            const paredFieldsSchema: Record<string, RuleItem[]> = {};\n\n            Object.keys(fieldsSchema).forEach(field => {\n              const fieldSchema = fieldsSchema[field];\n              const fieldSchemaList = Array.isArray(fieldSchema)\n                ? fieldSchema\n                : [fieldSchema];\n              paredFieldsSchema[field] = fieldSchemaList.map(\n                addFullField.bind(null, field),\n              );\n            });\n            const schema = new Schema(paredFieldsSchema);\n            schema.messages(options.messages);\n            if (data.rule.options) {\n              data.rule.options.messages = options.messages;\n              data.rule.options.error = options.error;\n            }\n            schema.validate(data.value, data.rule.options || options, errs => {\n              const finalErrors = [];\n              if (filledErrors && filledErrors.length) {\n                finalErrors.push(...filledErrors);\n              }\n              if (errs && errs.length) {\n                finalErrors.push(...errs);\n              }\n              doIt(finalErrors.length ? finalErrors : null);\n            });\n          }\n        }\n\n        let res: ValidateResult;\n        if (rule.asyncValidator) {\n          res = rule.asyncValidator(rule, data.value, cb, data.source, options);\n        } else if (rule.validator) {\n          try {\n            res = rule.validator(rule, data.value, cb, data.source, options);\n          } catch (error) {\n            console.error?.(error);\n            // rethrow to report error\n            if (!options.suppressValidatorError) {\n              setTimeout(() => {\n                throw error;\n              }, 0);\n            }\n            cb(error.message);\n          }\n          if (res === true) {\n            cb();\n          } else if (res === false) {\n            cb(\n              typeof rule.message === 'function'\n                ? rule.message(rule.fullField || rule.field)\n                : rule.message || `${rule.fullField || rule.field} fails`,\n            );\n          } else if (res instanceof Array) {\n            cb(res);\n          } else if (res instanceof Error) {\n            cb(res.message);\n          }\n        }\n        if (res && (res as Promise<void>).then) {\n          (res as Promise<void>).then(\n            () => cb(),\n            e => cb(e),\n          );\n        }\n      },\n      results => {\n        complete(results);\n      },\n      source,\n    );\n  }\n\n  getType(rule: InternalRuleItem) {\n    if (rule.type === undefined && rule.pattern instanceof RegExp) {\n      rule.type = 'pattern';\n    }\n    if (\n      typeof rule.validator !== 'function' &&\n      rule.type &&\n      !validators.hasOwnProperty(rule.type)\n    ) {\n      throw new Error(format('Unknown rule type %s', rule.type));\n    }\n    return rule.type || 'string';\n  }\n\n  getValidationMethod(rule: InternalRuleItem) {\n    if (typeof rule.validator === 'function') {\n      return rule.validator;\n    }\n    const keys = Object.keys(rule);\n    const messageIndex = keys.indexOf('message');\n    if (messageIndex !== -1) {\n      keys.splice(messageIndex, 1);\n    }\n    if (keys.length === 1 && keys[0] === 'required') {\n      return validators.required;\n    }\n    return validators[this.getType(rule)] || undefined;\n  }\n}\n\nexport default Schema;\n","var typeTemplate = \"'${name}' is not a valid ${type}\";\nexport var defaultValidateMessages = {\n  default: \"Validation error on field '${name}'\",\n  required: \"'${name}' is required\",\n  enum: \"'${name}' must be one of [${enum}]\",\n  whitespace: \"'${name}' cannot be empty\",\n  date: {\n    format: \"'${name}' is invalid for format date\",\n    parse: \"'${name}' could not be parsed as date\",\n    invalid: \"'${name}' is invalid date\"\n  },\n  types: {\n    string: typeTemplate,\n    method: typeTemplate,\n    array: typeTemplate,\n    object: typeTemplate,\n    number: typeTemplate,\n    date: typeTemplate,\n    boolean: typeTemplate,\n    integer: typeTemplate,\n    float: typeTemplate,\n    regexp: typeTemplate,\n    email: typeTemplate,\n    url: typeTemplate,\n    hex: typeTemplate\n  },\n  string: {\n    len: \"'${name}' must be exactly ${len} characters\",\n    min: \"'${name}' must be at least ${min} characters\",\n    max: \"'${name}' cannot be longer than ${max} characters\",\n    range: \"'${name}' must be between ${min} and ${max} characters\"\n  },\n  number: {\n    len: \"'${name}' must equal ${len}\",\n    min: \"'${name}' cannot be less than ${min}\",\n    max: \"'${name}' cannot be greater than ${max}\",\n    range: \"'${name}' must be between ${min} and ${max}\"\n  },\n  array: {\n    len: \"'${name}' must be exactly ${len} in length\",\n    min: \"'${name}' cannot be less than ${min} in length\",\n    max: \"'${name}' cannot be greater than ${max} in length\",\n    range: \"'${name}' must be between ${min} and ${max} in length\"\n  },\n  pattern: {\n    mismatch: \"'${name}' does not match pattern ${pattern}\"\n  }\n};","export default function get(entity, path) {\n  var current = entity;\n  for (var i = 0; i < path.length; i += 1) {\n    if (current === null || current === undefined) {\n      return undefined;\n    }\n    current = current[path[i]];\n  }\n  return current;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport get from \"./get\";\nfunction internalSet(entity, paths, value, removeIfUndefined) {\n  if (!paths.length) {\n    return value;\n  }\n  var _paths = _toArray(paths),\n    path = _paths[0],\n    restPath = _paths.slice(1);\n  var clone;\n  if (!entity && typeof path === 'number') {\n    clone = [];\n  } else if (Array.isArray(entity)) {\n    clone = _toConsumableArray(entity);\n  } else {\n    clone = _objectSpread({}, entity);\n  }\n\n  // Delete prop if `removeIfUndefined` and value is undefined\n  if (removeIfUndefined && value === undefined && restPath.length === 1) {\n    delete clone[path][restPath[0]];\n  } else {\n    clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined);\n  }\n  return clone;\n}\nexport default function set(entity, paths, value) {\n  var removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  // Do nothing if `removeIfUndefined` and parent object not exist\n  if (paths.length && removeIfUndefined && value === undefined && !get(entity, paths.slice(0, -1))) {\n    return entity;\n  }\n  return internalSet(entity, paths, value, removeIfUndefined);\n}\nfunction isObject(obj) {\n  return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\nfunction createEmpty(source) {\n  return Array.isArray(source) ? [] : {};\n}\n\n/**\n * Merge objects which will create\n */\nexport function merge() {\n  for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n    sources[_key] = arguments[_key];\n  }\n  var clone = createEmpty(sources[0]);\n  sources.forEach(function (src) {\n    function internalMerge(path, parentLoopSet) {\n      var loopSet = new Set(parentLoopSet);\n      var value = get(src, path);\n      var isArr = Array.isArray(value);\n      if (isArr || isObject(value)) {\n        // Only add not loop obj\n        if (!loopSet.has(value)) {\n          loopSet.add(value);\n          var originValue = get(clone, path);\n          if (isArr) {\n            // Array will always be override\n            clone = set(clone, path, []);\n          } else if (!originValue || _typeof(originValue) !== 'object') {\n            // Init container if not exist\n            clone = set(clone, path, createEmpty(value));\n          }\n          Object.keys(value).forEach(function (key) {\n            internalMerge([].concat(_toConsumableArray(path), [key]), loopSet);\n          });\n        }\n      } else {\n        clone = set(clone, path, value);\n      }\n    }\n    internalMerge([]);\n  });\n  return clone;\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 _typeof from \"@babel/runtime/helpers/esm/typeof\";\nfunction cloneDeep(val) {\n  if (Array.isArray(val)) {\n    return cloneArrayDeep(val);\n  } else if (_typeof(val) === 'object' && val !== null) {\n    return cloneObjectDeep(val);\n  }\n  return val;\n}\nfunction cloneObjectDeep(val) {\n  if (Object.getPrototypeOf(val) === Object.prototype) {\n    var res = {};\n    for (var key in val) {\n      res[key] = cloneDeep(val[key]);\n    }\n    return res;\n  }\n  return val;\n}\nfunction cloneArrayDeep(val) {\n  return val.map(function (item) {\n    return cloneDeep(item);\n  });\n}\nexport default cloneDeep;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport get from \"rc-util/es/utils/get\";\nimport set from \"rc-util/es/utils/set\";\nimport { toArray } from './typeUtil';\nimport cloneDeep from '../utils/cloneDeep';\n/**\n * Convert name to internal supported format.\n * This function should keep since we still thinking if need support like `a.b.c` format.\n * 'a' => ['a']\n * 123 => [123]\n * ['a', 123] => ['a', 123]\n */\nexport function getNamePath(path) {\n  return toArray(path);\n}\nexport function getValue(store, namePath) {\n  var value = get(store, namePath);\n  return value;\n}\nexport function setValue(store, namePath, value) {\n  var removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n  var newStore = set(store, namePath, value, removeIfUndefined);\n  return newStore;\n}\nexport function cloneByNamePathList(store, namePathList) {\n  var newStore = {};\n  namePathList.forEach(function (namePath) {\n    var value = getValue(store, namePath);\n    newStore = setValue(newStore, namePath, value);\n  });\n  return newStore;\n}\nexport function containsNamePath(namePathList, namePath) {\n  return namePathList && namePathList.some(function (path) {\n    return matchNamePath(path, namePath);\n  });\n}\nfunction isObject(obj) {\n  return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype;\n}\n/**\n * Copy values into store and return a new values object\n * ({ a: 1, b: { c: 2 } }, { a: 4, b: { d: 5 } }) => { a: 4, b: { c: 2, d: 5 } }\n */\nfunction internalSetValues(store, values) {\n  var newStore = Array.isArray(store) ? _toConsumableArray(store) : _objectSpread({}, store);\n  if (!values) {\n    return newStore;\n  }\n  Object.keys(values).forEach(function (key) {\n    var prevValue = newStore[key];\n    var value = values[key];\n    // If both are object (but target is not array), we use recursion to set deep value\n    var recursive = isObject(prevValue) && isObject(value);\n    newStore[key] = recursive ? internalSetValues(prevValue, value || {}) : cloneDeep(value); // Clone deep for arrays\n  });\n\n  return newStore;\n}\nexport function setValues(store) {\n  for (var _len = arguments.length, restValues = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    restValues[_key - 1] = arguments[_key];\n  }\n  return restValues.reduce(function (current, newStore) {\n    return internalSetValues(current, newStore);\n  }, store);\n}\nexport function matchNamePath(namePath, changedNamePath) {\n  if (!namePath || !changedNamePath || namePath.length !== changedNamePath.length) {\n    return false;\n  }\n  return namePath.every(function (nameUnit, i) {\n    return changedNamePath[i] === nameUnit;\n  });\n}\nexport function isSimilar(source, target) {\n  if (source === target) {\n    return true;\n  }\n  if (!source && target || source && !target) {\n    return false;\n  }\n  if (!source || !target || _typeof(source) !== 'object' || _typeof(target) !== 'object') {\n    return false;\n  }\n  var sourceKeys = Object.keys(source);\n  var targetKeys = Object.keys(target);\n  var keys = new Set([].concat(sourceKeys, targetKeys));\n  return _toConsumableArray(keys).every(function (key) {\n    var sourceValue = source[key];\n    var targetValue = target[key];\n    if (typeof sourceValue === 'function' && typeof targetValue === 'function') {\n      return true;\n    }\n    return sourceValue === targetValue;\n  });\n}\nexport function defaultGetValueFromEvent(valuePropName) {\n  var event = arguments.length <= 1 ? undefined : arguments[1];\n  if (event && event.target && _typeof(event.target) === 'object' && valuePropName in event.target) {\n    return event.target[valuePropName];\n  }\n  return event;\n}\n/**\n * Moves an array item from one position in an array to another.\n *\n * Note: This is a pure function so a new array will be returned, instead\n * of altering the array argument.\n *\n * @param array         Array in which to move an item.         (required)\n * @param moveIndex     The index of the item to move.          (required)\n * @param toIndex       The index to move item at moveIndex to. (required)\n */\nexport function move(array, moveIndex, toIndex) {\n  var length = array.length;\n  if (moveIndex < 0 || moveIndex >= length || toIndex < 0 || toIndex >= length) {\n    return array;\n  }\n  var item = array[moveIndex];\n  var diff = moveIndex - toIndex;\n  if (diff > 0) {\n    // move left\n    return [].concat(_toConsumableArray(array.slice(0, toIndex)), [item], _toConsumableArray(array.slice(toIndex, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, length)));\n  }\n  if (diff < 0) {\n    // move right\n    return [].concat(_toConsumableArray(array.slice(0, moveIndex)), _toConsumableArray(array.slice(moveIndex + 1, toIndex + 1)), [item], _toConsumableArray(array.slice(toIndex + 1, length)));\n  }\n  return array;\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _regeneratorRuntime from \"@babel/runtime/helpers/esm/regeneratorRuntime\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport RawAsyncValidator from 'async-validator';\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport { defaultValidateMessages } from './messages';\nimport { setValues } from './valueUtil';\n// Remove incorrect original ts define\nvar AsyncValidator = RawAsyncValidator;\n/**\n * Replace with template.\n *   `I'm ${name}` + { name: 'bamboo' } = I'm bamboo\n */\nfunction replaceMessage(template, kv) {\n  return template.replace(/\\$\\{\\w+\\}/g, function (str) {\n    var key = str.slice(2, -1);\n    return kv[key];\n  });\n}\nvar CODE_LOGIC_ERROR = 'CODE_LOGIC_ERROR';\nfunction validateRule(_x, _x2, _x3, _x4, _x5) {\n  return _validateRule.apply(this, arguments);\n}\n/**\n * We use `async-validator` to validate the value.\n * But only check one value in a time to avoid namePath validate issue.\n */\nfunction _validateRule() {\n  _validateRule = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(name, value, rule, options, messageVariables) {\n    var cloneRule, originValidator, subRuleField, validator, messages, result, subResults, kv, fillVariableResult;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          cloneRule = _objectSpread({}, rule); // Bug of `async-validator`\n          // https://github.com/react-component/field-form/issues/316\n          // https://github.com/react-component/field-form/issues/313\n          delete cloneRule.ruleIndex;\n          if (cloneRule.validator) {\n            originValidator = cloneRule.validator;\n            cloneRule.validator = function () {\n              try {\n                return originValidator.apply(void 0, arguments);\n              } catch (error) {\n                console.error(error);\n                return Promise.reject(CODE_LOGIC_ERROR);\n              }\n            };\n          }\n          // We should special handle array validate\n          subRuleField = null;\n          if (cloneRule && cloneRule.type === 'array' && cloneRule.defaultField) {\n            subRuleField = cloneRule.defaultField;\n            delete cloneRule.defaultField;\n          }\n          validator = new AsyncValidator(_defineProperty({}, name, [cloneRule]));\n          messages = setValues({}, defaultValidateMessages, options.validateMessages);\n          validator.messages(messages);\n          result = [];\n          _context2.prev = 9;\n          _context2.next = 12;\n          return Promise.resolve(validator.validate(_defineProperty({}, name, value), _objectSpread({}, options)));\n        case 12:\n          _context2.next = 17;\n          break;\n        case 14:\n          _context2.prev = 14;\n          _context2.t0 = _context2[\"catch\"](9);\n          if (_context2.t0.errors) {\n            result = _context2.t0.errors.map(function (_ref4, index) {\n              var message = _ref4.message;\n              var mergedMessage = message === CODE_LOGIC_ERROR ? messages.default : message;\n              return /*#__PURE__*/React.isValidElement(mergedMessage) ?\n              /*#__PURE__*/\n              // Wrap ReactNode with `key`\n              React.cloneElement(mergedMessage, {\n                key: \"error_\".concat(index)\n              }) : mergedMessage;\n            });\n          }\n        case 17:\n          if (!(!result.length && subRuleField)) {\n            _context2.next = 22;\n            break;\n          }\n          _context2.next = 20;\n          return Promise.all(value.map(function (subValue, i) {\n            return validateRule(\"\".concat(name, \".\").concat(i), subValue, subRuleField, options, messageVariables);\n          }));\n        case 20:\n          subResults = _context2.sent;\n          return _context2.abrupt(\"return\", subResults.reduce(function (prev, errors) {\n            return [].concat(_toConsumableArray(prev), _toConsumableArray(errors));\n          }, []));\n        case 22:\n          // Replace message with variables\n          kv = _objectSpread(_objectSpread({}, rule), {}, {\n            name: name,\n            enum: (rule.enum || []).join(', ')\n          }, messageVariables);\n          fillVariableResult = result.map(function (error) {\n            if (typeof error === 'string') {\n              return replaceMessage(error, kv);\n            }\n            return error;\n          });\n          return _context2.abrupt(\"return\", fillVariableResult);\n        case 25:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[9, 14]]);\n  }));\n  return _validateRule.apply(this, arguments);\n}\nexport function validateRules(namePath, value, rules, options, validateFirst, messageVariables) {\n  var name = namePath.join('.');\n  // Fill rule with context\n  var filledRules = rules.map(function (currentRule, ruleIndex) {\n    var originValidatorFunc = currentRule.validator;\n    var cloneRule = _objectSpread(_objectSpread({}, currentRule), {}, {\n      ruleIndex: ruleIndex\n    });\n    // Replace validator if needed\n    if (originValidatorFunc) {\n      cloneRule.validator = function (rule, val, callback) {\n        var hasPromise = false;\n        // Wrap callback only accept when promise not provided\n        var wrappedCallback = function wrappedCallback() {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n          // Wait a tick to make sure return type is a promise\n          Promise.resolve().then(function () {\n            warning(!hasPromise, 'Your validator function has already return a promise. `callback` will be ignored.');\n            if (!hasPromise) {\n              callback.apply(void 0, args);\n            }\n          });\n        };\n        // Get promise\n        var promise = originValidatorFunc(rule, val, wrappedCallback);\n        hasPromise = promise && typeof promise.then === 'function' && typeof promise.catch === 'function';\n        /**\n         * 1. Use promise as the first priority.\n         * 2. If promise not exist, use callback with warning instead\n         */\n        warning(hasPromise, '`callback` is deprecated. Please return a promise instead.');\n        if (hasPromise) {\n          promise.then(function () {\n            callback();\n          }).catch(function (err) {\n            callback(err || ' ');\n          });\n        }\n      };\n    }\n    return cloneRule;\n  }).sort(function (_ref, _ref2) {\n    var w1 = _ref.warningOnly,\n      i1 = _ref.ruleIndex;\n    var w2 = _ref2.warningOnly,\n      i2 = _ref2.ruleIndex;\n    if (!!w1 === !!w2) {\n      // Let keep origin order\n      return i1 - i2;\n    }\n    if (w1) {\n      return 1;\n    }\n    return -1;\n  });\n  // Do validate rules\n  var summaryPromise;\n  if (validateFirst === true) {\n    // >>>>> Validate by serialization\n    summaryPromise = new Promise( /*#__PURE__*/function () {\n      var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(resolve, reject) {\n        var i, rule, errors;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              i = 0;\n            case 1:\n              if (!(i < filledRules.length)) {\n                _context.next = 12;\n                break;\n              }\n              rule = filledRules[i];\n              _context.next = 5;\n              return validateRule(name, value, rule, options, messageVariables);\n            case 5:\n              errors = _context.sent;\n              if (!errors.length) {\n                _context.next = 9;\n                break;\n              }\n              reject([{\n                errors: errors,\n                rule: rule\n              }]);\n              return _context.abrupt(\"return\");\n            case 9:\n              i += 1;\n              _context.next = 1;\n              break;\n            case 12:\n              /* eslint-enable */\n              resolve([]);\n            case 13:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee);\n      }));\n      return function (_x6, _x7) {\n        return _ref3.apply(this, arguments);\n      };\n    }());\n  } else {\n    // >>>>> Validate by parallel\n    var rulePromises = filledRules.map(function (rule) {\n      return validateRule(name, value, rule, options, messageVariables).then(function (errors) {\n        return {\n          errors: errors,\n          rule: rule\n        };\n      });\n    });\n    summaryPromise = (validateFirst ? finishOnFirstFailed(rulePromises) : finishOnAllFailed(rulePromises)).then(function (errors) {\n      // Always change to rejection for Field to catch\n      return Promise.reject(errors);\n    });\n  }\n  // Internal catch error to avoid console error log.\n  summaryPromise.catch(function (e) {\n    return e;\n  });\n  return summaryPromise;\n}\nfunction finishOnAllFailed(_x8) {\n  return _finishOnAllFailed.apply(this, arguments);\n}\nfunction _finishOnAllFailed() {\n  _finishOnAllFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(rulePromises) {\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          return _context3.abrupt(\"return\", Promise.all(rulePromises).then(function (errorsList) {\n            var _ref5;\n            var errors = (_ref5 = []).concat.apply(_ref5, _toConsumableArray(errorsList));\n            return errors;\n          }));\n        case 1:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n  return _finishOnAllFailed.apply(this, arguments);\n}\nfunction finishOnFirstFailed(_x9) {\n  return _finishOnFirstFailed.apply(this, arguments);\n}\nfunction _finishOnFirstFailed() {\n  _finishOnFirstFailed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(rulePromises) {\n    var count;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          count = 0;\n          return _context4.abrupt(\"return\", new Promise(function (resolve) {\n            rulePromises.forEach(function (promise) {\n              promise.then(function (ruleError) {\n                if (ruleError.errors.length) {\n                  resolve([ruleError]);\n                }\n                count += 1;\n                if (count === rulePromises.length) {\n                  resolve([]);\n                }\n              });\n            });\n          }));\n        case 2:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n  return _finishOnFirstFailed.apply(this, arguments);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nvar _excluded = [\"name\"];\nimport toChildrenArray from \"rc-util/es/Children/toArray\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport { toArray } from './utils/typeUtil';\nimport { validateRules } from './utils/validateUtil';\nimport { containsNamePath, defaultGetValueFromEvent, getNamePath, getValue } from './utils/valueUtil';\nvar EMPTY_ERRORS = [];\nfunction requireUpdate(shouldUpdate, prev, next, prevValue, nextValue, info) {\n  if (typeof shouldUpdate === 'function') {\n    return shouldUpdate(prev, next, 'source' in info ? {\n      source: info.source\n    } : {});\n  }\n  return prevValue !== nextValue;\n}\n// We use Class instead of Hooks here since it will cost much code by using Hooks.\nvar Field = /*#__PURE__*/function (_React$Component) {\n  _inherits(Field, _React$Component);\n  var _super = _createSuper(Field);\n  /**\n   * Follow state should not management in State since it will async update by React.\n   * This makes first render of form can not get correct state value.\n   */\n\n  /**\n   * Mark when touched & validated. Currently only used for `dependencies`.\n   * Note that we do not think field with `initialValue` is dirty\n   * but this will be by `isFieldDirty` func.\n   */\n\n  // ============================== Subscriptions ==============================\n  function Field(props) {\n    var _this;\n    _classCallCheck(this, Field);\n    _this = _super.call(this, props);\n    // Register on init\n    _this.state = {\n      resetCount: 0\n    };\n    _this.cancelRegisterFunc = null;\n    _this.mounted = false;\n    _this.touched = false;\n    _this.dirty = false;\n    _this.validatePromise = null;\n    _this.prevValidating = void 0;\n    _this.errors = EMPTY_ERRORS;\n    _this.warnings = EMPTY_ERRORS;\n    _this.cancelRegister = function () {\n      var _this$props = _this.props,\n        preserve = _this$props.preserve,\n        isListField = _this$props.isListField,\n        name = _this$props.name;\n      if (_this.cancelRegisterFunc) {\n        _this.cancelRegisterFunc(isListField, preserve, getNamePath(name));\n      }\n      _this.cancelRegisterFunc = null;\n    };\n    _this.getNamePath = function () {\n      var _this$props2 = _this.props,\n        name = _this$props2.name,\n        fieldContext = _this$props2.fieldContext;\n      var _fieldContext$prefixN = fieldContext.prefixName,\n        prefixName = _fieldContext$prefixN === void 0 ? [] : _fieldContext$prefixN;\n      return name !== undefined ? [].concat(_toConsumableArray(prefixName), _toConsumableArray(name)) : [];\n    };\n    _this.getRules = function () {\n      var _this$props3 = _this.props,\n        _this$props3$rules = _this$props3.rules,\n        rules = _this$props3$rules === void 0 ? [] : _this$props3$rules,\n        fieldContext = _this$props3.fieldContext;\n      return rules.map(function (rule) {\n        if (typeof rule === 'function') {\n          return rule(fieldContext);\n        }\n        return rule;\n      });\n    };\n    _this.refresh = function () {\n      if (!_this.mounted) return;\n      /**\n       * Clean up current node.\n       */\n      _this.setState(function (_ref) {\n        var resetCount = _ref.resetCount;\n        return {\n          resetCount: resetCount + 1\n        };\n      });\n    };\n    _this.triggerMetaEvent = function (destroy) {\n      var onMetaChange = _this.props.onMetaChange;\n      onMetaChange === null || onMetaChange === void 0 ? void 0 : onMetaChange(_objectSpread(_objectSpread({}, _this.getMeta()), {}, {\n        destroy: destroy\n      }));\n    };\n    _this.onStoreChange = function (prevStore, namePathList, info) {\n      var _this$props4 = _this.props,\n        shouldUpdate = _this$props4.shouldUpdate,\n        _this$props4$dependen = _this$props4.dependencies,\n        dependencies = _this$props4$dependen === void 0 ? [] : _this$props4$dependen,\n        onReset = _this$props4.onReset;\n      var store = info.store;\n      var namePath = _this.getNamePath();\n      var prevValue = _this.getValue(prevStore);\n      var curValue = _this.getValue(store);\n      var namePathMatch = namePathList && containsNamePath(namePathList, namePath);\n      // `setFieldsValue` is a quick access to update related status\n      if (info.type === 'valueUpdate' && info.source === 'external' && prevValue !== curValue) {\n        _this.touched = true;\n        _this.dirty = true;\n        _this.validatePromise = null;\n        _this.errors = EMPTY_ERRORS;\n        _this.warnings = EMPTY_ERRORS;\n        _this.triggerMetaEvent();\n      }\n      switch (info.type) {\n        case 'reset':\n          if (!namePathList || namePathMatch) {\n            // Clean up state\n            _this.touched = false;\n            _this.dirty = false;\n            _this.validatePromise = null;\n            _this.errors = EMPTY_ERRORS;\n            _this.warnings = EMPTY_ERRORS;\n            _this.triggerMetaEvent();\n            onReset === null || onReset === void 0 ? void 0 : onReset();\n            _this.refresh();\n            return;\n          }\n          break;\n        /**\n         * In case field with `preserve = false` nest deps like:\n         * - A = 1 => show B\n         * - B = 1 => show C\n         * - Reset A, need clean B, C\n         */\n        case 'remove':\n          {\n            if (shouldUpdate) {\n              _this.reRender();\n              return;\n            }\n            break;\n          }\n        case 'setField':\n          {\n            if (namePathMatch) {\n              var data = info.data;\n              if ('touched' in data) {\n                _this.touched = data.touched;\n              }\n              if ('validating' in data && !('originRCField' in data)) {\n                _this.validatePromise = data.validating ? Promise.resolve([]) : null;\n              }\n              if ('errors' in data) {\n                _this.errors = data.errors || EMPTY_ERRORS;\n              }\n              if ('warnings' in data) {\n                _this.warnings = data.warnings || EMPTY_ERRORS;\n              }\n              _this.dirty = true;\n              _this.triggerMetaEvent();\n              _this.reRender();\n              return;\n            }\n            // Handle update by `setField` with `shouldUpdate`\n            if (shouldUpdate && !namePath.length && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n              _this.reRender();\n              return;\n            }\n            break;\n          }\n        case 'dependenciesUpdate':\n          {\n            /**\n             * Trigger when marked `dependencies` updated. Related fields will all update\n             */\n            var dependencyList = dependencies.map(getNamePath);\n            // No need for `namePathMath` check and `shouldUpdate` check, since `valueUpdate` will be\n            // emitted earlier and they will work there\n            // If set it may cause unnecessary twice rerendering\n            if (dependencyList.some(function (dependency) {\n              return containsNamePath(info.relatedFields, dependency);\n            })) {\n              _this.reRender();\n              return;\n            }\n            break;\n          }\n        default:\n          // 1. If `namePath` exists in `namePathList`, means it's related value and should update\n          //      For example <List name=\"list\"><Field name={['list', 0]}></List>\n          //      If `namePathList` is [['list']] (List value update), Field should be updated\n          //      If `namePathList` is [['list', 0]] (Field value update), List shouldn't be updated\n          // 2.\n          //   2.1 If `dependencies` is set, `name` is not set and `shouldUpdate` is not set,\n          //       don't use `shouldUpdate`. `dependencies` is view as a shortcut if `shouldUpdate`\n          //       is not provided\n          //   2.2 If `shouldUpdate` provided, use customize logic to update the field\n          //       else to check if value changed\n          if (namePathMatch || (!dependencies.length || namePath.length || shouldUpdate) && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n            _this.reRender();\n            return;\n          }\n          break;\n      }\n      if (shouldUpdate === true) {\n        _this.reRender();\n      }\n    };\n    _this.validateRules = function (options) {\n      // We should fixed namePath & value to avoid developer change then by form function\n      var namePath = _this.getNamePath();\n      var currentValue = _this.getValue();\n      // Force change to async to avoid rule OOD under renderProps field\n      var rootPromise = Promise.resolve().then(function () {\n        if (!_this.mounted) {\n          return [];\n        }\n        var _this$props5 = _this.props,\n          _this$props5$validate = _this$props5.validateFirst,\n          validateFirst = _this$props5$validate === void 0 ? false : _this$props5$validate,\n          messageVariables = _this$props5.messageVariables;\n        var _ref2 = options || {},\n          triggerName = _ref2.triggerName;\n        var filteredRules = _this.getRules();\n        if (triggerName) {\n          filteredRules = filteredRules.filter(function (rule) {\n            return rule;\n          }).filter(function (rule) {\n            var validateTrigger = rule.validateTrigger;\n            if (!validateTrigger) {\n              return true;\n            }\n            var triggerList = toArray(validateTrigger);\n            return triggerList.includes(triggerName);\n          });\n        }\n        var promise = validateRules(namePath, currentValue, filteredRules, options, validateFirst, messageVariables);\n        promise.catch(function (e) {\n          return e;\n        }).then(function () {\n          var ruleErrors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EMPTY_ERRORS;\n          if (_this.validatePromise === rootPromise) {\n            var _ruleErrors$forEach;\n            _this.validatePromise = null;\n            // Get errors & warnings\n            var nextErrors = [];\n            var nextWarnings = [];\n            (_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 ? void 0 : _ruleErrors$forEach.call(ruleErrors, function (_ref3) {\n              var warningOnly = _ref3.rule.warningOnly,\n                _ref3$errors = _ref3.errors,\n                errors = _ref3$errors === void 0 ? EMPTY_ERRORS : _ref3$errors;\n              if (warningOnly) {\n                nextWarnings.push.apply(nextWarnings, _toConsumableArray(errors));\n              } else {\n                nextErrors.push.apply(nextErrors, _toConsumableArray(errors));\n              }\n            });\n            _this.errors = nextErrors;\n            _this.warnings = nextWarnings;\n            _this.triggerMetaEvent();\n            _this.reRender();\n          }\n        });\n        return promise;\n      });\n      _this.validatePromise = rootPromise;\n      _this.dirty = true;\n      _this.errors = EMPTY_ERRORS;\n      _this.warnings = EMPTY_ERRORS;\n      _this.triggerMetaEvent();\n      // Force trigger re-render since we need sync renderProps with new meta\n      _this.reRender();\n      return rootPromise;\n    };\n    _this.isFieldValidating = function () {\n      return !!_this.validatePromise;\n    };\n    _this.isFieldTouched = function () {\n      return _this.touched;\n    };\n    _this.isFieldDirty = function () {\n      // Touched or validate or has initialValue\n      if (_this.dirty || _this.props.initialValue !== undefined) {\n        return true;\n      }\n      // Form set initialValue\n      var fieldContext = _this.props.fieldContext;\n      var _fieldContext$getInte = fieldContext.getInternalHooks(HOOK_MARK),\n        getInitialValue = _fieldContext$getInte.getInitialValue;\n      if (getInitialValue(_this.getNamePath()) !== undefined) {\n        return true;\n      }\n      return false;\n    };\n    _this.getErrors = function () {\n      return _this.errors;\n    };\n    _this.getWarnings = function () {\n      return _this.warnings;\n    };\n    _this.isListField = function () {\n      return _this.props.isListField;\n    };\n    _this.isList = function () {\n      return _this.props.isList;\n    };\n    _this.isPreserve = function () {\n      return _this.props.preserve;\n    };\n    _this.getMeta = function () {\n      // Make error & validating in cache to save perf\n      _this.prevValidating = _this.isFieldValidating();\n      var meta = {\n        touched: _this.isFieldTouched(),\n        validating: _this.prevValidating,\n        errors: _this.errors,\n        warnings: _this.warnings,\n        name: _this.getNamePath()\n      };\n      return meta;\n    };\n    _this.getOnlyChild = function (children) {\n      // Support render props\n      if (typeof children === 'function') {\n        var meta = _this.getMeta();\n        return _objectSpread(_objectSpread({}, _this.getOnlyChild(children(_this.getControlled(), meta, _this.props.fieldContext))), {}, {\n          isFunction: true\n        });\n      }\n      // Filed element only\n      var childList = toChildrenArray(children);\n      if (childList.length !== 1 || ! /*#__PURE__*/React.isValidElement(childList[0])) {\n        return {\n          child: childList,\n          isFunction: false\n        };\n      }\n      return {\n        child: childList[0],\n        isFunction: false\n      };\n    };\n    _this.getValue = function (store) {\n      var getFieldsValue = _this.props.fieldContext.getFieldsValue;\n      var namePath = _this.getNamePath();\n      return getValue(store || getFieldsValue(true), namePath);\n    };\n    _this.getControlled = function () {\n      var childProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var _this$props6 = _this.props,\n        trigger = _this$props6.trigger,\n        validateTrigger = _this$props6.validateTrigger,\n        getValueFromEvent = _this$props6.getValueFromEvent,\n        normalize = _this$props6.normalize,\n        valuePropName = _this$props6.valuePropName,\n        getValueProps = _this$props6.getValueProps,\n        fieldContext = _this$props6.fieldContext;\n      var mergedValidateTrigger = validateTrigger !== undefined ? validateTrigger : fieldContext.validateTrigger;\n      var namePath = _this.getNamePath();\n      var getInternalHooks = fieldContext.getInternalHooks,\n        getFieldsValue = fieldContext.getFieldsValue;\n      var _getInternalHooks = getInternalHooks(HOOK_MARK),\n        dispatch = _getInternalHooks.dispatch;\n      var value = _this.getValue();\n      var mergedGetValueProps = getValueProps || function (val) {\n        return _defineProperty({}, valuePropName, val);\n      };\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      var originTriggerFunc = childProps[trigger];\n      var control = _objectSpread(_objectSpread({}, childProps), mergedGetValueProps(value));\n      // Add trigger\n      control[trigger] = function () {\n        // Mark as touched\n        _this.touched = true;\n        _this.dirty = true;\n        _this.triggerMetaEvent();\n        var newValue;\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n        if (getValueFromEvent) {\n          newValue = getValueFromEvent.apply(void 0, args);\n        } else {\n          newValue = defaultGetValueFromEvent.apply(void 0, [valuePropName].concat(args));\n        }\n        if (normalize) {\n          newValue = normalize(newValue, value, getFieldsValue(true));\n        }\n        dispatch({\n          type: 'updateValue',\n          namePath: namePath,\n          value: newValue\n        });\n        if (originTriggerFunc) {\n          originTriggerFunc.apply(void 0, args);\n        }\n      };\n      // Add validateTrigger\n      var validateTriggerList = toArray(mergedValidateTrigger || []);\n      validateTriggerList.forEach(function (triggerName) {\n        // Wrap additional function of component, so that we can get latest value from store\n        var originTrigger = control[triggerName];\n        control[triggerName] = function () {\n          if (originTrigger) {\n            originTrigger.apply(void 0, arguments);\n          }\n          // Always use latest rules\n          var rules = _this.props.rules;\n          if (rules && rules.length) {\n            // We dispatch validate to root,\n            // since it will update related data with other field with same name\n            dispatch({\n              type: 'validateField',\n              namePath: namePath,\n              triggerName: triggerName\n            });\n          }\n        };\n      });\n      return control;\n    };\n    if (props.fieldContext) {\n      var getInternalHooks = props.fieldContext.getInternalHooks;\n      var _getInternalHooks2 = getInternalHooks(HOOK_MARK),\n        initEntityValue = _getInternalHooks2.initEntityValue;\n      initEntityValue(_assertThisInitialized(_this));\n    }\n    return _this;\n  }\n  _createClass(Field, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props7 = this.props,\n        shouldUpdate = _this$props7.shouldUpdate,\n        fieldContext = _this$props7.fieldContext;\n      this.mounted = true;\n      // Register on init\n      if (fieldContext) {\n        var getInternalHooks = fieldContext.getInternalHooks;\n        var _getInternalHooks3 = getInternalHooks(HOOK_MARK),\n          registerField = _getInternalHooks3.registerField;\n        this.cancelRegisterFunc = registerField(this);\n      }\n      // One more render for component in case fields not ready\n      if (shouldUpdate === true) {\n        this.reRender();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.cancelRegister();\n      this.triggerMetaEvent(true);\n      this.mounted = false;\n    }\n  }, {\n    key: \"reRender\",\n    value: function reRender() {\n      if (!this.mounted) return;\n      this.forceUpdate();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var resetCount = this.state.resetCount;\n      var children = this.props.children;\n      var _this$getOnlyChild = this.getOnlyChild(children),\n        child = _this$getOnlyChild.child,\n        isFunction = _this$getOnlyChild.isFunction;\n      // Not need to `cloneElement` since user can handle this in render function self\n      var returnChildNode;\n      if (isFunction) {\n        returnChildNode = child;\n      } else if ( /*#__PURE__*/React.isValidElement(child)) {\n        returnChildNode = /*#__PURE__*/React.cloneElement(child, this.getControlled(child.props));\n      } else {\n        warning(!child, '`children` of Field is not validate ReactElement.');\n        returnChildNode = child;\n      }\n      return /*#__PURE__*/React.createElement(React.Fragment, {\n        key: resetCount\n      }, returnChildNode);\n    }\n  }]);\n  return Field;\n}(React.Component);\nField.contextType = FieldContext;\nField.defaultProps = {\n  trigger: 'onChange',\n  valuePropName: 'value'\n};\nfunction WrapperField(_ref5) {\n  var name = _ref5.name,\n    restProps = _objectWithoutProperties(_ref5, _excluded);\n  var fieldContext = React.useContext(FieldContext);\n  var namePath = name !== undefined ? getNamePath(name) : undefined;\n  var key = 'keep';\n  if (!restProps.isListField) {\n    key = \"_\".concat((namePath || []).join('_'));\n  }\n  // Warning if it's a directly list field.\n  // We can still support multiple level field preserve.\n  if (process.env.NODE_ENV !== 'production' && restProps.preserve === false && restProps.isListField && namePath.length <= 1) {\n    warning(false, '`preserve` should not apply on Form.List fields.');\n  }\n  return /*#__PURE__*/React.createElement(Field, _extends({\n    key: key,\n    name: namePath\n  }, restProps, {\n    fieldContext: fieldContext\n  }));\n}\nexport default WrapperField;","import * as React from 'react';\nvar ListContext = /*#__PURE__*/React.createContext(null);\nexport default ListContext;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport * as React from 'react';\nimport warning from \"rc-util/es/warning\";\nimport FieldContext from './FieldContext';\nimport Field from './Field';\nimport { move as _move, getNamePath } from './utils/valueUtil';\nimport ListContext from './ListContext';\nvar List = function List(_ref) {\n  var name = _ref.name,\n    initialValue = _ref.initialValue,\n    children = _ref.children,\n    rules = _ref.rules,\n    validateTrigger = _ref.validateTrigger;\n  var context = React.useContext(FieldContext);\n  var keyRef = React.useRef({\n    keys: [],\n    id: 0\n  });\n  var keyManager = keyRef.current;\n  var prefixName = React.useMemo(function () {\n    var parentPrefixName = getNamePath(context.prefixName) || [];\n    return [].concat(_toConsumableArray(parentPrefixName), _toConsumableArray(getNamePath(name)));\n  }, [context.prefixName, name]);\n  var fieldContext = React.useMemo(function () {\n    return _objectSpread(_objectSpread({}, context), {}, {\n      prefixName: prefixName\n    });\n  }, [context, prefixName]);\n  // List context\n  var listContext = React.useMemo(function () {\n    return {\n      getKey: function getKey(namePath) {\n        var len = prefixName.length;\n        var pathName = namePath[len];\n        return [keyManager.keys[pathName], namePath.slice(len + 1)];\n      }\n    };\n  }, [prefixName]);\n  // User should not pass `children` as other type.\n  if (typeof children !== 'function') {\n    warning(false, 'Form.List only accepts function as children.');\n    return null;\n  }\n  var shouldUpdate = function shouldUpdate(prevValue, nextValue, _ref2) {\n    var source = _ref2.source;\n    if (source === 'internal') {\n      return false;\n    }\n    return prevValue !== nextValue;\n  };\n  return /*#__PURE__*/React.createElement(ListContext.Provider, {\n    value: listContext\n  }, /*#__PURE__*/React.createElement(FieldContext.Provider, {\n    value: fieldContext\n  }, /*#__PURE__*/React.createElement(Field, {\n    name: [],\n    shouldUpdate: shouldUpdate,\n    rules: rules,\n    validateTrigger: validateTrigger,\n    initialValue: initialValue,\n    isList: true\n  }, function (_ref3, meta) {\n    var _ref3$value = _ref3.value,\n      value = _ref3$value === void 0 ? [] : _ref3$value,\n      onChange = _ref3.onChange;\n    var getFieldValue = context.getFieldValue;\n    var getNewValue = function getNewValue() {\n      var values = getFieldValue(prefixName || []);\n      return values || [];\n    };\n    /**\n     * Always get latest value in case user update fields by `form` api.\n     */\n    var operations = {\n      add: function add(defaultValue, index) {\n        // Mapping keys\n        var newValue = getNewValue();\n        if (index >= 0 && index <= newValue.length) {\n          keyManager.keys = [].concat(_toConsumableArray(keyManager.keys.slice(0, index)), [keyManager.id], _toConsumableArray(keyManager.keys.slice(index)));\n          onChange([].concat(_toConsumableArray(newValue.slice(0, index)), [defaultValue], _toConsumableArray(newValue.slice(index))));\n        } else {\n          if (process.env.NODE_ENV !== 'production' && (index < 0 || index > newValue.length)) {\n            warning(false, 'The second parameter of the add function should be a valid positive number.');\n          }\n          keyManager.keys = [].concat(_toConsumableArray(keyManager.keys), [keyManager.id]);\n          onChange([].concat(_toConsumableArray(newValue), [defaultValue]));\n        }\n        keyManager.id += 1;\n      },\n      remove: function remove(index) {\n        var newValue = getNewValue();\n        var indexSet = new Set(Array.isArray(index) ? index : [index]);\n        if (indexSet.size <= 0) {\n          return;\n        }\n        keyManager.keys = keyManager.keys.filter(function (_, keysIndex) {\n          return !indexSet.has(keysIndex);\n        });\n        // Trigger store change\n        onChange(newValue.filter(function (_, valueIndex) {\n          return !indexSet.has(valueIndex);\n        }));\n      },\n      move: function move(from, to) {\n        if (from === to) {\n          return;\n        }\n        var newValue = getNewValue();\n        // Do not handle out of range\n        if (from < 0 || from >= newValue.length || to < 0 || to >= newValue.length) {\n          return;\n        }\n        keyManager.keys = _move(keyManager.keys, from, to);\n        // Trigger store change\n        onChange(_move(newValue, from, to));\n      }\n    };\n    var listValue = value || [];\n    if (!Array.isArray(listValue)) {\n      listValue = [];\n      if (process.env.NODE_ENV !== 'production') {\n        warning(false, \"Current value of '\".concat(prefixName.join(' > '), \"' is not an array type.\"));\n      }\n    }\n    return children(listValue.map(function (__, index) {\n      var key = keyManager.keys[index];\n      if (key === undefined) {\n        keyManager.keys[index] = keyManager.id;\n        key = keyManager.keys[index];\n        keyManager.id += 1;\n      }\n      return {\n        name: index,\n        key: key,\n        isListField: true\n      };\n    }), operations, meta);\n  })));\n};\nexport default List;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar SPLIT = '__@field_split__';\n/**\n * Convert name path into string to fast the fetch speed of Map.\n */\nfunction normalize(namePath) {\n  return namePath.map(function (cell) {\n    return \"\".concat(_typeof(cell), \":\").concat(cell);\n  })\n  // Magic split\n  .join(SPLIT);\n}\n/**\n * NameMap like a `Map` but accepts `string[]` as key.\n */\nvar NameMap = /*#__PURE__*/function () {\n  function NameMap() {\n    _classCallCheck(this, NameMap);\n    this.kvs = new Map();\n  }\n  _createClass(NameMap, [{\n    key: \"set\",\n    value: function set(key, value) {\n      this.kvs.set(normalize(key), value);\n    }\n  }, {\n    key: \"get\",\n    value: function get(key) {\n      return this.kvs.get(normalize(key));\n    }\n  }, {\n    key: \"update\",\n    value: function update(key, updater) {\n      var origin = this.get(key);\n      var next = updater(origin);\n      if (!next) {\n        this.delete(key);\n      } else {\n        this.set(key, next);\n      }\n    }\n  }, {\n    key: \"delete\",\n    value: function _delete(key) {\n      this.kvs.delete(normalize(key));\n    }\n    // Since we only use this in test, let simply realize this\n  }, {\n    key: \"map\",\n    value: function map(callback) {\n      return _toConsumableArray(this.kvs.entries()).map(function (_ref) {\n        var _ref2 = _slicedToArray(_ref, 2),\n          key = _ref2[0],\n          value = _ref2[1];\n        var cells = key.split(SPLIT);\n        return callback({\n          key: cells.map(function (cell) {\n            var _cell$match = cell.match(/^([^:]*):(.*)$/),\n              _cell$match2 = _slicedToArray(_cell$match, 3),\n              type = _cell$match2[1],\n              unit = _cell$match2[2];\n            return type === 'number' ? Number(unit) : unit;\n          }),\n          value: value\n        });\n      });\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      var json = {};\n      this.map(function (_ref3) {\n        var key = _ref3.key,\n          value = _ref3.value;\n        json[key.join('.')] = value;\n        return null;\n      });\n      return json;\n    }\n  }]);\n  return NameMap;\n}();\nexport default NameMap;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nvar _excluded = [\"name\", \"errors\"];\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { HOOK_MARK } from './FieldContext';\nimport { allPromiseFinish } from './utils/asyncUtil';\nimport cloneDeep from './utils/cloneDeep';\nimport { defaultValidateMessages } from './utils/messages';\nimport NameMap from './utils/NameMap';\nimport { cloneByNamePathList, containsNamePath, getNamePath, getValue, matchNamePath, setValue, setValues } from './utils/valueUtil';\nexport var FormStore = /*#__PURE__*/_createClass(function FormStore(forceRootUpdate) {\n  var _this = this;\n  _classCallCheck(this, FormStore);\n  this.formHooked = false;\n  this.forceRootUpdate = void 0;\n  this.subscribable = true;\n  this.store = {};\n  this.fieldEntities = [];\n  this.initialValues = {};\n  this.callbacks = {};\n  this.validateMessages = null;\n  this.preserve = null;\n  this.lastValidatePromise = null;\n  this.getForm = function () {\n    return {\n      getFieldValue: _this.getFieldValue,\n      getFieldsValue: _this.getFieldsValue,\n      getFieldError: _this.getFieldError,\n      getFieldWarning: _this.getFieldWarning,\n      getFieldsError: _this.getFieldsError,\n      isFieldsTouched: _this.isFieldsTouched,\n      isFieldTouched: _this.isFieldTouched,\n      isFieldValidating: _this.isFieldValidating,\n      isFieldsValidating: _this.isFieldsValidating,\n      resetFields: _this.resetFields,\n      setFields: _this.setFields,\n      setFieldValue: _this.setFieldValue,\n      setFieldsValue: _this.setFieldsValue,\n      validateFields: _this.validateFields,\n      submit: _this.submit,\n      _init: true,\n      getInternalHooks: _this.getInternalHooks\n    };\n  };\n  this.getInternalHooks = function (key) {\n    if (key === HOOK_MARK) {\n      _this.formHooked = true;\n      return {\n        dispatch: _this.dispatch,\n        initEntityValue: _this.initEntityValue,\n        registerField: _this.registerField,\n        useSubscribe: _this.useSubscribe,\n        setInitialValues: _this.setInitialValues,\n        destroyForm: _this.destroyForm,\n        setCallbacks: _this.setCallbacks,\n        setValidateMessages: _this.setValidateMessages,\n        getFields: _this.getFields,\n        setPreserve: _this.setPreserve,\n        getInitialValue: _this.getInitialValue,\n        registerWatch: _this.registerWatch\n      };\n    }\n    warning(false, '`getInternalHooks` is internal usage. Should not call directly.');\n    return null;\n  };\n  this.useSubscribe = function (subscribable) {\n    _this.subscribable = subscribable;\n  };\n  this.prevWithoutPreserves = null;\n  this.setInitialValues = function (initialValues, init) {\n    _this.initialValues = initialValues || {};\n    if (init) {\n      var _this$prevWithoutPres;\n      var nextStore = setValues({}, initialValues, _this.store);\n      // We will take consider prev form unmount fields.\n      // When the field is not `preserve`, we need fill this with initialValues instead of store.\n      // eslint-disable-next-line array-callback-return\n      (_this$prevWithoutPres = _this.prevWithoutPreserves) === null || _this$prevWithoutPres === void 0 ? void 0 : _this$prevWithoutPres.map(function (_ref) {\n        var namePath = _ref.key;\n        nextStore = setValue(nextStore, namePath, getValue(initialValues, namePath));\n      });\n      _this.prevWithoutPreserves = null;\n      _this.updateStore(nextStore);\n    }\n  };\n  this.destroyForm = function () {\n    var prevWithoutPreserves = new NameMap();\n    _this.getFieldEntities(true).forEach(function (entity) {\n      if (!_this.isMergedPreserve(entity.isPreserve())) {\n        prevWithoutPreserves.set(entity.getNamePath(), true);\n      }\n    });\n    _this.prevWithoutPreserves = prevWithoutPreserves;\n  };\n  this.getInitialValue = function (namePath) {\n    var initValue = getValue(_this.initialValues, namePath);\n    // Not cloneDeep when without `namePath`\n    return namePath.length ? cloneDeep(initValue) : initValue;\n  };\n  this.setCallbacks = function (callbacks) {\n    _this.callbacks = callbacks;\n  };\n  this.setValidateMessages = function (validateMessages) {\n    _this.validateMessages = validateMessages;\n  };\n  this.setPreserve = function (preserve) {\n    _this.preserve = preserve;\n  };\n  this.watchList = [];\n  this.registerWatch = function (callback) {\n    _this.watchList.push(callback);\n    return function () {\n      _this.watchList = _this.watchList.filter(function (fn) {\n        return fn !== callback;\n      });\n    };\n  };\n  this.notifyWatch = function () {\n    var namePath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    // No need to cost perf when nothing need to watch\n    if (_this.watchList.length) {\n      var values = _this.getFieldsValue();\n      _this.watchList.forEach(function (callback) {\n        callback(values, namePath);\n      });\n    }\n  };\n  this.timeoutId = null;\n  this.warningUnhooked = function () {\n    if (process.env.NODE_ENV !== 'production' && !_this.timeoutId && typeof window !== 'undefined') {\n      _this.timeoutId = setTimeout(function () {\n        _this.timeoutId = null;\n        if (!_this.formHooked) {\n          warning(false, 'Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?');\n        }\n      });\n    }\n  };\n  this.updateStore = function (nextStore) {\n    _this.store = nextStore;\n  };\n  this.getFieldEntities = function () {\n    var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    if (!pure) {\n      return _this.fieldEntities;\n    }\n    return _this.fieldEntities.filter(function (field) {\n      return field.getNamePath().length;\n    });\n  };\n  this.getFieldsMap = function () {\n    var pure = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n    var cache = new NameMap();\n    _this.getFieldEntities(pure).forEach(function (field) {\n      var namePath = field.getNamePath();\n      cache.set(namePath, field);\n    });\n    return cache;\n  };\n  this.getFieldEntitiesForNamePathList = function (nameList) {\n    if (!nameList) {\n      return _this.getFieldEntities(true);\n    }\n    var cache = _this.getFieldsMap(true);\n    return nameList.map(function (name) {\n      var namePath = getNamePath(name);\n      return cache.get(namePath) || {\n        INVALIDATE_NAME_PATH: getNamePath(name)\n      };\n    });\n  };\n  this.getFieldsValue = function (nameList, filterFunc) {\n    _this.warningUnhooked();\n    if (nameList === true && !filterFunc) {\n      return _this.store;\n    }\n    var fieldEntities = _this.getFieldEntitiesForNamePathList(Array.isArray(nameList) ? nameList : null);\n    var filteredNameList = [];\n    fieldEntities.forEach(function (entity) {\n      var _entity$isListField;\n      var namePath = 'INVALIDATE_NAME_PATH' in entity ? entity.INVALIDATE_NAME_PATH : entity.getNamePath();\n      // Ignore when it's a list item and not specific the namePath,\n      // since parent field is already take in count\n      if (!nameList && ((_entity$isListField = entity.isListField) === null || _entity$isListField === void 0 ? void 0 : _entity$isListField.call(entity))) {\n        return;\n      }\n      if (!filterFunc) {\n        filteredNameList.push(namePath);\n      } else {\n        var meta = 'getMeta' in entity ? entity.getMeta() : null;\n        if (filterFunc(meta)) {\n          filteredNameList.push(namePath);\n        }\n      }\n    });\n    return cloneByNamePathList(_this.store, filteredNameList.map(getNamePath));\n  };\n  this.getFieldValue = function (name) {\n    _this.warningUnhooked();\n    var namePath = getNamePath(name);\n    return getValue(_this.store, namePath);\n  };\n  this.getFieldsError = function (nameList) {\n    _this.warningUnhooked();\n    var fieldEntities = _this.getFieldEntitiesForNamePathList(nameList);\n    return fieldEntities.map(function (entity, index) {\n      if (entity && !('INVALIDATE_NAME_PATH' in entity)) {\n        return {\n          name: entity.getNamePath(),\n          errors: entity.getErrors(),\n          warnings: entity.getWarnings()\n        };\n      }\n      return {\n        name: getNamePath(nameList[index]),\n        errors: [],\n        warnings: []\n      };\n    });\n  };\n  this.getFieldError = function (name) {\n    _this.warningUnhooked();\n    var namePath = getNamePath(name);\n    var fieldError = _this.getFieldsError([namePath])[0];\n    return fieldError.errors;\n  };\n  this.getFieldWarning = function (name) {\n    _this.warningUnhooked();\n    var namePath = getNamePath(name);\n    var fieldError = _this.getFieldsError([namePath])[0];\n    return fieldError.warnings;\n  };\n  this.isFieldsTouched = function () {\n    _this.warningUnhooked();\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    var arg0 = args[0],\n      arg1 = args[1];\n    var namePathList;\n    var isAllFieldsTouched = false;\n    if (args.length === 0) {\n      namePathList = null;\n    } else if (args.length === 1) {\n      if (Array.isArray(arg0)) {\n        namePathList = arg0.map(getNamePath);\n        isAllFieldsTouched = false;\n      } else {\n        namePathList = null;\n        isAllFieldsTouched = arg0;\n      }\n    } else {\n      namePathList = arg0.map(getNamePath);\n      isAllFieldsTouched = arg1;\n    }\n    var fieldEntities = _this.getFieldEntities(true);\n    var isFieldTouched = function isFieldTouched(field) {\n      return field.isFieldTouched();\n    };\n    // ===== Will get fully compare when not config namePathList =====\n    if (!namePathList) {\n      return isAllFieldsTouched ? fieldEntities.every(isFieldTouched) : fieldEntities.some(isFieldTouched);\n    }\n    // Generate a nest tree for validate\n    var map = new NameMap();\n    namePathList.forEach(function (shortNamePath) {\n      map.set(shortNamePath, []);\n    });\n    fieldEntities.forEach(function (field) {\n      var fieldNamePath = field.getNamePath();\n      // Find matched entity and put into list\n      namePathList.forEach(function (shortNamePath) {\n        if (shortNamePath.every(function (nameUnit, i) {\n          return fieldNamePath[i] === nameUnit;\n        })) {\n          map.update(shortNamePath, function (list) {\n            return [].concat(_toConsumableArray(list), [field]);\n          });\n        }\n      });\n    });\n    // Check if NameMap value is touched\n    var isNamePathListTouched = function isNamePathListTouched(entities) {\n      return entities.some(isFieldTouched);\n    };\n    var namePathListEntities = map.map(function (_ref2) {\n      var value = _ref2.value;\n      return value;\n    });\n    return isAllFieldsTouched ? namePathListEntities.every(isNamePathListTouched) : namePathListEntities.some(isNamePathListTouched);\n  };\n  this.isFieldTouched = function (name) {\n    _this.warningUnhooked();\n    return _this.isFieldsTouched([name]);\n  };\n  this.isFieldsValidating = function (nameList) {\n    _this.warningUnhooked();\n    var fieldEntities = _this.getFieldEntities();\n    if (!nameList) {\n      return fieldEntities.some(function (testField) {\n        return testField.isFieldValidating();\n      });\n    }\n    var namePathList = nameList.map(getNamePath);\n    return fieldEntities.some(function (testField) {\n      var fieldNamePath = testField.getNamePath();\n      return containsNamePath(namePathList, fieldNamePath) && testField.isFieldValidating();\n    });\n  };\n  this.isFieldValidating = function (name) {\n    _this.warningUnhooked();\n    return _this.isFieldsValidating([name]);\n  };\n  this.resetWithFieldInitialValue = function () {\n    var info = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // Create cache\n    var cache = new NameMap();\n    var fieldEntities = _this.getFieldEntities(true);\n    fieldEntities.forEach(function (field) {\n      var initialValue = field.props.initialValue;\n      var namePath = field.getNamePath();\n      // Record only if has `initialValue`\n      if (initialValue !== undefined) {\n        var records = cache.get(namePath) || new Set();\n        records.add({\n          entity: field,\n          value: initialValue\n        });\n        cache.set(namePath, records);\n      }\n    });\n    // Reset\n    var resetWithFields = function resetWithFields(entities) {\n      entities.forEach(function (field) {\n        var initialValue = field.props.initialValue;\n        if (initialValue !== undefined) {\n          var namePath = field.getNamePath();\n          var formInitialValue = _this.getInitialValue(namePath);\n          if (formInitialValue !== undefined) {\n            // Warning if conflict with form initialValues and do not modify value\n            warning(false, \"Form already set 'initialValues' with path '\".concat(namePath.join('.'), \"'. Field can not overwrite it.\"));\n          } else {\n            var records = cache.get(namePath);\n            if (records && records.size > 1) {\n              // Warning if multiple field set `initialValue`and do not modify value\n              warning(false, \"Multiple Field with path '\".concat(namePath.join('.'), \"' set 'initialValue'. Can not decide which one to pick.\"));\n            } else if (records) {\n              var originValue = _this.getFieldValue(namePath);\n              // Set `initialValue`\n              if (!info.skipExist || originValue === undefined) {\n                _this.updateStore(setValue(_this.store, namePath, _toConsumableArray(records)[0].value));\n              }\n            }\n          }\n        }\n      });\n    };\n    var requiredFieldEntities;\n    if (info.entities) {\n      requiredFieldEntities = info.entities;\n    } else if (info.namePathList) {\n      requiredFieldEntities = [];\n      info.namePathList.forEach(function (namePath) {\n        var records = cache.get(namePath);\n        if (records) {\n          var _requiredFieldEntitie;\n          (_requiredFieldEntitie = requiredFieldEntities).push.apply(_requiredFieldEntitie, _toConsumableArray(_toConsumableArray(records).map(function (r) {\n            return r.entity;\n          })));\n        }\n      });\n    } else {\n      requiredFieldEntities = fieldEntities;\n    }\n    resetWithFields(requiredFieldEntities);\n  };\n  this.resetFields = function (nameList) {\n    _this.warningUnhooked();\n    var prevStore = _this.store;\n    if (!nameList) {\n      _this.updateStore(setValues({}, _this.initialValues));\n      _this.resetWithFieldInitialValue();\n      _this.notifyObservers(prevStore, null, {\n        type: 'reset'\n      });\n      _this.notifyWatch();\n      return;\n    }\n    // Reset by `nameList`\n    var namePathList = nameList.map(getNamePath);\n    namePathList.forEach(function (namePath) {\n      var initialValue = _this.getInitialValue(namePath);\n      _this.updateStore(setValue(_this.store, namePath, initialValue));\n    });\n    _this.resetWithFieldInitialValue({\n      namePathList: namePathList\n    });\n    _this.notifyObservers(prevStore, namePathList, {\n      type: 'reset'\n    });\n    _this.notifyWatch(namePathList);\n  };\n  this.setFields = function (fields) {\n    _this.warningUnhooked();\n    var prevStore = _this.store;\n    var namePathList = [];\n    fields.forEach(function (fieldData) {\n      var name = fieldData.name,\n        errors = fieldData.errors,\n        data = _objectWithoutProperties(fieldData, _excluded);\n      var namePath = getNamePath(name);\n      namePathList.push(namePath);\n      // Value\n      if ('value' in data) {\n        _this.updateStore(setValue(_this.store, namePath, data.value));\n      }\n      _this.notifyObservers(prevStore, [namePath], {\n        type: 'setField',\n        data: fieldData\n      });\n    });\n    _this.notifyWatch(namePathList);\n  };\n  this.getFields = function () {\n    var entities = _this.getFieldEntities(true);\n    var fields = entities.map(function (field) {\n      var namePath = field.getNamePath();\n      var meta = field.getMeta();\n      var fieldData = _objectSpread(_objectSpread({}, meta), {}, {\n        name: namePath,\n        value: _this.getFieldValue(namePath)\n      });\n      Object.defineProperty(fieldData, 'originRCField', {\n        value: true\n      });\n      return fieldData;\n    });\n    return fields;\n  };\n  this.initEntityValue = function (entity) {\n    var initialValue = entity.props.initialValue;\n    if (initialValue !== undefined) {\n      var namePath = entity.getNamePath();\n      var prevValue = getValue(_this.store, namePath);\n      if (prevValue === undefined) {\n        _this.updateStore(setValue(_this.store, namePath, initialValue));\n      }\n    }\n  };\n  this.isMergedPreserve = function (fieldPreserve) {\n    var mergedPreserve = fieldPreserve !== undefined ? fieldPreserve : _this.preserve;\n    return mergedPreserve !== null && mergedPreserve !== void 0 ? mergedPreserve : true;\n  };\n  this.registerField = function (entity) {\n    _this.fieldEntities.push(entity);\n    var namePath = entity.getNamePath();\n    _this.notifyWatch([namePath]);\n    // Set initial values\n    if (entity.props.initialValue !== undefined) {\n      var prevStore = _this.store;\n      _this.resetWithFieldInitialValue({\n        entities: [entity],\n        skipExist: true\n      });\n      _this.notifyObservers(prevStore, [entity.getNamePath()], {\n        type: 'valueUpdate',\n        source: 'internal'\n      });\n    }\n    // un-register field callback\n    return function (isListField, preserve) {\n      var subNamePath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n      _this.fieldEntities = _this.fieldEntities.filter(function (item) {\n        return item !== entity;\n      });\n      // Clean up store value if not preserve\n      if (!_this.isMergedPreserve(preserve) && (!isListField || subNamePath.length > 1)) {\n        var defaultValue = isListField ? undefined : _this.getInitialValue(namePath);\n        if (namePath.length && _this.getFieldValue(namePath) !== defaultValue && _this.fieldEntities.every(function (field) {\n          return (\n            // Only reset when no namePath exist\n            !matchNamePath(field.getNamePath(), namePath)\n          );\n        })) {\n          var _prevStore = _this.store;\n          _this.updateStore(setValue(_prevStore, namePath, defaultValue, true));\n          // Notify that field is unmount\n          _this.notifyObservers(_prevStore, [namePath], {\n            type: 'remove'\n          });\n          // Dependencies update\n          _this.triggerDependenciesUpdate(_prevStore, namePath);\n        }\n      }\n      _this.notifyWatch([namePath]);\n    };\n  };\n  this.dispatch = function (action) {\n    switch (action.type) {\n      case 'updateValue':\n        {\n          var namePath = action.namePath,\n            value = action.value;\n          _this.updateValue(namePath, value);\n          break;\n        }\n      case 'validateField':\n        {\n          var _namePath = action.namePath,\n            triggerName = action.triggerName;\n          _this.validateFields([_namePath], {\n            triggerName: triggerName\n          });\n          break;\n        }\n      default:\n      // Currently we don't have other action. Do nothing.\n    }\n  };\n  this.notifyObservers = function (prevStore, namePathList, info) {\n    if (_this.subscribable) {\n      var mergedInfo = _objectSpread(_objectSpread({}, info), {}, {\n        store: _this.getFieldsValue(true)\n      });\n      _this.getFieldEntities().forEach(function (_ref3) {\n        var onStoreChange = _ref3.onStoreChange;\n        onStoreChange(prevStore, namePathList, mergedInfo);\n      });\n    } else {\n      _this.forceRootUpdate();\n    }\n  };\n  this.triggerDependenciesUpdate = function (prevStore, namePath) {\n    var childrenFields = _this.getDependencyChildrenFields(namePath);\n    if (childrenFields.length) {\n      _this.validateFields(childrenFields);\n    }\n    _this.notifyObservers(prevStore, childrenFields, {\n      type: 'dependenciesUpdate',\n      relatedFields: [namePath].concat(_toConsumableArray(childrenFields))\n    });\n    return childrenFields;\n  };\n  this.updateValue = function (name, value) {\n    var namePath = getNamePath(name);\n    var prevStore = _this.store;\n    _this.updateStore(setValue(_this.store, namePath, value));\n    _this.notifyObservers(prevStore, [namePath], {\n      type: 'valueUpdate',\n      source: 'internal'\n    });\n    _this.notifyWatch([namePath]);\n    // Dependencies update\n    var childrenFields = _this.triggerDependenciesUpdate(prevStore, namePath);\n    // trigger callback function\n    var onValuesChange = _this.callbacks.onValuesChange;\n    if (onValuesChange) {\n      var changedValues = cloneByNamePathList(_this.store, [namePath]);\n      onValuesChange(changedValues, _this.getFieldsValue());\n    }\n    _this.triggerOnFieldsChange([namePath].concat(_toConsumableArray(childrenFields)));\n  };\n  this.setFieldsValue = function (store) {\n    _this.warningUnhooked();\n    var prevStore = _this.store;\n    if (store) {\n      var nextStore = setValues(_this.store, store);\n      _this.updateStore(nextStore);\n    }\n    _this.notifyObservers(prevStore, null, {\n      type: 'valueUpdate',\n      source: 'external'\n    });\n    _this.notifyWatch();\n  };\n  this.setFieldValue = function (name, value) {\n    _this.setFields([{\n      name: name,\n      value: value\n    }]);\n  };\n  this.getDependencyChildrenFields = function (rootNamePath) {\n    var children = new Set();\n    var childrenFields = [];\n    var dependencies2fields = new NameMap();\n    /**\n     * Generate maps\n     * Can use cache to save perf if user report performance issue with this\n     */\n    _this.getFieldEntities().forEach(function (field) {\n      var dependencies = field.props.dependencies;\n      (dependencies || []).forEach(function (dependency) {\n        var dependencyNamePath = getNamePath(dependency);\n        dependencies2fields.update(dependencyNamePath, function () {\n          var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Set();\n          fields.add(field);\n          return fields;\n        });\n      });\n    });\n    var fillChildren = function fillChildren(namePath) {\n      var fields = dependencies2fields.get(namePath) || new Set();\n      fields.forEach(function (field) {\n        if (!children.has(field)) {\n          children.add(field);\n          var fieldNamePath = field.getNamePath();\n          if (field.isFieldDirty() && fieldNamePath.length) {\n            childrenFields.push(fieldNamePath);\n            fillChildren(fieldNamePath);\n          }\n        }\n      });\n    };\n    fillChildren(rootNamePath);\n    return childrenFields;\n  };\n  this.triggerOnFieldsChange = function (namePathList, filedErrors) {\n    var onFieldsChange = _this.callbacks.onFieldsChange;\n    if (onFieldsChange) {\n      var fields = _this.getFields();\n      /**\n       * Fill errors since `fields` may be replaced by controlled fields\n       */\n      if (filedErrors) {\n        var cache = new NameMap();\n        filedErrors.forEach(function (_ref4) {\n          var name = _ref4.name,\n            errors = _ref4.errors;\n          cache.set(name, errors);\n        });\n        fields.forEach(function (field) {\n          // eslint-disable-next-line no-param-reassign\n          field.errors = cache.get(field.name) || field.errors;\n        });\n      }\n      var changedFields = fields.filter(function (_ref5) {\n        var fieldName = _ref5.name;\n        return containsNamePath(namePathList, fieldName);\n      });\n      onFieldsChange(changedFields, fields);\n    }\n  };\n  this.validateFields = function (nameList, options) {\n    _this.warningUnhooked();\n    var provideNameList = !!nameList;\n    var namePathList = provideNameList ? nameList.map(getNamePath) : [];\n    // Collect result in promise list\n    var promiseList = [];\n    _this.getFieldEntities(true).forEach(function (field) {\n      // Add field if not provide `nameList`\n      if (!provideNameList) {\n        namePathList.push(field.getNamePath());\n      }\n      /**\n       * Recursive validate if configured.\n       * TODO: perf improvement @zombieJ\n       */\n      if ((options === null || options === void 0 ? void 0 : options.recursive) && provideNameList) {\n        var namePath = field.getNamePath();\n        if (\n        // nameList[i] === undefined 说明是以 nameList 开头的\n        // ['name'] -> ['name','list']\n        namePath.every(function (nameUnit, i) {\n          return nameList[i] === nameUnit || nameList[i] === undefined;\n        })) {\n          namePathList.push(namePath);\n        }\n      }\n      // Skip if without rule\n      if (!field.props.rules || !field.props.rules.length) {\n        return;\n      }\n      var fieldNamePath = field.getNamePath();\n      // Add field validate rule in to promise list\n      if (!provideNameList || containsNamePath(namePathList, fieldNamePath)) {\n        var promise = field.validateRules(_objectSpread({\n          validateMessages: _objectSpread(_objectSpread({}, defaultValidateMessages), _this.validateMessages)\n        }, options));\n        // Wrap promise with field\n        promiseList.push(promise.then(function () {\n          return {\n            name: fieldNamePath,\n            errors: [],\n            warnings: []\n          };\n        }).catch(function (ruleErrors) {\n          var _ruleErrors$forEach;\n          var mergedErrors = [];\n          var mergedWarnings = [];\n          (_ruleErrors$forEach = ruleErrors.forEach) === null || _ruleErrors$forEach === void 0 ? void 0 : _ruleErrors$forEach.call(ruleErrors, function (_ref6) {\n            var warningOnly = _ref6.rule.warningOnly,\n              errors = _ref6.errors;\n            if (warningOnly) {\n              mergedWarnings.push.apply(mergedWarnings, _toConsumableArray(errors));\n            } else {\n              mergedErrors.push.apply(mergedErrors, _toConsumableArray(errors));\n            }\n          });\n          if (mergedErrors.length) {\n            return Promise.reject({\n              name: fieldNamePath,\n              errors: mergedErrors,\n              warnings: mergedWarnings\n            });\n          }\n          return {\n            name: fieldNamePath,\n            errors: mergedErrors,\n            warnings: mergedWarnings\n          };\n        }));\n      }\n    });\n    var summaryPromise = allPromiseFinish(promiseList);\n    _this.lastValidatePromise = summaryPromise;\n    // Notify fields with rule that validate has finished and need update\n    summaryPromise.catch(function (results) {\n      return results;\n    }).then(function (results) {\n      var resultNamePathList = results.map(function (_ref7) {\n        var name = _ref7.name;\n        return name;\n      });\n      _this.notifyObservers(_this.store, resultNamePathList, {\n        type: 'validateFinish'\n      });\n      _this.triggerOnFieldsChange(resultNamePathList, results);\n    });\n    var returnPromise = summaryPromise.then(function () {\n      if (_this.lastValidatePromise === summaryPromise) {\n        return Promise.resolve(_this.getFieldsValue(namePathList));\n      }\n      return Promise.reject([]);\n    }).catch(function (results) {\n      var errorList = results.filter(function (result) {\n        return result && result.errors.length;\n      });\n      return Promise.reject({\n        values: _this.getFieldsValue(namePathList),\n        errorFields: errorList,\n        outOfDate: _this.lastValidatePromise !== summaryPromise\n      });\n    });\n    // Do not throw in console\n    returnPromise.catch(function (e) {\n      return e;\n    });\n    return returnPromise;\n  };\n  this.submit = function () {\n    _this.warningUnhooked();\n    _this.validateFields().then(function (values) {\n      var onFinish = _this.callbacks.onFinish;\n      if (onFinish) {\n        try {\n          onFinish(values);\n        } catch (err) {\n          // Should print error if user `onFinish` callback failed\n          console.error(err);\n        }\n      }\n    }).catch(function (e) {\n      var onFinishFailed = _this.callbacks.onFinishFailed;\n      if (onFinishFailed) {\n        onFinishFailed(e);\n      }\n    });\n  };\n  this.forceRootUpdate = forceRootUpdate;\n});\nfunction useForm(form) {\n  var formRef = React.useRef();\n  var _React$useState = React.useState({}),\n    _React$useState2 = _slicedToArray(_React$useState, 2),\n    forceUpdate = _React$useState2[1];\n  if (!formRef.current) {\n    if (form) {\n      formRef.current = form;\n    } else {\n      // Create a new FormStore if not provided\n      var forceReRender = function forceReRender() {\n        forceUpdate({});\n      };\n      var formStore = new FormStore(forceReRender);\n      formRef.current = formStore.getForm();\n    }\n  }\n  return [formRef.current];\n}\nexport default useForm;","export function allPromiseFinish(promiseList) {\n  var hasError = false;\n  var count = promiseList.length;\n  var results = [];\n  if (!promiseList.length) {\n    return Promise.resolve([]);\n  }\n  return new Promise(function (resolve, reject) {\n    promiseList.forEach(function (promise, index) {\n      promise.catch(function (e) {\n        hasError = true;\n        return e;\n      }).then(function (result) {\n        count -= 1;\n        results[index] = result;\n        if (count > 0) {\n          return;\n        }\n        if (hasError) {\n          reject(results);\n        }\n        resolve(results);\n      });\n    });\n  });\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nvar FormContext = /*#__PURE__*/React.createContext({\n  triggerFormChange: function triggerFormChange() {},\n  triggerFormFinish: function triggerFormFinish() {},\n  registerForm: function registerForm() {},\n  unregisterForm: function unregisterForm() {}\n});\nvar FormProvider = function FormProvider(_ref) {\n  var validateMessages = _ref.validateMessages,\n    onFormChange = _ref.onFormChange,\n    onFormFinish = _ref.onFormFinish,\n    children = _ref.children;\n  var formContext = React.useContext(FormContext);\n  var formsRef = React.useRef({});\n  return /*#__PURE__*/React.createElement(FormContext.Provider, {\n    value: _objectSpread(_objectSpread({}, formContext), {}, {\n      validateMessages: _objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages),\n      // =========================================================\n      // =                  Global Form Control                  =\n      // =========================================================\n      triggerFormChange: function triggerFormChange(name, changedFields) {\n        if (onFormChange) {\n          onFormChange(name, {\n            changedFields: changedFields,\n            forms: formsRef.current\n          });\n        }\n        formContext.triggerFormChange(name, changedFields);\n      },\n      triggerFormFinish: function triggerFormFinish(name, values) {\n        if (onFormFinish) {\n          onFormFinish(name, {\n            values: values,\n            forms: formsRef.current\n          });\n        }\n        formContext.triggerFormFinish(name, values);\n      },\n      registerForm: function registerForm(name, form) {\n        if (name) {\n          formsRef.current = _objectSpread(_objectSpread({}, formsRef.current), {}, _defineProperty({}, name, form));\n        }\n        formContext.registerForm(name, form);\n      },\n      unregisterForm: function unregisterForm(name) {\n        var newForms = _objectSpread({}, formsRef.current);\n        delete newForms[name];\n        formsRef.current = newForms;\n        formContext.unregisterForm(name);\n      }\n    })\n  }, children);\n};\nexport { FormProvider };\nexport default FormContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"name\", \"initialValues\", \"fields\", \"form\", \"preserve\", \"children\", \"component\", \"validateMessages\", \"validateTrigger\", \"onValuesChange\", \"onFieldsChange\", \"onFinish\", \"onFinishFailed\"];\nimport * as React from 'react';\nimport useForm from './useForm';\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport FormContext from './FormContext';\nimport { isSimilar } from './utils/valueUtil';\nvar Form = function Form(_ref, ref) {\n  var name = _ref.name,\n    initialValues = _ref.initialValues,\n    fields = _ref.fields,\n    form = _ref.form,\n    preserve = _ref.preserve,\n    children = _ref.children,\n    _ref$component = _ref.component,\n    Component = _ref$component === void 0 ? 'form' : _ref$component,\n    validateMessages = _ref.validateMessages,\n    _ref$validateTrigger = _ref.validateTrigger,\n    validateTrigger = _ref$validateTrigger === void 0 ? 'onChange' : _ref$validateTrigger,\n    onValuesChange = _ref.onValuesChange,\n    _onFieldsChange = _ref.onFieldsChange,\n    _onFinish = _ref.onFinish,\n    onFinishFailed = _ref.onFinishFailed,\n    restProps = _objectWithoutProperties(_ref, _excluded);\n  var formContext = React.useContext(FormContext);\n  // We customize handle event since Context will makes all the consumer re-render:\n  // https://reactjs.org/docs/context.html#contextprovider\n  var _useForm = useForm(form),\n    _useForm2 = _slicedToArray(_useForm, 1),\n    formInstance = _useForm2[0];\n  var _formInstance$getInte = formInstance.getInternalHooks(HOOK_MARK),\n    useSubscribe = _formInstance$getInte.useSubscribe,\n    setInitialValues = _formInstance$getInte.setInitialValues,\n    setCallbacks = _formInstance$getInte.setCallbacks,\n    setValidateMessages = _formInstance$getInte.setValidateMessages,\n    setPreserve = _formInstance$getInte.setPreserve,\n    destroyForm = _formInstance$getInte.destroyForm;\n  // Pass ref with form instance\n  React.useImperativeHandle(ref, function () {\n    return formInstance;\n  });\n  // Register form into Context\n  React.useEffect(function () {\n    formContext.registerForm(name, formInstance);\n    return function () {\n      formContext.unregisterForm(name);\n    };\n  }, [formContext, formInstance, name]);\n  // Pass props to store\n  setValidateMessages(_objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages));\n  setCallbacks({\n    onValuesChange: onValuesChange,\n    onFieldsChange: function onFieldsChange(changedFields) {\n      formContext.triggerFormChange(name, changedFields);\n      if (_onFieldsChange) {\n        for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n          rest[_key - 1] = arguments[_key];\n        }\n        _onFieldsChange.apply(void 0, [changedFields].concat(rest));\n      }\n    },\n    onFinish: function onFinish(values) {\n      formContext.triggerFormFinish(name, values);\n      if (_onFinish) {\n        _onFinish(values);\n      }\n    },\n    onFinishFailed: onFinishFailed\n  });\n  setPreserve(preserve);\n  // Set initial value, init store value when first mount\n  var mountRef = React.useRef(null);\n  setInitialValues(initialValues, !mountRef.current);\n  if (!mountRef.current) {\n    mountRef.current = true;\n  }\n  React.useEffect(function () {\n    return destroyForm;\n  },\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  []);\n  // Prepare children by `children` type\n  var childrenNode;\n  var childrenRenderProps = typeof children === 'function';\n  if (childrenRenderProps) {\n    var values = formInstance.getFieldsValue(true);\n    childrenNode = children(values, formInstance);\n  } else {\n    childrenNode = children;\n  }\n  // Not use subscribe when using render props\n  useSubscribe(!childrenRenderProps);\n  // Listen if fields provided. We use ref to save prev data here to avoid additional render\n  var prevFieldsRef = React.useRef();\n  React.useEffect(function () {\n    if (!isSimilar(prevFieldsRef.current || [], fields || [])) {\n      formInstance.setFields(fields || []);\n    }\n    prevFieldsRef.current = fields;\n  }, [fields, formInstance]);\n  var formContextValue = React.useMemo(function () {\n    return _objectSpread(_objectSpread({}, formInstance), {}, {\n      validateTrigger: validateTrigger\n    });\n  }, [formInstance, validateTrigger]);\n  var wrapperNode = /*#__PURE__*/React.createElement(FieldContext.Provider, {\n    value: formContextValue\n  }, childrenNode);\n  if (Component === false) {\n    return wrapperNode;\n  }\n  return /*#__PURE__*/React.createElement(Component, _extends({}, restProps, {\n    onSubmit: function onSubmit(event) {\n      event.preventDefault();\n      event.stopPropagation();\n      formInstance.submit();\n    },\n    onReset: function onReset(event) {\n      var _restProps$onReset;\n      event.preventDefault();\n      formInstance.resetFields();\n      (_restProps$onReset = restProps.onReset) === null || _restProps$onReset === void 0 ? void 0 : _restProps$onReset.call(restProps, event);\n    }\n  }), wrapperNode);\n};\nexport default Form;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { FieldContext } from '.';\nimport warning from \"rc-util/es/warning\";\nimport { HOOK_MARK } from './FieldContext';\nimport { useState, useContext, useEffect, useRef, useMemo } from 'react';\nimport { getNamePath, getValue } from './utils/valueUtil';\nexport function stringify(value) {\n  try {\n    return JSON.stringify(value);\n  } catch (err) {\n    return Math.random();\n  }\n}\nvar useWatchWarning = process.env.NODE_ENV !== 'production' ? function (namePath) {\n  var fullyStr = namePath.join('__RC_FIELD_FORM_SPLIT__');\n  var nameStrRef = useRef(fullyStr);\n  warning(nameStrRef.current === fullyStr, '`useWatch` is not support dynamic `namePath`. Please provide static instead.');\n} : function () {};\nfunction useWatch() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n  var _args$ = args[0],\n    dependencies = _args$ === void 0 ? [] : _args$,\n    form = args[1];\n  var _useState = useState(),\n    _useState2 = _slicedToArray(_useState, 2),\n    value = _useState2[0],\n    setValue = _useState2[1];\n  var valueStr = useMemo(function () {\n    return stringify(value);\n  }, [value]);\n  var valueStrRef = useRef(valueStr);\n  valueStrRef.current = valueStr;\n  var fieldContext = useContext(FieldContext);\n  var formInstance = form || fieldContext;\n  var isValidForm = formInstance && formInstance._init;\n  // Warning if not exist form instance\n  if (process.env.NODE_ENV !== 'production') {\n    warning(args.length === 2 ? form ? isValidForm : true : isValidForm, 'useWatch requires a form instance since it can not auto detect from context.');\n  }\n  var namePath = getNamePath(dependencies);\n  var namePathRef = useRef(namePath);\n  namePathRef.current = namePath;\n  useWatchWarning(namePath);\n  useEffect(function () {\n    // Skip if not exist form instance\n    if (!isValidForm) {\n      return;\n    }\n    var getFieldsValue = formInstance.getFieldsValue,\n      getInternalHooks = formInstance.getInternalHooks;\n    var _getInternalHooks = getInternalHooks(HOOK_MARK),\n      registerWatch = _getInternalHooks.registerWatch;\n    var cancelRegister = registerWatch(function (store) {\n      var newValue = getValue(store, namePathRef.current);\n      var nextValueStr = stringify(newValue);\n      // Compare stringify in case it's nest object\n      if (valueStrRef.current !== nextValueStr) {\n        valueStrRef.current = nextValueStr;\n        setValue(newValue);\n      }\n    });\n    // TODO: We can improve this perf in future\n    var initialValue = getValue(getFieldsValue(), namePathRef.current);\n    setValue(initialValue);\n    return cancelRegister;\n  },\n  // We do not need re-register since namePath content is the same\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  [isValidForm]);\n  return value;\n}\nexport default useWatch;","import * as React from 'react';\nimport Field from './Field';\nimport List from './List';\nimport useForm from './useForm';\nimport FieldForm from './Form';\nimport { FormProvider } from './FormContext';\nimport FieldContext from './FieldContext';\nimport ListContext from './ListContext';\nimport useWatch from './useWatch';\nvar InternalForm = /*#__PURE__*/React.forwardRef(FieldForm);\nvar RefForm = InternalForm;\nRefForm.FormProvider = FormProvider;\nRefForm.Field = Field;\nRefForm.List = List;\nRefForm.useForm = useForm;\nRefForm.useWatch = useWatch;\nexport { Field, List, useForm, FormProvider, FieldContext, ListContext, useWatch };\nexport default RefForm;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { FormProvider as RcFormProvider } from 'rc-field-form';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nexport var FormContext = /*#__PURE__*/React.createContext({\n  labelAlign: 'right',\n  vertical: false,\n  itemRef: function itemRef() {}\n});\nexport var NoStyleItemContext = /*#__PURE__*/React.createContext(null);\nexport var FormProvider = function FormProvider(props) {\n  var providerProps = omit(props, ['prefixCls']);\n  return /*#__PURE__*/React.createElement(RcFormProvider, _extends({}, providerProps));\n};\nexport var FormItemPrefixContext = /*#__PURE__*/React.createContext({\n  prefixCls: ''\n});\nexport var FormItemInputContext = /*#__PURE__*/React.createContext({});\nexport var NoFormStyle = function NoFormStyle(_ref) {\n  var children = _ref.children,\n    status = _ref.status,\n    override = _ref.override;\n  var formItemInputContext = useContext(FormItemInputContext);\n  var newFormItemInputContext = useMemo(function () {\n    var newContext = _extends({}, formItemInputContext);\n    if (override) {\n      delete newContext.isFormItemInput;\n    }\n    if (status) {\n      delete newContext.status;\n      delete newContext.hasFeedback;\n      delete newContext.feedbackIcon;\n    }\n    return newContext;\n  }, [status, override, formItemInputContext]);\n  return /*#__PURE__*/React.createElement(FormItemInputContext.Provider, {\n    value: newFormItemInputContext\n  }, children);\n};","import { createContext } from 'react';\nvar LocaleContext = /*#__PURE__*/createContext(undefined);\nexport default LocaleContext;","var locale = {\n  placeholder: 'Select time',\n  rangePlaceholder: ['Start time', 'End time']\n};\nexport default locale;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport CalendarLocale from \"rc-picker/es/locale/en_US\";\nimport TimePickerLocale from '../../time-picker/locale/en_US';\n// Merge into a locale object\nvar locale = {\n  lang: _extends({\n    placeholder: 'Select date',\n    yearPlaceholder: 'Select year',\n    quarterPlaceholder: 'Select quarter',\n    monthPlaceholder: 'Select month',\n    weekPlaceholder: 'Select week',\n    rangePlaceholder: ['Start date', 'End date'],\n    rangeYearPlaceholder: ['Start year', 'End year'],\n    rangeQuarterPlaceholder: ['Start quarter', 'End quarter'],\n    rangeMonthPlaceholder: ['Start month', 'End month'],\n    rangeWeekPlaceholder: ['Start week', 'End week']\n  }, CalendarLocale),\n  timePickerLocale: _extends({}, TimePickerLocale)\n};\n// All settings at:\n// https://github.com/ant-design/ant-design/blob/master/components/date-picker/locale/example.json\nexport default locale;","var locale = {\n  locale: 'en_US',\n  today: 'Today',\n  now: 'Now',\n  backToToday: 'Back to today',\n  ok: 'OK',\n  clear: 'Clear',\n  month: 'Month',\n  year: 'Year',\n  timeSelect: 'select time',\n  dateSelect: 'select date',\n  weekSelect: 'Choose a week',\n  monthSelect: 'Choose a month',\n  yearSelect: 'Choose a year',\n  decadeSelect: 'Choose a decade',\n  yearFormat: 'YYYY',\n  dateFormat: 'M/D/YYYY',\n  dayFormat: 'D',\n  dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n  monthBeforeYear: true,\n  previousMonth: 'Previous month (PageUp)',\n  nextMonth: 'Next month (PageDown)',\n  previousYear: 'Last year (Control + left)',\n  nextYear: 'Next year (Control + right)',\n  previousDecade: 'Last decade',\n  nextDecade: 'Next decade',\n  previousCentury: 'Last century',\n  nextCentury: 'Next century'\n};\nexport default locale;","/* eslint-disable no-template-curly-in-string */\nimport Pagination from \"rc-pagination/es/locale/en_US\";\nimport Calendar from '../calendar/locale/en_US';\nimport DatePicker from '../date-picker/locale/en_US';\nimport TimePicker from '../time-picker/locale/en_US';\nvar typeTemplate = '${label} is not a valid ${type}';\nvar localeValues = {\n  locale: 'en',\n  Pagination: Pagination,\n  DatePicker: DatePicker,\n  TimePicker: TimePicker,\n  Calendar: Calendar,\n  global: {\n    placeholder: 'Please select'\n  },\n  Table: {\n    filterTitle: 'Filter menu',\n    filterConfirm: 'OK',\n    filterReset: 'Reset',\n    filterEmptyText: 'No filters',\n    filterCheckall: 'Select all items',\n    filterSearchPlaceholder: 'Search in filters',\n    emptyText: 'No data',\n    selectAll: 'Select current page',\n    selectInvert: 'Invert current page',\n    selectNone: 'Clear all data',\n    selectionAll: 'Select all data',\n    sortTitle: 'Sort',\n    expand: 'Expand row',\n    collapse: 'Collapse row',\n    triggerDesc: 'Click to sort descending',\n    triggerAsc: 'Click to sort ascending',\n    cancelSort: 'Click to cancel sorting'\n  },\n  Modal: {\n    okText: 'OK',\n    cancelText: 'Cancel',\n    justOkText: 'OK'\n  },\n  Popconfirm: {\n    okText: 'OK',\n    cancelText: 'Cancel'\n  },\n  Transfer: {\n    titles: ['', ''],\n    searchPlaceholder: 'Search here',\n    itemUnit: 'item',\n    itemsUnit: 'items',\n    remove: 'Remove',\n    selectCurrent: 'Select current page',\n    removeCurrent: 'Remove current page',\n    selectAll: 'Select all data',\n    removeAll: 'Remove all data',\n    selectInvert: 'Invert current page'\n  },\n  Upload: {\n    uploading: 'Uploading...',\n    removeFile: 'Remove file',\n    uploadError: 'Upload error',\n    previewFile: 'Preview file',\n    downloadFile: 'Download file'\n  },\n  Empty: {\n    description: 'No data'\n  },\n  Icon: {\n    icon: 'icon'\n  },\n  Text: {\n    edit: 'Edit',\n    copy: 'Copy',\n    copied: 'Copied',\n    expand: 'Expand'\n  },\n  PageHeader: {\n    back: 'Back'\n  },\n  Form: {\n    optional: '(optional)',\n    defaultValidateMessages: {\n      \"default\": 'Field validation error for ${label}',\n      required: 'Please enter ${label}',\n      \"enum\": '${label} must be one of [${enum}]',\n      whitespace: '${label} cannot be a blank character',\n      date: {\n        format: '${label} date format is invalid',\n        parse: '${label} cannot be converted to a date',\n        invalid: '${label} is an invalid date'\n      },\n      types: {\n        string: typeTemplate,\n        method: typeTemplate,\n        array: typeTemplate,\n        object: typeTemplate,\n        number: typeTemplate,\n        date: typeTemplate,\n        \"boolean\": typeTemplate,\n        integer: typeTemplate,\n        \"float\": typeTemplate,\n        regexp: typeTemplate,\n        email: typeTemplate,\n        url: typeTemplate,\n        hex: typeTemplate\n      },\n      string: {\n        len: '${label} must be ${len} characters',\n        min: '${label} must be at least ${min} characters',\n        max: '${label} must be up to ${max} characters',\n        range: '${label} must be between ${min}-${max} characters'\n      },\n      number: {\n        len: '${label} must be equal to ${len}',\n        min: '${label} must be minimum ${min}',\n        max: '${label} must be maximum ${max}',\n        range: '${label} must be between ${min}-${max}'\n      },\n      array: {\n        len: 'Must be ${len} ${label}',\n        min: 'At least ${min} ${label}',\n        max: 'At most ${max} ${label}',\n        range: 'The amount of ${label} must be between ${min}-${max}'\n      },\n      pattern: {\n        mismatch: '${label} does not match the pattern ${pattern}'\n      }\n    }\n  },\n  Image: {\n    preview: 'Preview'\n  }\n};\nexport default localeValues;","import locale from '../locale/default';\nexport default locale;","export default {\n  // Options.jsx\n  items_per_page: '/ page',\n  jump_to: 'Go to',\n  jump_to_confirm: 'confirm',\n  page: 'Page',\n  // Pagination.jsx\n  prev_page: 'Previous Page',\n  next_page: 'Next Page',\n  prev_5: 'Previous 5 Pages',\n  next_5: 'Next 5 Pages',\n  prev_3: 'Previous 3 Pages',\n  next_3: 'Next 3 Pages',\n  page_size: 'Page Size'\n};","import enUS from '../../date-picker/locale/en_US';\nexport default enUS;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport LocaleContext from './context';\nimport defaultLocaleData from './default';\nvar LocaleReceiver = function LocaleReceiver(props) {\n  var _props$componentName = props.componentName,\n    componentName = _props$componentName === void 0 ? 'global' : _props$componentName,\n    defaultLocale = props.defaultLocale,\n    children = props.children;\n  var antLocale = React.useContext(LocaleContext);\n  var getLocale = React.useMemo(function () {\n    var _a;\n    var locale = defaultLocale || defaultLocaleData[componentName];\n    var localeFromContext = (_a = antLocale === null || antLocale === void 0 ? void 0 : antLocale[componentName]) !== null && _a !== void 0 ? _a : {};\n    return _extends(_extends({}, locale instanceof Function ? locale() : locale), localeFromContext || {});\n  }, [componentName, defaultLocale, antLocale]);\n  var getLocaleCode = React.useMemo(function () {\n    var localeCode = antLocale && antLocale.locale;\n    // Had use LocaleProvide but didn't set locale\n    if (antLocale && antLocale.exist && !localeCode) {\n      return defaultLocaleData.locale;\n    }\n    return localeCode;\n  }, [antLocale]);\n  return children(getLocale, getLocaleCode, antLocale);\n};\nexport default LocaleReceiver;\nexport var useLocaleReceiver = function useLocaleReceiver(componentName, defaultLocale) {\n  var antLocale = React.useContext(LocaleContext);\n  var getLocale = React.useMemo(function () {\n    var _a;\n    var locale = defaultLocale || defaultLocaleData[componentName];\n    var localeFromContext = (_a = antLocale === null || antLocale === void 0 ? void 0 : antLocale[componentName]) !== null && _a !== void 0 ? _a : {};\n    return _extends(_extends({}, typeof locale === 'function' ? locale() : locale), localeFromContext || {});\n  }, [componentName, defaultLocale, antLocale]);\n  return [getLocale];\n};","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport { tuple } from './type';\nvar InputStatuses = tuple('warning', 'error', '');\nexport function getStatusClassNames(prefixCls, status, hasFeedback) {\n  var _classNames;\n  return classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-success\"), status === 'success'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-warning\"), status === 'warning'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-error\"), status === 'error'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-status-validating\"), status === 'validating'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-has-feedback\"), hasFeedback), _classNames));\n}\nexport var getMergedStatus = function getMergedStatus(contextStatus, customStatus) {\n  return customStatus || contextStatus;\n};","export function getPlaceholder(picker, locale, customizePlaceholder) {\n  if (customizePlaceholder !== undefined) {\n    return customizePlaceholder;\n  }\n  if (picker === 'year' && locale.lang.yearPlaceholder) {\n    return locale.lang.yearPlaceholder;\n  }\n  if (picker === 'quarter' && locale.lang.quarterPlaceholder) {\n    return locale.lang.quarterPlaceholder;\n  }\n  if (picker === 'month' && locale.lang.monthPlaceholder) {\n    return locale.lang.monthPlaceholder;\n  }\n  if (picker === 'week' && locale.lang.weekPlaceholder) {\n    return locale.lang.weekPlaceholder;\n  }\n  if (picker === 'time' && locale.timePickerLocale.placeholder) {\n    return locale.timePickerLocale.placeholder;\n  }\n  return locale.lang.placeholder;\n}\nexport function getRangePlaceholder(picker, locale, customizePlaceholder) {\n  if (customizePlaceholder !== undefined) {\n    return customizePlaceholder;\n  }\n  if (picker === 'year' && locale.lang.yearPlaceholder) {\n    return locale.lang.rangeYearPlaceholder;\n  }\n  if (picker === 'quarter' && locale.lang.quarterPlaceholder) {\n    return locale.lang.rangeQuarterPlaceholder;\n  }\n  if (picker === 'month' && locale.lang.monthPlaceholder) {\n    return locale.lang.rangeMonthPlaceholder;\n  }\n  if (picker === 'week' && locale.lang.weekPlaceholder) {\n    return locale.lang.rangeWeekPlaceholder;\n  }\n  if (picker === 'time' && locale.timePickerLocale.placeholder) {\n    return locale.timePickerLocale.rangePlaceholder;\n  }\n  return locale.lang.rangePlaceholder;\n}\nexport function transPlacement2DropdownAlign(direction, placement) {\n  var overflow = {\n    adjustX: 1,\n    adjustY: 1\n  };\n  switch (placement) {\n    case 'bottomLeft':\n      {\n        return {\n          points: ['tl', 'bl'],\n          offset: [0, 4],\n          overflow: overflow\n        };\n      }\n    case 'bottomRight':\n      {\n        return {\n          points: ['tr', 'br'],\n          offset: [0, 4],\n          overflow: overflow\n        };\n      }\n    case 'topLeft':\n      {\n        return {\n          points: ['bl', 'tl'],\n          offset: [0, -4],\n          overflow: overflow\n        };\n      }\n    case 'topRight':\n      {\n        return {\n          points: ['br', 'tr'],\n          offset: [0, -4],\n          overflow: overflow\n        };\n      }\n    default:\n      {\n        return {\n          points: direction === 'rtl' ? ['tr', 'br'] : ['tl', 'bl'],\n          offset: [0, 4],\n          overflow: overflow\n        };\n      }\n  }\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport CalendarOutlined from \"@ant-design/icons/es/icons/CalendarOutlined\";\nimport ClockCircleOutlined from \"@ant-design/icons/es/icons/ClockCircleOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport SwapRightOutlined from \"@ant-design/icons/es/icons/SwapRightOutlined\";\nimport classNames from 'classnames';\nimport { RangePicker as RCRangePicker } from 'rc-picker';\nimport * as React from 'react';\nimport { forwardRef, useContext, useImperativeHandle } from 'react';\nimport { Components, getTimeProps } from '.';\nimport { ConfigContext } from '../../config-provider';\nimport DisabledContext from '../../config-provider/DisabledContext';\nimport SizeContext from '../../config-provider/SizeContext';\nimport { FormItemInputContext } from '../../form/context';\nimport { useCompactItemContext } from '../../space/Compact';\nimport LocaleReceiver from '../../locale-provider/LocaleReceiver';\nimport { getMergedStatus, getStatusClassNames } from '../../_util/statusUtils';\nimport enUS from '../locale/en_US';\nimport { getRangePlaceholder, transPlacement2DropdownAlign } from '../util';\nimport warning from '../../_util/warning';\nexport default function generateRangePicker(generateConfig) {\n  var RangePicker = /*#__PURE__*/forwardRef(function (props, ref) {\n    var customizePrefixCls = props.prefixCls,\n      customGetPopupContainer = props.getPopupContainer,\n      className = props.className,\n      placement = props.placement,\n      customizeSize = props.size,\n      customDisabled = props.disabled,\n      _props$bordered = props.bordered,\n      bordered = _props$bordered === void 0 ? true : _props$bordered,\n      placeholder = props.placeholder,\n      popupClassName = props.popupClassName,\n      dropdownClassName = props.dropdownClassName,\n      customStatus = props.status,\n      restProps = __rest(props, [\"prefixCls\", \"getPopupContainer\", \"className\", \"placement\", \"size\", \"disabled\", \"bordered\", \"placeholder\", \"popupClassName\", \"dropdownClassName\", \"status\"]);\n    var innerRef = React.useRef(null);\n    var _useContext = useContext(ConfigContext),\n      getPrefixCls = _useContext.getPrefixCls,\n      direction = _useContext.direction,\n      getPopupContainer = _useContext.getPopupContainer;\n    var prefixCls = getPrefixCls('picker', customizePrefixCls);\n    var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n      compactSize = _useCompactItemContex.compactSize,\n      compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n    var format = props.format,\n      showTime = props.showTime,\n      picker = props.picker;\n    var rootPrefixCls = getPrefixCls();\n    var additionalOverrideProps = {};\n    additionalOverrideProps = _extends(_extends(_extends({}, additionalOverrideProps), showTime ? getTimeProps(_extends({\n      format: format,\n      picker: picker\n    }, showTime)) : {}), picker === 'time' ? getTimeProps(_extends(_extends({\n      format: format\n    }, props), {\n      picker: picker\n    })) : {});\n    process.env.NODE_ENV !== \"production\" ? warning(!dropdownClassName, 'RangePicker', '`dropdownClassName` is deprecated which will be removed in next major version. Please use `popupClassName` instead.') : void 0;\n    // ===================== Size =====================\n    var size = React.useContext(SizeContext);\n    var mergedSize = compactSize || customizeSize || size;\n    // ===================== Disabled =====================\n    var disabled = React.useContext(DisabledContext);\n    var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n    // ===================== FormItemInput =====================\n    var formItemContext = useContext(FormItemInputContext);\n    var hasFeedback = formItemContext.hasFeedback,\n      contextStatus = formItemContext.status,\n      feedbackIcon = formItemContext.feedbackIcon;\n    var suffixNode = /*#__PURE__*/React.createElement(React.Fragment, null, picker === 'time' ? /*#__PURE__*/React.createElement(ClockCircleOutlined, null) : /*#__PURE__*/React.createElement(CalendarOutlined, null), hasFeedback && feedbackIcon);\n    useImperativeHandle(ref, function () {\n      return {\n        focus: function focus() {\n          var _a;\n          return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n        },\n        blur: function blur() {\n          var _a;\n          return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.blur();\n        }\n      };\n    });\n    return /*#__PURE__*/React.createElement(LocaleReceiver, {\n      componentName: \"DatePicker\",\n      defaultLocale: enUS\n    }, function (contextLocale) {\n      var _classNames;\n      var locale = _extends(_extends({}, contextLocale), props.locale);\n      return /*#__PURE__*/React.createElement(RCRangePicker, _extends({\n        separator: /*#__PURE__*/React.createElement(\"span\", {\n          \"aria-label\": \"to\",\n          className: \"\".concat(prefixCls, \"-separator\")\n        }, /*#__PURE__*/React.createElement(SwapRightOutlined, null)),\n        disabled: mergedDisabled,\n        ref: innerRef,\n        dropdownAlign: transPlacement2DropdownAlign(direction, placement),\n        placeholder: getRangePlaceholder(picker, locale, placeholder),\n        suffixIcon: suffixNode,\n        clearIcon: /*#__PURE__*/React.createElement(CloseCircleFilled, null),\n        prevIcon: /*#__PURE__*/React.createElement(\"span\", {\n          className: \"\".concat(prefixCls, \"-prev-icon\")\n        }),\n        nextIcon: /*#__PURE__*/React.createElement(\"span\", {\n          className: \"\".concat(prefixCls, \"-next-icon\")\n        }),\n        superPrevIcon: /*#__PURE__*/React.createElement(\"span\", {\n          className: \"\".concat(prefixCls, \"-super-prev-icon\")\n        }),\n        superNextIcon: /*#__PURE__*/React.createElement(\"span\", {\n          className: \"\".concat(prefixCls, \"-super-next-icon\")\n        }),\n        allowClear: true,\n        transitionName: \"\".concat(rootPrefixCls, \"-slide-up\")\n      }, restProps, additionalOverrideProps, {\n        className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(mergedSize), mergedSize), _defineProperty(_classNames, \"\".concat(prefixCls, \"-borderless\"), !bordered), _classNames), getStatusClassNames(prefixCls, getMergedStatus(contextStatus, customStatus), hasFeedback), compactItemClassnames, className),\n        locale: locale.lang,\n        prefixCls: prefixCls,\n        getPopupContainer: customGetPopupContainer || getPopupContainer,\n        generateConfig: generateConfig,\n        components: Components,\n        direction: direction,\n        dropdownClassName: popupClassName || dropdownClassName\n      }));\n    });\n  });\n  return RangePicker;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport CalendarOutlined from \"@ant-design/icons/es/icons/CalendarOutlined\";\nimport ClockCircleOutlined from \"@ant-design/icons/es/icons/ClockCircleOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport classNames from 'classnames';\nimport RCPicker from 'rc-picker';\nimport * as React from 'react';\nimport { forwardRef, useContext, useImperativeHandle } from 'react';\nimport { useCompactItemContext } from '../../space/Compact';\nimport { Components, getTimeProps } from '.';\nimport { ConfigContext } from '../../config-provider';\nimport DisabledContext from '../../config-provider/DisabledContext';\nimport SizeContext from '../../config-provider/SizeContext';\nimport { FormItemInputContext } from '../../form/context';\nimport LocaleReceiver from '../../locale-provider/LocaleReceiver';\nimport { getMergedStatus, getStatusClassNames } from '../../_util/statusUtils';\nimport warning from '../../_util/warning';\nimport enUS from '../locale/en_US';\nimport { getPlaceholder, transPlacement2DropdownAlign } from '../util';\nexport default function generatePicker(generateConfig) {\n  function getPicker(picker, displayName) {\n    var Picker = /*#__PURE__*/forwardRef(function (props, ref) {\n      var customizePrefixCls = props.prefixCls,\n        customizeGetPopupContainer = props.getPopupContainer,\n        className = props.className,\n        customizeSize = props.size,\n        _props$bordered = props.bordered,\n        bordered = _props$bordered === void 0 ? true : _props$bordered,\n        placement = props.placement,\n        placeholder = props.placeholder,\n        popupClassName = props.popupClassName,\n        dropdownClassName = props.dropdownClassName,\n        customDisabled = props.disabled,\n        customStatus = props.status,\n        restProps = __rest(props, [\"prefixCls\", \"getPopupContainer\", \"className\", \"size\", \"bordered\", \"placement\", \"placeholder\", \"popupClassName\", \"dropdownClassName\", \"disabled\", \"status\"]);\n      var _useContext = useContext(ConfigContext),\n        getPrefixCls = _useContext.getPrefixCls,\n        direction = _useContext.direction,\n        getPopupContainer = _useContext.getPopupContainer;\n      var prefixCls = getPrefixCls('picker', customizePrefixCls);\n      var _useCompactItemContex = useCompactItemContext(prefixCls, direction),\n        compactSize = _useCompactItemContex.compactSize,\n        compactItemClassnames = _useCompactItemContex.compactItemClassnames;\n      var innerRef = React.useRef(null);\n      var format = props.format,\n        showTime = props.showTime;\n      useImperativeHandle(ref, function () {\n        return {\n          focus: function focus() {\n            var _a;\n            return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n          },\n          blur: function blur() {\n            var _a;\n            return (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.blur();\n          }\n        };\n      });\n      var additionalProps = {\n        showToday: true\n      };\n      var additionalOverrideProps = {};\n      if (picker) {\n        additionalOverrideProps.picker = picker;\n      }\n      var mergedPicker = picker || props.picker;\n      additionalOverrideProps = _extends(_extends(_extends({}, additionalOverrideProps), showTime ? getTimeProps(_extends({\n        format: format,\n        picker: mergedPicker\n      }, showTime)) : {}), mergedPicker === 'time' ? getTimeProps(_extends(_extends({\n        format: format\n      }, props), {\n        picker: mergedPicker\n      })) : {});\n      var rootPrefixCls = getPrefixCls();\n      // =================== Warning =====================\n      process.env.NODE_ENV !== \"production\" ? warning(picker !== 'quarter', displayName, \"DatePicker.\".concat(displayName, \" is legacy usage. Please use DatePicker[picker='\").concat(picker, \"'] directly.\")) : void 0;\n      process.env.NODE_ENV !== \"production\" ? warning(!dropdownClassName, mergedPicker === 'time' ? 'TimePicker' : 'DatePicker', '`dropdownClassName` is deprecated which will be removed in next major version. Please use `popupClassName` instead.') : void 0;\n      // ===================== Size =====================\n      var size = React.useContext(SizeContext);\n      var mergedSize = compactSize || customizeSize || size;\n      // ===================== Disabled =====================\n      var disabled = React.useContext(DisabledContext);\n      var mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n      // ===================== FormItemInput =====================\n      var formItemContext = useContext(FormItemInputContext);\n      var hasFeedback = formItemContext.hasFeedback,\n        contextStatus = formItemContext.status,\n        feedbackIcon = formItemContext.feedbackIcon;\n      var suffixNode = /*#__PURE__*/React.createElement(React.Fragment, null, mergedPicker === 'time' ? /*#__PURE__*/React.createElement(ClockCircleOutlined, null) : /*#__PURE__*/React.createElement(CalendarOutlined, null), hasFeedback && feedbackIcon);\n      return /*#__PURE__*/React.createElement(LocaleReceiver, {\n        componentName: \"DatePicker\",\n        defaultLocale: enUS\n      }, function (contextLocale) {\n        var _classNames;\n        var locale = _extends(_extends({}, contextLocale), props.locale);\n        return /*#__PURE__*/React.createElement(RCPicker, _extends({\n          ref: innerRef,\n          placeholder: getPlaceholder(mergedPicker, locale, placeholder),\n          suffixIcon: suffixNode,\n          dropdownAlign: transPlacement2DropdownAlign(direction, placement),\n          clearIcon: /*#__PURE__*/React.createElement(CloseCircleFilled, null),\n          prevIcon: /*#__PURE__*/React.createElement(\"span\", {\n            className: \"\".concat(prefixCls, \"-prev-icon\")\n          }),\n          nextIcon: /*#__PURE__*/React.createElement(\"span\", {\n            className: \"\".concat(prefixCls, \"-next-icon\")\n          }),\n          superPrevIcon: /*#__PURE__*/React.createElement(\"span\", {\n            className: \"\".concat(prefixCls, \"-super-prev-icon\")\n          }),\n          superNextIcon: /*#__PURE__*/React.createElement(\"span\", {\n            className: \"\".concat(prefixCls, \"-super-next-icon\")\n          }),\n          allowClear: true,\n          transitionName: \"\".concat(rootPrefixCls, \"-slide-up\")\n        }, additionalProps, restProps, additionalOverrideProps, {\n          locale: locale.lang,\n          className: classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-\").concat(mergedSize), mergedSize), _defineProperty(_classNames, \"\".concat(prefixCls, \"-borderless\"), !bordered), _classNames), getStatusClassNames(prefixCls, getMergedStatus(contextStatus, customStatus), hasFeedback), compactItemClassnames, className),\n          prefixCls: prefixCls,\n          getPopupContainer: customizeGetPopupContainer || getPopupContainer,\n          generateConfig: generateConfig,\n          components: Components,\n          direction: direction,\n          disabled: mergedDisabled,\n          dropdownClassName: popupClassName || dropdownClassName\n        }));\n      });\n    });\n    if (displayName) {\n      Picker.displayName = displayName;\n    }\n    return Picker;\n  }\n  var DatePicker = getPicker();\n  var WeekPicker = getPicker('week', 'WeekPicker');\n  var MonthPicker = getPicker('month', 'MonthPicker');\n  var YearPicker = getPicker('year', 'YearPicker');\n  var TimePicker = getPicker('time', 'TimePicker');\n  var QuarterPicker = getPicker('quarter', 'QuarterPicker');\n  return {\n    DatePicker: DatePicker,\n    WeekPicker: WeekPicker,\n    MonthPicker: MonthPicker,\n    YearPicker: YearPicker,\n    TimePicker: TimePicker,\n    QuarterPicker: QuarterPicker\n  };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { tuple } from '../../_util/type';\nimport PickerButton from '../PickerButton';\nimport PickerTag from '../PickerTag';\nimport generateRangePicker from './generateRangePicker';\nimport generateSinglePicker from './generateSinglePicker';\nexport var Components = {\n  button: PickerButton,\n  rangeItem: PickerTag\n};\nfunction toArray(list) {\n  if (!list) {\n    return [];\n  }\n  return Array.isArray(list) ? list : [list];\n}\nexport function getTimeProps(props) {\n  var format = props.format,\n    picker = props.picker,\n    showHour = props.showHour,\n    showMinute = props.showMinute,\n    showSecond = props.showSecond,\n    use12Hours = props.use12Hours;\n  var firstFormat = toArray(format)[0];\n  var showTimeObj = _extends({}, props);\n  if (firstFormat && typeof firstFormat === 'string') {\n    if (!firstFormat.includes('s') && showSecond === undefined) {\n      showTimeObj.showSecond = false;\n    }\n    if (!firstFormat.includes('m') && showMinute === undefined) {\n      showTimeObj.showMinute = false;\n    }\n    if (!firstFormat.includes('H') && !firstFormat.includes('h') && showHour === undefined) {\n      showTimeObj.showHour = false;\n    }\n    if ((firstFormat.includes('a') || firstFormat.includes('A')) && use12Hours === undefined) {\n      showTimeObj.use12Hours = true;\n    }\n  }\n  if (picker === 'time') {\n    return showTimeObj;\n  }\n  if (typeof firstFormat === 'function') {\n    // format of showTime should use default when format is custom format function\n    delete showTimeObj.format;\n  }\n  return {\n    showTime: showTimeObj\n  };\n}\nvar DataPickerPlacements = tuple('bottomLeft', 'bottomRight', 'topLeft', 'topRight');\nfunction generatePicker(generateConfig) {\n  // =========================== Picker ===========================\n  var _generateSinglePicker = generateSinglePicker(generateConfig),\n    DatePicker = _generateSinglePicker.DatePicker,\n    WeekPicker = _generateSinglePicker.WeekPicker,\n    MonthPicker = _generateSinglePicker.MonthPicker,\n    YearPicker = _generateSinglePicker.YearPicker,\n    TimePicker = _generateSinglePicker.TimePicker,\n    QuarterPicker = _generateSinglePicker.QuarterPicker;\n  // ======================== Range Picker ========================\n  var RangePicker = generateRangePicker(generateConfig);\n  var MergedDatePicker = DatePicker;\n  MergedDatePicker.WeekPicker = WeekPicker;\n  MergedDatePicker.MonthPicker = MonthPicker;\n  MergedDatePicker.YearPicker = YearPicker;\n  MergedDatePicker.RangePicker = RangePicker;\n  MergedDatePicker.TimePicker = TimePicker;\n  MergedDatePicker.QuarterPicker = QuarterPicker;\n  return MergedDatePicker;\n}\nexport default generatePicker;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Button from '../button';\nexport default function PickerButton(props) {\n  return /*#__PURE__*/React.createElement(Button, _extends({\n    size: \"small\",\n    type: \"primary\"\n  }, props));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Tag from '../tag';\nexport default function PickerTag(props) {\n  return /*#__PURE__*/React.createElement(Tag, _extends({\n    color: \"blue\"\n  }, props));\n}","import momentGenerateConfig from \"rc-picker/es/generate/moment\";\nimport generatePicker from './generatePicker';\nvar DatePicker = generatePicker(momentGenerateConfig);\nexport default DatePicker;","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport default function isObjectLike(value) {\n  return _typeof(value) == 'object' && value !== null;\n}\n","// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nexport var SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';\n","/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n  var lineRegexp = /\\r\\n|[\\n\\r]/g;\n  var line = 1;\n  var column = position + 1;\n  var match;\n\n  while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n    line += 1;\n    column = position + 1 - (match.index + match[0].length);\n  }\n\n  return {\n    line: line,\n    column: column\n  };\n}\n","import { getLocation } from \"./location.mjs\";\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printLocation(location) {\n  return printSourceLocation(location.source, getLocation(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n  var firstLineColumnOffset = source.locationOffset.column - 1;\n  var body = whitespace(firstLineColumnOffset) + source.body;\n  var lineIndex = sourceLocation.line - 1;\n  var lineOffset = source.locationOffset.line - 1;\n  var lineNum = sourceLocation.line + lineOffset;\n  var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n  var columnNum = sourceLocation.column + columnOffset;\n  var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n  var lines = body.split(/\\r\\n|[\\n\\r]/g);\n  var locationLine = lines[lineIndex]; // Special case for minified documents\n\n  if (locationLine.length > 120) {\n    var subLineIndex = Math.floor(columnNum / 80);\n    var subLineColumnNum = columnNum % 80;\n    var subLines = [];\n\n    for (var i = 0; i < locationLine.length; i += 80) {\n      subLines.push(locationLine.slice(i, i + 80));\n    }\n\n    return locationStr + printPrefixedLines([[\"\".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function (subLine) {\n      return ['', subLine];\n    }), [[' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]));\n  }\n\n  return locationStr + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n  [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n  var existingLines = lines.filter(function (_ref) {\n    var _ = _ref[0],\n        line = _ref[1];\n    return line !== undefined;\n  });\n  var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n    var prefix = _ref2[0];\n    return prefix.length;\n  }));\n  return existingLines.map(function (_ref3) {\n    var prefix = _ref3[0],\n        line = _ref3[1];\n    return leftPad(padLen, prefix) + (line ? ' | ' + line : ' |');\n  }).join('\\n');\n}\n\nfunction whitespace(len) {\n  return Array(len + 1).join(' ');\n}\n\nfunction leftPad(len, str) {\n  return whitespace(len - str.length) + str;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\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\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport isObjectLike from \"../jsutils/isObjectLike.mjs\";\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport { getLocation } from \"../language/location.mjs\";\nimport { printLocation, printSourceLocation } from \"../language/printLocation.mjs\";\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport var GraphQLError = /*#__PURE__*/function (_Error) {\n  _inherits(GraphQLError, _Error);\n\n  var _super = _createSuper(GraphQLError);\n\n  /**\n   * An array of { line, column } locations within the source GraphQL document\n   * which correspond to this error.\n   *\n   * Errors during validation often contain multiple locations, for example to\n   * point out two things with the same name. Errors during execution include a\n   * single location, the field which produced the error.\n   *\n   * Enumerable, and appears in the result of JSON.stringify().\n   */\n\n  /**\n   * An array describing the JSON-path into the execution response which\n   * corresponds to this error. Only included for errors during execution.\n   *\n   * Enumerable, and appears in the result of JSON.stringify().\n   */\n\n  /**\n   * An array of GraphQL AST Nodes corresponding to this error.\n   */\n\n  /**\n   * The source GraphQL document for the first location of this error.\n   *\n   * Note that if this Error represents more than one node, the source may not\n   * represent nodes after the first node.\n   */\n\n  /**\n   * An array of character offsets within the source GraphQL document\n   * which correspond to this error.\n   */\n\n  /**\n   * The original error thrown from a field resolver during execution.\n   */\n\n  /**\n   * Extension fields to add to the formatted error.\n   */\n  function GraphQLError(message, nodes, source, positions, path, originalError, extensions) {\n    var _nodeLocations, _nodeLocations2, _nodeLocations3;\n\n    var _this;\n\n    _classCallCheck(this, GraphQLError);\n\n    _this = _super.call(this, message);\n    _this.name = 'GraphQLError';\n    _this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined; // Compute list of blame nodes.\n\n    _this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined);\n    var nodeLocations = [];\n\n    for (var _i2 = 0, _ref3 = (_this$nodes = _this.nodes) !== null && _this$nodes !== void 0 ? _this$nodes : []; _i2 < _ref3.length; _i2++) {\n      var _this$nodes;\n\n      var _ref4 = _ref3[_i2];\n      var loc = _ref4.loc;\n\n      if (loc != null) {\n        nodeLocations.push(loc);\n      }\n    }\n\n    nodeLocations = undefinedIfEmpty(nodeLocations); // Compute locations in the source for the given nodes/positions.\n\n    _this.source = source !== null && source !== void 0 ? source : (_nodeLocations = nodeLocations) === null || _nodeLocations === void 0 ? void 0 : _nodeLocations[0].source;\n    _this.positions = positions !== null && positions !== void 0 ? positions : (_nodeLocations2 = nodeLocations) === null || _nodeLocations2 === void 0 ? void 0 : _nodeLocations2.map(function (loc) {\n      return loc.start;\n    });\n    _this.locations = positions && source ? positions.map(function (pos) {\n      return getLocation(source, pos);\n    }) : (_nodeLocations3 = nodeLocations) === null || _nodeLocations3 === void 0 ? void 0 : _nodeLocations3.map(function (loc) {\n      return getLocation(loc.source, loc.start);\n    });\n    _this.path = path !== null && path !== void 0 ? path : undefined;\n    var originalExtensions = originalError === null || originalError === void 0 ? void 0 : originalError.extensions;\n\n    if (extensions == null && isObjectLike(originalExtensions)) {\n      _this.extensions = _objectSpread({}, originalExtensions);\n    } else {\n      _this.extensions = extensions !== null && extensions !== void 0 ? extensions : {};\n    } // By being enumerable, JSON.stringify will include bellow properties in the resulting output.\n    // This ensures that the simplest possible GraphQL service adheres to the spec.\n\n\n    Object.defineProperties(_assertThisInitialized(_this), {\n      message: {\n        enumerable: true\n      },\n      locations: {\n        enumerable: _this.locations != null\n      },\n      path: {\n        enumerable: _this.path != null\n      },\n      extensions: {\n        enumerable: _this.extensions != null && Object.keys(_this.extensions).length > 0\n      },\n      name: {\n        enumerable: false\n      },\n      nodes: {\n        enumerable: false\n      },\n      source: {\n        enumerable: false\n      },\n      positions: {\n        enumerable: false\n      },\n      originalError: {\n        enumerable: false\n      }\n    }); // Include (non-enumerable) stack trace.\n\n    if (originalError !== null && originalError !== void 0 && originalError.stack) {\n      Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n        value: originalError.stack,\n        writable: true,\n        configurable: true\n      });\n      return _possibleConstructorReturn(_this);\n    } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError);\n    } else {\n      Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n        value: Error().stack,\n        writable: true,\n        configurable: true\n      });\n    }\n\n    return _this;\n  }\n\n  _createClass(GraphQLError, [{\n    key: \"toString\",\n    value: function toString() {\n      return printError(this);\n    } // FIXME: workaround to not break chai comparisons, should be remove in v16\n    // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n  }, {\n    key: SYMBOL_TO_STRING_TAG,\n    get: function get() {\n      return 'Object';\n    }\n  }]);\n\n  return GraphQLError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nfunction undefinedIfEmpty(array) {\n  return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\n\nexport function printError(error) {\n  var output = error.message;\n\n  if (error.nodes) {\n    for (var _i4 = 0, _error$nodes2 = error.nodes; _i4 < _error$nodes2.length; _i4++) {\n      var node = _error$nodes2[_i4];\n\n      if (node.loc) {\n        output += '\\n\\n' + printLocation(node.loc);\n      }\n    }\n  } else if (error.source && error.locations) {\n    for (var _i6 = 0, _error$locations2 = error.locations; _i6 < _error$locations2.length; _i6++) {\n      var location = _error$locations2[_i6];\n      output += '\\n\\n' + printSourceLocation(error.source, location);\n    }\n  }\n\n  return output;\n}\n","import { GraphQLError } from \"./GraphQLError.mjs\";\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n  return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}\n","/**\n * The set of allowed kind values for AST nodes.\n */\nexport var Kind = Object.freeze({\n  // Name\n  NAME: 'Name',\n  // Document\n  DOCUMENT: 'Document',\n  OPERATION_DEFINITION: 'OperationDefinition',\n  VARIABLE_DEFINITION: 'VariableDefinition',\n  SELECTION_SET: 'SelectionSet',\n  FIELD: 'Field',\n  ARGUMENT: 'Argument',\n  // Fragments\n  FRAGMENT_SPREAD: 'FragmentSpread',\n  INLINE_FRAGMENT: 'InlineFragment',\n  FRAGMENT_DEFINITION: 'FragmentDefinition',\n  // Values\n  VARIABLE: 'Variable',\n  INT: 'IntValue',\n  FLOAT: 'FloatValue',\n  STRING: 'StringValue',\n  BOOLEAN: 'BooleanValue',\n  NULL: 'NullValue',\n  ENUM: 'EnumValue',\n  LIST: 'ListValue',\n  OBJECT: 'ObjectValue',\n  OBJECT_FIELD: 'ObjectField',\n  // Directives\n  DIRECTIVE: 'Directive',\n  // Types\n  NAMED_TYPE: 'NamedType',\n  LIST_TYPE: 'ListType',\n  NON_NULL_TYPE: 'NonNullType',\n  // Type System Definitions\n  SCHEMA_DEFINITION: 'SchemaDefinition',\n  OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n  // Type Definitions\n  SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n  OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n  FIELD_DEFINITION: 'FieldDefinition',\n  INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n  INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n  UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n  ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n  ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n  INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n  // Directive Definitions\n  DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n  // Type System Extensions\n  SCHEMA_EXTENSION: 'SchemaExtension',\n  // Type Extensions\n  SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n  OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n  INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n  UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n  ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n  INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */\n","// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nexport default nodejsCustomInspectSymbol;\n","import invariant from \"./invariant.mjs\";\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\n/**\n * The `defineInspect()` function defines `inspect()` prototype method as alias of `toJSON`\n */\n\nexport default function defineInspect(classObject) {\n  var fn = classObject.prototype.toJSON;\n  typeof fn === 'function' || invariant(0);\n  classObject.prototype.inspect = fn; // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n  if (nodejsCustomInspectSymbol) {\n    classObject.prototype[nodejsCustomInspectSymbol] = fn;\n  }\n}\n","export default function invariant(condition, message) {\n  var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n  if (!booleanCondition) {\n    throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n  }\n}\n","import defineInspect from \"../jsutils/defineInspect.mjs\";\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport var Location = /*#__PURE__*/function () {\n  /**\n   * The character offset at which this Node begins.\n   */\n\n  /**\n   * The character offset at which this Node ends.\n   */\n\n  /**\n   * The Token at which this Node begins.\n   */\n\n  /**\n   * The Token at which this Node ends.\n   */\n\n  /**\n   * The Source document the AST represents.\n   */\n  function Location(startToken, endToken, source) {\n    this.start = startToken.start;\n    this.end = endToken.end;\n    this.startToken = startToken;\n    this.endToken = endToken;\n    this.source = source;\n  }\n\n  var _proto = Location.prototype;\n\n  _proto.toJSON = function toJSON() {\n    return {\n      start: this.start,\n      end: this.end\n    };\n  };\n\n  return Location;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Location);\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport var Token = /*#__PURE__*/function () {\n  /**\n   * The kind of Token.\n   */\n\n  /**\n   * The character offset at which this Node begins.\n   */\n\n  /**\n   * The character offset at which this Node ends.\n   */\n\n  /**\n   * The 1-indexed line number on which this Token appears.\n   */\n\n  /**\n   * The 1-indexed column number at which this Token begins.\n   */\n\n  /**\n   * For non-punctuation tokens, represents the interpreted value of the token.\n   */\n\n  /**\n   * Tokens exist as nodes in a double-linked-list amongst all tokens\n   * including ignored tokens. <SOF> is always the first node and <EOF>\n   * the last.\n   */\n  function Token(kind, start, end, line, column, prev, value) {\n    this.kind = kind;\n    this.start = start;\n    this.end = end;\n    this.line = line;\n    this.column = column;\n    this.value = value;\n    this.prev = prev;\n    this.next = null;\n  }\n\n  var _proto2 = Token.prototype;\n\n  _proto2.toJSON = function toJSON() {\n    return {\n      kind: this.kind,\n      value: this.value,\n      line: this.line,\n      column: this.column\n    };\n  };\n\n  return Token;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Token);\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n  return maybeNode != null && typeof maybeNode.kind === 'string';\n}\n/**\n * The list of all possible AST node types.\n */\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport var TokenKind = Object.freeze({\n  SOF: '<SOF>',\n  EOF: '<EOF>',\n  BANG: '!',\n  DOLLAR: '$',\n  AMP: '&',\n  PAREN_L: '(',\n  PAREN_R: ')',\n  SPREAD: '...',\n  COLON: ':',\n  EQUALS: '=',\n  AT: '@',\n  BRACKET_L: '[',\n  BRACKET_R: ']',\n  BRACE_L: '{',\n  PIPE: '|',\n  BRACE_R: '}',\n  NAME: 'Name',\n  INT: 'Int',\n  FLOAT: 'Float',\n  STRING: 'String',\n  BLOCK_STRING: 'BlockString',\n  COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable flowtype/no-weak-types */\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport default function inspect(value) {\n  return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n  switch (_typeof(value)) {\n    case 'string':\n      return JSON.stringify(value);\n\n    case 'function':\n      return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n    case 'object':\n      if (value === null) {\n        return 'null';\n      }\n\n      return formatObjectValue(value, seenValues);\n\n    default:\n      return String(value);\n  }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n  if (previouslySeenValues.indexOf(value) !== -1) {\n    return '[Circular]';\n  }\n\n  var seenValues = [].concat(previouslySeenValues, [value]);\n  var customInspectFn = getCustomFn(value);\n\n  if (customInspectFn !== undefined) {\n    var customValue = customInspectFn.call(value); // check for infinite recursion\n\n    if (customValue !== value) {\n      return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n    }\n  } else if (Array.isArray(value)) {\n    return formatArray(value, seenValues);\n  }\n\n  return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n  var keys = Object.keys(object);\n\n  if (keys.length === 0) {\n    return '{}';\n  }\n\n  if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n    return '[' + getObjectTag(object) + ']';\n  }\n\n  var properties = keys.map(function (key) {\n    var value = formatValue(object[key], seenValues);\n    return key + ': ' + value;\n  });\n  return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n  if (array.length === 0) {\n    return '[]';\n  }\n\n  if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n    return '[Array]';\n  }\n\n  var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n  var remaining = array.length - len;\n  var items = [];\n\n  for (var i = 0; i < len; ++i) {\n    items.push(formatValue(array[i], seenValues));\n  }\n\n  if (remaining === 1) {\n    items.push('... 1 more item');\n  } else if (remaining > 1) {\n    items.push(\"... \".concat(remaining, \" more items\"));\n  }\n\n  return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n  var customInspectFn = object[String(nodejsCustomInspectSymbol)];\n\n  if (typeof customInspectFn === 'function') {\n    return customInspectFn;\n  }\n\n  if (typeof object.inspect === 'function') {\n    return object.inspect;\n  }\n}\n\nfunction getObjectTag(object) {\n  var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n  if (tag === 'Object' && typeof object.constructor === 'function') {\n    var name = object.constructor.name;\n\n    if (typeof name === 'string' && name !== '') {\n      return name;\n    }\n  }\n\n  return tag;\n}\n","export default function devAssert(condition, message) {\n  var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n  if (!booleanCondition) {\n    throw new Error(message);\n  }\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport inspect from \"./inspect.mjs\";\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n */\n\n// See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n// See: https://webpack.js.org/guides/production/\nexport default process.env.NODE_ENV === 'production' ? // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n// eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n  return value instanceof constructor;\n} : // eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n  if (value instanceof constructor) {\n    return true;\n  }\n\n  if (_typeof(value) === 'object' && value !== null) {\n    var _value$constructor;\n\n    var className = constructor.prototype[Symbol.toStringTag];\n    var valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n    Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name;\n\n    if (className === valueClassName) {\n      var stringifiedValue = inspect(value);\n      throw new Error(\"Cannot use \".concat(className, \" \\\"\").concat(stringifiedValue, \"\\\" from another module or realm.\\n\\nEnsure that there is only one instance of \\\"graphql\\\" in the node_modules\\ndirectory. If different versions of \\\"graphql\\\" are the dependencies of other\\nrelied on modules, use \\\"resolutions\\\" to ensure only one version is installed.\\n\\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\\n\\nDuplicate \\\"graphql\\\" modules cannot be used at the same time since different\\nversions may have different capabilities and behavior. The data from one\\nversion used in the function from another could produce confusing and\\nspurious results.\"));\n    }\n  }\n\n  return false;\n};\n","function _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\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport inspect from \"../jsutils/inspect.mjs\";\nimport devAssert from \"../jsutils/devAssert.mjs\";\nimport instanceOf from \"../jsutils/instanceOf.mjs\";\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport var Source = /*#__PURE__*/function () {\n  function Source(body) {\n    var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';\n    var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n      line: 1,\n      column: 1\n    };\n    typeof body === 'string' || devAssert(0, \"Body must be a string. Received: \".concat(inspect(body), \".\"));\n    this.body = body;\n    this.name = name;\n    this.locationOffset = locationOffset;\n    this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive.');\n    this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive.');\n  } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n\n  _createClass(Source, [{\n    key: SYMBOL_TO_STRING_TAG,\n    get: function get() {\n      return 'Source';\n    }\n  }]);\n\n  return Source;\n}();\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\n// eslint-disable-next-line no-redeclare\nexport function isSource(source) {\n  return instanceOf(source, Source);\n}\n","/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n  // Request Definitions\n  QUERY: 'QUERY',\n  MUTATION: 'MUTATION',\n  SUBSCRIPTION: 'SUBSCRIPTION',\n  FIELD: 'FIELD',\n  FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n  FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n  INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n  VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n  // Type System Definitions\n  SCHEMA: 'SCHEMA',\n  SCALAR: 'SCALAR',\n  OBJECT: 'OBJECT',\n  FIELD_DEFINITION: 'FIELD_DEFINITION',\n  ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n  INTERFACE: 'INTERFACE',\n  UNION: 'UNION',\n  ENUM: 'ENUM',\n  ENUM_VALUE: 'ENUM_VALUE',\n  INPUT_OBJECT: 'INPUT_OBJECT',\n  INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */\n","/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nexport function dedentBlockStringValue(rawString) {\n  // Expand a block string's raw value into independent lines.\n  var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n  var commonIndent = getBlockStringIndentation(rawString);\n\n  if (commonIndent !== 0) {\n    for (var i = 1; i < lines.length; i++) {\n      lines[i] = lines[i].slice(commonIndent);\n    }\n  } // Remove leading and trailing blank lines.\n\n\n  var startLine = 0;\n\n  while (startLine < lines.length && isBlank(lines[startLine])) {\n    ++startLine;\n  }\n\n  var endLine = lines.length;\n\n  while (endLine > startLine && isBlank(lines[endLine - 1])) {\n    --endLine;\n  } // Return a string of the lines joined with U+000A.\n\n\n  return lines.slice(startLine, endLine).join('\\n');\n}\n\nfunction isBlank(str) {\n  for (var i = 0; i < str.length; ++i) {\n    if (str[i] !== ' ' && str[i] !== '\\t') {\n      return false;\n    }\n  }\n\n  return true;\n}\n/**\n * @internal\n */\n\n\nexport function getBlockStringIndentation(value) {\n  var _commonIndent;\n\n  var isFirstLine = true;\n  var isEmptyLine = true;\n  var indent = 0;\n  var commonIndent = null;\n\n  for (var i = 0; i < value.length; ++i) {\n    switch (value.charCodeAt(i)) {\n      case 13:\n        //  \\r\n        if (value.charCodeAt(i + 1) === 10) {\n          ++i; // skip \\r\\n as one symbol\n        }\n\n      // falls through\n\n      case 10:\n        //  \\n\n        isFirstLine = false;\n        isEmptyLine = true;\n        indent = 0;\n        break;\n\n      case 9: //   \\t\n\n      case 32:\n        //  <space>\n        ++indent;\n        break;\n\n      default:\n        if (isEmptyLine && !isFirstLine && (commonIndent === null || indent < commonIndent)) {\n          commonIndent = indent;\n        }\n\n        isEmptyLine = false;\n    }\n  }\n\n  return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value) {\n  var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n  var isSingleLine = value.indexOf('\\n') === -1;\n  var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n  var hasTrailingQuote = value[value.length - 1] === '\"';\n  var hasTrailingSlash = value[value.length - 1] === '\\\\';\n  var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;\n  var result = ''; // Format a multi-line block quote to account for leading space.\n\n  if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n    result += '\\n' + indentation;\n  }\n\n  result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n  if (printAsMultipleLines) {\n    result += '\\n';\n  }\n\n  return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Token } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { dedentBlockStringValue } from \"./blockString.mjs\";\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport var Lexer = /*#__PURE__*/function () {\n  /**\n   * The previously focused non-ignored token.\n   */\n\n  /**\n   * The currently focused non-ignored token.\n   */\n\n  /**\n   * The (1-indexed) line containing the current token.\n   */\n\n  /**\n   * The character offset at which the current line begins.\n   */\n  function Lexer(source) {\n    var startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0, null);\n    this.source = source;\n    this.lastToken = startOfFileToken;\n    this.token = startOfFileToken;\n    this.line = 1;\n    this.lineStart = 0;\n  }\n  /**\n   * Advances the token stream to the next non-ignored token.\n   */\n\n\n  var _proto = Lexer.prototype;\n\n  _proto.advance = function advance() {\n    this.lastToken = this.token;\n    var token = this.token = this.lookahead();\n    return token;\n  }\n  /**\n   * Looks ahead and returns the next non-ignored token, but does not change\n   * the state of Lexer.\n   */\n  ;\n\n  _proto.lookahead = function lookahead() {\n    var token = this.token;\n\n    if (token.kind !== TokenKind.EOF) {\n      do {\n        var _token$next;\n\n        // Note: next is only mutable during parsing, so we cast to allow this.\n        token = (_token$next = token.next) !== null && _token$next !== void 0 ? _token$next : token.next = readToken(this, token);\n      } while (token.kind === TokenKind.COMMENT);\n    }\n\n    return token;\n  };\n\n  return Lexer;\n}();\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n  return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;\n}\n\nfunction printCharCode(code) {\n  return (// NaN/undefined represents access beyond the end of the file.\n    isNaN(code) ? TokenKind.EOF : // Trust JSON for ASCII.\n    code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n    \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n  );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n  var source = lexer.source;\n  var body = source.body;\n  var bodyLength = body.length;\n  var pos = prev.end;\n\n  while (pos < bodyLength) {\n    var code = body.charCodeAt(pos);\n    var _line = lexer.line;\n\n    var _col = 1 + pos - lexer.lineStart; // SourceCharacter\n\n\n    switch (code) {\n      case 0xfeff: // <BOM>\n\n      case 9: //   \\t\n\n      case 32: //  <space>\n\n      case 44:\n        //  ,\n        ++pos;\n        continue;\n\n      case 10:\n        //  \\n\n        ++pos;\n        ++lexer.line;\n        lexer.lineStart = pos;\n        continue;\n\n      case 13:\n        //  \\r\n        if (body.charCodeAt(pos + 1) === 10) {\n          pos += 2;\n        } else {\n          ++pos;\n        }\n\n        ++lexer.line;\n        lexer.lineStart = pos;\n        continue;\n\n      case 33:\n        //  !\n        return new Token(TokenKind.BANG, pos, pos + 1, _line, _col, prev);\n\n      case 35:\n        //  #\n        return readComment(source, pos, _line, _col, prev);\n\n      case 36:\n        //  $\n        return new Token(TokenKind.DOLLAR, pos, pos + 1, _line, _col, prev);\n\n      case 38:\n        //  &\n        return new Token(TokenKind.AMP, pos, pos + 1, _line, _col, prev);\n\n      case 40:\n        //  (\n        return new Token(TokenKind.PAREN_L, pos, pos + 1, _line, _col, prev);\n\n      case 41:\n        //  )\n        return new Token(TokenKind.PAREN_R, pos, pos + 1, _line, _col, prev);\n\n      case 46:\n        //  .\n        if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n          return new Token(TokenKind.SPREAD, pos, pos + 3, _line, _col, prev);\n        }\n\n        break;\n\n      case 58:\n        //  :\n        return new Token(TokenKind.COLON, pos, pos + 1, _line, _col, prev);\n\n      case 61:\n        //  =\n        return new Token(TokenKind.EQUALS, pos, pos + 1, _line, _col, prev);\n\n      case 64:\n        //  @\n        return new Token(TokenKind.AT, pos, pos + 1, _line, _col, prev);\n\n      case 91:\n        //  [\n        return new Token(TokenKind.BRACKET_L, pos, pos + 1, _line, _col, prev);\n\n      case 93:\n        //  ]\n        return new Token(TokenKind.BRACKET_R, pos, pos + 1, _line, _col, prev);\n\n      case 123:\n        // {\n        return new Token(TokenKind.BRACE_L, pos, pos + 1, _line, _col, prev);\n\n      case 124:\n        // |\n        return new Token(TokenKind.PIPE, pos, pos + 1, _line, _col, prev);\n\n      case 125:\n        // }\n        return new Token(TokenKind.BRACE_R, pos, pos + 1, _line, _col, prev);\n\n      case 34:\n        //  \"\n        if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n          return readBlockString(source, pos, _line, _col, prev, lexer);\n        }\n\n        return readString(source, pos, _line, _col, prev);\n\n      case 45: //  -\n\n      case 48: //  0\n\n      case 49: //  1\n\n      case 50: //  2\n\n      case 51: //  3\n\n      case 52: //  4\n\n      case 53: //  5\n\n      case 54: //  6\n\n      case 55: //  7\n\n      case 56: //  8\n\n      case 57:\n        //  9\n        return readNumber(source, pos, code, _line, _col, prev);\n\n      case 65: //  A\n\n      case 66: //  B\n\n      case 67: //  C\n\n      case 68: //  D\n\n      case 69: //  E\n\n      case 70: //  F\n\n      case 71: //  G\n\n      case 72: //  H\n\n      case 73: //  I\n\n      case 74: //  J\n\n      case 75: //  K\n\n      case 76: //  L\n\n      case 77: //  M\n\n      case 78: //  N\n\n      case 79: //  O\n\n      case 80: //  P\n\n      case 81: //  Q\n\n      case 82: //  R\n\n      case 83: //  S\n\n      case 84: //  T\n\n      case 85: //  U\n\n      case 86: //  V\n\n      case 87: //  W\n\n      case 88: //  X\n\n      case 89: //  Y\n\n      case 90: //  Z\n\n      case 95: //  _\n\n      case 97: //  a\n\n      case 98: //  b\n\n      case 99: //  c\n\n      case 100: // d\n\n      case 101: // e\n\n      case 102: // f\n\n      case 103: // g\n\n      case 104: // h\n\n      case 105: // i\n\n      case 106: // j\n\n      case 107: // k\n\n      case 108: // l\n\n      case 109: // m\n\n      case 110: // n\n\n      case 111: // o\n\n      case 112: // p\n\n      case 113: // q\n\n      case 114: // r\n\n      case 115: // s\n\n      case 116: // t\n\n      case 117: // u\n\n      case 118: // v\n\n      case 119: // w\n\n      case 120: // x\n\n      case 121: // y\n\n      case 122:\n        // z\n        return readName(source, pos, _line, _col, prev);\n    }\n\n    throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n  }\n\n  var line = lexer.line;\n  var col = 1 + pos - lexer.lineStart;\n  return new Token(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n  if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n    return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n  }\n\n  if (code === 39) {\n    // '\n    return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n  }\n\n  return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n  var body = source.body;\n  var code;\n  var position = start;\n\n  do {\n    code = body.charCodeAt(++position);\n  } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator\n  code > 0x001f || code === 0x0009));\n\n  return new Token(TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int:   -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n  var body = source.body;\n  var code = firstCode;\n  var position = start;\n  var isFloat = false;\n\n  if (code === 45) {\n    // -\n    code = body.charCodeAt(++position);\n  }\n\n  if (code === 48) {\n    // 0\n    code = body.charCodeAt(++position);\n\n    if (code >= 48 && code <= 57) {\n      throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n    }\n  } else {\n    position = readDigits(source, position, code);\n    code = body.charCodeAt(position);\n  }\n\n  if (code === 46) {\n    // .\n    isFloat = true;\n    code = body.charCodeAt(++position);\n    position = readDigits(source, position, code);\n    code = body.charCodeAt(position);\n  }\n\n  if (code === 69 || code === 101) {\n    // E e\n    isFloat = true;\n    code = body.charCodeAt(++position);\n\n    if (code === 43 || code === 45) {\n      // + -\n      code = body.charCodeAt(++position);\n    }\n\n    position = readDigits(source, position, code);\n    code = body.charCodeAt(position);\n  } // Numbers cannot be followed by . or NameStart\n\n\n  if (code === 46 || isNameStart(code)) {\n    throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n  }\n\n  return new Token(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n  var body = source.body;\n  var position = start;\n  var code = firstCode;\n\n  if (code >= 48 && code <= 57) {\n    // 0 - 9\n    do {\n      code = body.charCodeAt(++position);\n    } while (code >= 48 && code <= 57); // 0 - 9\n\n\n    return position;\n  }\n\n  throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n  var body = source.body;\n  var position = start + 1;\n  var chunkStart = position;\n  var code = 0;\n  var value = '';\n\n  while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator\n  code !== 0x000a && code !== 0x000d) {\n    // Closing Quote (\")\n    if (code === 34) {\n      value += body.slice(chunkStart, position);\n      return new Token(TokenKind.STRING, start, position + 1, line, col, prev, value);\n    } // SourceCharacter\n\n\n    if (code < 0x0020 && code !== 0x0009) {\n      throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n    }\n\n    ++position;\n\n    if (code === 92) {\n      // \\\n      value += body.slice(chunkStart, position - 1);\n      code = body.charCodeAt(position);\n\n      switch (code) {\n        case 34:\n          value += '\"';\n          break;\n\n        case 47:\n          value += '/';\n          break;\n\n        case 92:\n          value += '\\\\';\n          break;\n\n        case 98:\n          value += '\\b';\n          break;\n\n        case 102:\n          value += '\\f';\n          break;\n\n        case 110:\n          value += '\\n';\n          break;\n\n        case 114:\n          value += '\\r';\n          break;\n\n        case 116:\n          value += '\\t';\n          break;\n\n        case 117:\n          {\n            // uXXXX\n            var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n\n            if (charCode < 0) {\n              var invalidSequence = body.slice(position + 1, position + 5);\n              throw syntaxError(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n            }\n\n            value += String.fromCharCode(charCode);\n            position += 4;\n            break;\n          }\n\n        default:\n          throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n      }\n\n      ++position;\n      chunkStart = position;\n    }\n  }\n\n  throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n  var body = source.body;\n  var position = start + 3;\n  var chunkStart = position;\n  var code = 0;\n  var rawValue = '';\n\n  while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n    // Closing Triple-Quote (\"\"\")\n    if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n      rawValue += body.slice(chunkStart, position);\n      return new Token(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, dedentBlockStringValue(rawValue));\n    } // SourceCharacter\n\n\n    if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n      throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n    }\n\n    if (code === 10) {\n      // new line\n      ++position;\n      ++lexer.line;\n      lexer.lineStart = position;\n    } else if (code === 13) {\n      // carriage return\n      if (body.charCodeAt(position + 1) === 10) {\n        position += 2;\n      } else {\n        ++position;\n      }\n\n      ++lexer.line;\n      lexer.lineStart = position;\n    } else if ( // Escape Triple-Quote (\\\"\"\")\n    code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n      rawValue += body.slice(chunkStart, position) + '\"\"\"';\n      position += 4;\n      chunkStart = position;\n    } else {\n      ++position;\n    }\n  }\n\n  throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n  return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n  return a >= 48 && a <= 57 ? a - 48 // 0-9\n  : a >= 65 && a <= 70 ? a - 55 // A-F\n  : a >= 97 && a <= 102 ? a - 87 // a-f\n  : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n  var body = source.body;\n  var bodyLength = body.length;\n  var position = start + 1;\n  var code = 0;\n\n  while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _\n  code >= 48 && code <= 57 || // 0-9\n  code >= 65 && code <= 90 || // A-Z\n  code >= 97 && code <= 122) // a-z\n  ) {\n    ++position;\n  }\n\n  return new Token(TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n} // _ A-Z a-z\n\n\nfunction isNameStart(code) {\n  return code === 95 || code >= 65 && code <= 90 || code >= 97 && code <= 122;\n}\n","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Kind } from \"./kinds.mjs\";\nimport { Location } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { Source, isSource } from \"./source.mjs\";\nimport { DirectiveLocation } from \"./directiveLocation.mjs\";\nimport { Lexer, isPunctuatorTokenKind } from \"./lexer.mjs\";\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n  var parser = new Parser(source, options);\n  return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n  var parser = new Parser(source, options);\n  parser.expectToken(TokenKind.SOF);\n  var value = parser.parseValueLiteral(false);\n  parser.expectToken(TokenKind.EOF);\n  return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n  var parser = new Parser(source, options);\n  parser.expectToken(TokenKind.SOF);\n  var type = parser.parseTypeReference();\n  parser.expectToken(TokenKind.EOF);\n  return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport var Parser = /*#__PURE__*/function () {\n  function Parser(source, options) {\n    var sourceObj = isSource(source) ? source : new Source(source);\n    this._lexer = new Lexer(sourceObj);\n    this._options = options;\n  }\n  /**\n   * Converts a name lex token into a name parse node.\n   */\n\n\n  var _proto = Parser.prototype;\n\n  _proto.parseName = function parseName() {\n    var token = this.expectToken(TokenKind.NAME);\n    return {\n      kind: Kind.NAME,\n      value: token.value,\n      loc: this.loc(token)\n    };\n  } // Implements the parsing rules in the Document section.\n\n  /**\n   * Document : Definition+\n   */\n  ;\n\n  _proto.parseDocument = function parseDocument() {\n    var start = this._lexer.token;\n    return {\n      kind: Kind.DOCUMENT,\n      definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF),\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * Definition :\n   *   - ExecutableDefinition\n   *   - TypeSystemDefinition\n   *   - TypeSystemExtension\n   *\n   * ExecutableDefinition :\n   *   - OperationDefinition\n   *   - FragmentDefinition\n   */\n  ;\n\n  _proto.parseDefinition = function parseDefinition() {\n    if (this.peek(TokenKind.NAME)) {\n      switch (this._lexer.token.value) {\n        case 'query':\n        case 'mutation':\n        case 'subscription':\n          return this.parseOperationDefinition();\n\n        case 'fragment':\n          return this.parseFragmentDefinition();\n\n        case 'schema':\n        case 'scalar':\n        case 'type':\n        case 'interface':\n        case 'union':\n        case 'enum':\n        case 'input':\n        case 'directive':\n          return this.parseTypeSystemDefinition();\n\n        case 'extend':\n          return this.parseTypeSystemExtension();\n      }\n    } else if (this.peek(TokenKind.BRACE_L)) {\n      return this.parseOperationDefinition();\n    } else if (this.peekDescription()) {\n      return this.parseTypeSystemDefinition();\n    }\n\n    throw this.unexpected();\n  } // Implements the parsing rules in the Operations section.\n\n  /**\n   * OperationDefinition :\n   *  - SelectionSet\n   *  - OperationType Name? VariableDefinitions? Directives? SelectionSet\n   */\n  ;\n\n  _proto.parseOperationDefinition = function parseOperationDefinition() {\n    var start = this._lexer.token;\n\n    if (this.peek(TokenKind.BRACE_L)) {\n      return {\n        kind: Kind.OPERATION_DEFINITION,\n        operation: 'query',\n        name: undefined,\n        variableDefinitions: [],\n        directives: [],\n        selectionSet: this.parseSelectionSet(),\n        loc: this.loc(start)\n      };\n    }\n\n    var operation = this.parseOperationType();\n    var name;\n\n    if (this.peek(TokenKind.NAME)) {\n      name = this.parseName();\n    }\n\n    return {\n      kind: Kind.OPERATION_DEFINITION,\n      operation: operation,\n      name: name,\n      variableDefinitions: this.parseVariableDefinitions(),\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * OperationType : one of query mutation subscription\n   */\n  ;\n\n  _proto.parseOperationType = function parseOperationType() {\n    var operationToken = this.expectToken(TokenKind.NAME);\n\n    switch (operationToken.value) {\n      case 'query':\n        return 'query';\n\n      case 'mutation':\n        return 'mutation';\n\n      case 'subscription':\n        return 'subscription';\n    }\n\n    throw this.unexpected(operationToken);\n  }\n  /**\n   * VariableDefinitions : ( VariableDefinition+ )\n   */\n  ;\n\n  _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n    return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R);\n  }\n  /**\n   * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n   */\n  ;\n\n  _proto.parseVariableDefinition = function parseVariableDefinition() {\n    var start = this._lexer.token;\n    return {\n      kind: Kind.VARIABLE_DEFINITION,\n      variable: this.parseVariable(),\n      type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n      defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n      directives: this.parseDirectives(true),\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * Variable : $ Name\n   */\n  ;\n\n  _proto.parseVariable = function parseVariable() {\n    var start = this._lexer.token;\n    this.expectToken(TokenKind.DOLLAR);\n    return {\n      kind: Kind.VARIABLE,\n      name: this.parseName(),\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * SelectionSet : { Selection+ }\n   */\n  ;\n\n  _proto.parseSelectionSet = function parseSelectionSet() {\n    var start = this._lexer.token;\n    return {\n      kind: Kind.SELECTION_SET,\n      selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R),\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * Selection :\n   *   - Field\n   *   - FragmentSpread\n   *   - InlineFragment\n   */\n  ;\n\n  _proto.parseSelection = function parseSelection() {\n    return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n  }\n  /**\n   * Field : Alias? Name Arguments? Directives? SelectionSet?\n   *\n   * Alias : Name :\n   */\n  ;\n\n  _proto.parseField = function parseField() {\n    var start = this._lexer.token;\n    var nameOrAlias = this.parseName();\n    var alias;\n    var name;\n\n    if (this.expectOptionalToken(TokenKind.COLON)) {\n      alias = nameOrAlias;\n      name = this.parseName();\n    } else {\n      name = nameOrAlias;\n    }\n\n    return {\n      kind: Kind.FIELD,\n      alias: alias,\n      name: name,\n      arguments: this.parseArguments(false),\n      directives: this.parseDirectives(false),\n      selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * Arguments[Const] : ( Argument[?Const]+ )\n   */\n  ;\n\n  _proto.parseArguments = function parseArguments(isConst) {\n    var item = isConst ? this.parseConstArgument : this.parseArgument;\n    return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n  }\n  /**\n   * Argument[Const] : Name : Value[?Const]\n   */\n  ;\n\n  _proto.parseArgument = function parseArgument() {\n    var start = this._lexer.token;\n    var name = this.parseName();\n    this.expectToken(TokenKind.COLON);\n    return {\n      kind: Kind.ARGUMENT,\n      name: name,\n      value: this.parseValueLiteral(false),\n      loc: this.loc(start)\n    };\n  };\n\n  _proto.parseConstArgument = function parseConstArgument() {\n    var start = this._lexer.token;\n    return {\n      kind: Kind.ARGUMENT,\n      name: this.parseName(),\n      value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)),\n      loc: this.loc(start)\n    };\n  } // Implements the parsing rules in the Fragments section.\n\n  /**\n   * Corresponds to both FragmentSpread and InlineFragment in the spec.\n   *\n   * FragmentSpread : ... FragmentName Directives?\n   *\n   * InlineFragment : ... TypeCondition? Directives? SelectionSet\n   */\n  ;\n\n  _proto.parseFragment = function parseFragment() {\n    var start = this._lexer.token;\n    this.expectToken(TokenKind.SPREAD);\n    var hasTypeCondition = this.expectOptionalKeyword('on');\n\n    if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n      return {\n        kind: Kind.FRAGMENT_SPREAD,\n        name: this.parseFragmentName(),\n        directives: this.parseDirectives(false),\n        loc: this.loc(start)\n      };\n    }\n\n    return {\n      kind: Kind.INLINE_FRAGMENT,\n      typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * FragmentDefinition :\n   *   - fragment FragmentName on TypeCondition Directives? SelectionSet\n   *\n   * TypeCondition : NamedType\n   */\n  ;\n\n  _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n    var _this$_options;\n\n    var start = this._lexer.token;\n    this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n    // the grammar of FragmentDefinition:\n    //   - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n    if (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {\n      return {\n        kind: Kind.FRAGMENT_DEFINITION,\n        name: this.parseFragmentName(),\n        variableDefinitions: this.parseVariableDefinitions(),\n        typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n        directives: this.parseDirectives(false),\n        selectionSet: this.parseSelectionSet(),\n        loc: this.loc(start)\n      };\n    }\n\n    return {\n      kind: Kind.FRAGMENT_DEFINITION,\n      name: this.parseFragmentName(),\n      typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * FragmentName : Name but not `on`\n   */\n  ;\n\n  _proto.parseFragmentName = function parseFragmentName() {\n    if (this._lexer.token.value === 'on') {\n      throw this.unexpected();\n    }\n\n    return this.parseName();\n  } // Implements the parsing rules in the Values section.\n\n  /**\n   * Value[Const] :\n   *   - [~Const] Variable\n   *   - IntValue\n   *   - FloatValue\n   *   - StringValue\n   *   - BooleanValue\n   *   - NullValue\n   *   - EnumValue\n   *   - ListValue[?Const]\n   *   - ObjectValue[?Const]\n   *\n   * BooleanValue : one of `true` `false`\n   *\n   * NullValue : `null`\n   *\n   * EnumValue : Name but not `true`, `false` or `null`\n   */\n  ;\n\n  _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n    var token = this._lexer.token;\n\n    switch (token.kind) {\n      case TokenKind.BRACKET_L:\n        return this.parseList(isConst);\n\n      case TokenKind.BRACE_L:\n        return this.parseObject(isConst);\n\n      case TokenKind.INT:\n        this._lexer.advance();\n\n        return {\n          kind: Kind.INT,\n          value: token.value,\n          loc: this.loc(token)\n        };\n\n      case TokenKind.FLOAT:\n        this._lexer.advance();\n\n        return {\n          kind: Kind.FLOAT,\n          value: token.value,\n          loc: this.loc(token)\n        };\n\n      case TokenKind.STRING:\n      case TokenKind.BLOCK_STRING:\n        return this.parseStringLiteral();\n\n      case TokenKind.NAME:\n        this._lexer.advance();\n\n        switch (token.value) {\n          case 'true':\n            return {\n              kind: Kind.BOOLEAN,\n              value: true,\n              loc: this.loc(token)\n            };\n\n          case 'false':\n            return {\n              kind: Kind.BOOLEAN,\n              value: false,\n              loc: this.loc(token)\n            };\n\n          case 'null':\n            return {\n              kind: Kind.NULL,\n              loc: this.loc(token)\n            };\n\n          default:\n            return {\n              kind: Kind.ENUM,\n              value: token.value,\n              loc: this.loc(token)\n            };\n        }\n\n      case TokenKind.DOLLAR:\n        if (!isConst) {\n          return this.parseVariable();\n        }\n\n        break;\n    }\n\n    throw this.unexpected();\n  };\n\n  _proto.parseStringLiteral = function parseStringLiteral() {\n    var token = this._lexer.token;\n\n    this._lexer.advance();\n\n    return {\n      kind: Kind.STRING,\n      value: token.value,\n      block: token.kind === TokenKind.BLOCK_STRING,\n      loc: this.loc(token)\n    };\n  }\n  /**\n   * ListValue[Const] :\n   *   - [ ]\n   *   - [ Value[?Const]+ ]\n   */\n  ;\n\n  _proto.parseList = function parseList(isConst) {\n    var _this = this;\n\n    var start = this._lexer.token;\n\n    var item = function item() {\n      return _this.parseValueLiteral(isConst);\n    };\n\n    return {\n      kind: Kind.LIST,\n      values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * ObjectValue[Const] :\n   *   - { }\n   *   - { ObjectField[?Const]+ }\n   */\n  ;\n\n  _proto.parseObject = function parseObject(isConst) {\n    var _this2 = this;\n\n    var start = this._lexer.token;\n\n    var item = function item() {\n      return _this2.parseObjectField(isConst);\n    };\n\n    return {\n      kind: Kind.OBJECT,\n      fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * ObjectField[Const] : Name : Value[?Const]\n   */\n  ;\n\n  _proto.parseObjectField = function parseObjectField(isConst) {\n    var start = this._lexer.token;\n    var name = this.parseName();\n    this.expectToken(TokenKind.COLON);\n    return {\n      kind: Kind.OBJECT_FIELD,\n      name: name,\n      value: this.parseValueLiteral(isConst),\n      loc: this.loc(start)\n    };\n  } // Implements the parsing rules in the Directives section.\n\n  /**\n   * Directives[Const] : Directive[?Const]+\n   */\n  ;\n\n  _proto.parseDirectives = function parseDirectives(isConst) {\n    var directives = [];\n\n    while (this.peek(TokenKind.AT)) {\n      directives.push(this.parseDirective(isConst));\n    }\n\n    return directives;\n  }\n  /**\n   * Directive[Const] : @ Name Arguments[?Const]?\n   */\n  ;\n\n  _proto.parseDirective = function parseDirective(isConst) {\n    var start = this._lexer.token;\n    this.expectToken(TokenKind.AT);\n    return {\n      kind: Kind.DIRECTIVE,\n      name: this.parseName(),\n      arguments: this.parseArguments(isConst),\n      loc: this.loc(start)\n    };\n  } // Implements the parsing rules in the Types section.\n\n  /**\n   * Type :\n   *   - NamedType\n   *   - ListType\n   *   - NonNullType\n   */\n  ;\n\n  _proto.parseTypeReference = function parseTypeReference() {\n    var start = this._lexer.token;\n    var type;\n\n    if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n      type = this.parseTypeReference();\n      this.expectToken(TokenKind.BRACKET_R);\n      type = {\n        kind: Kind.LIST_TYPE,\n        type: type,\n        loc: this.loc(start)\n      };\n    } else {\n      type = this.parseNamedType();\n    }\n\n    if (this.expectOptionalToken(TokenKind.BANG)) {\n      return {\n        kind: Kind.NON_NULL_TYPE,\n        type: type,\n        loc: this.loc(start)\n      };\n    }\n\n    return type;\n  }\n  /**\n   * NamedType : Name\n   */\n  ;\n\n  _proto.parseNamedType = function parseNamedType() {\n    var start = this._lexer.token;\n    return {\n      kind: Kind.NAMED_TYPE,\n      name: this.parseName(),\n      loc: this.loc(start)\n    };\n  } // Implements the parsing rules in the Type Definition section.\n\n  /**\n   * TypeSystemDefinition :\n   *   - SchemaDefinition\n   *   - TypeDefinition\n   *   - DirectiveDefinition\n   *\n   * TypeDefinition :\n   *   - ScalarTypeDefinition\n   *   - ObjectTypeDefinition\n   *   - InterfaceTypeDefinition\n   *   - UnionTypeDefinition\n   *   - EnumTypeDefinition\n   *   - InputObjectTypeDefinition\n   */\n  ;\n\n  _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n    // Many definitions begin with a description and require a lookahead.\n    var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n\n    if (keywordToken.kind === TokenKind.NAME) {\n      switch (keywordToken.value) {\n        case 'schema':\n          return this.parseSchemaDefinition();\n\n        case 'scalar':\n          return this.parseScalarTypeDefinition();\n\n        case 'type':\n          return this.parseObjectTypeDefinition();\n\n        case 'interface':\n          return this.parseInterfaceTypeDefinition();\n\n        case 'union':\n          return this.parseUnionTypeDefinition();\n\n        case 'enum':\n          return this.parseEnumTypeDefinition();\n\n        case 'input':\n          return this.parseInputObjectTypeDefinition();\n\n        case 'directive':\n          return this.parseDirectiveDefinition();\n      }\n    }\n\n    throw this.unexpected(keywordToken);\n  };\n\n  _proto.peekDescription = function peekDescription() {\n    return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n  }\n  /**\n   * Description : StringValue\n   */\n  ;\n\n  _proto.parseDescription = function parseDescription() {\n    if (this.peekDescription()) {\n      return this.parseStringLiteral();\n    }\n  }\n  /**\n   * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n   */\n  ;\n\n  _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n    var start = this._lexer.token;\n    var description = this.parseDescription();\n    this.expectKeyword('schema');\n    var directives = this.parseDirectives(true);\n    var operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n    return {\n      kind: Kind.SCHEMA_DEFINITION,\n      description: description,\n      directives: directives,\n      operationTypes: operationTypes,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * OperationTypeDefinition : OperationType : NamedType\n   */\n  ;\n\n  _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n    var start = this._lexer.token;\n    var operation = this.parseOperationType();\n    this.expectToken(TokenKind.COLON);\n    var type = this.parseNamedType();\n    return {\n      kind: Kind.OPERATION_TYPE_DEFINITION,\n      operation: operation,\n      type: type,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n   */\n  ;\n\n  _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n    var start = this._lexer.token;\n    var description = this.parseDescription();\n    this.expectKeyword('scalar');\n    var name = this.parseName();\n    var directives = this.parseDirectives(true);\n    return {\n      kind: Kind.SCALAR_TYPE_DEFINITION,\n      description: description,\n      name: name,\n      directives: directives,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * ObjectTypeDefinition :\n   *   Description?\n   *   type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n   */\n  ;\n\n  _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n    var start = this._lexer.token;\n    var description = this.parseDescription();\n    this.expectKeyword('type');\n    var name = this.parseName();\n    var interfaces = this.parseImplementsInterfaces();\n    var directives = this.parseDirectives(true);\n    var fields = this.parseFieldsDefinition();\n    return {\n      kind: Kind.OBJECT_TYPE_DEFINITION,\n      description: description,\n      name: name,\n      interfaces: interfaces,\n      directives: directives,\n      fields: fields,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * ImplementsInterfaces :\n   *   - implements `&`? NamedType\n   *   - ImplementsInterfaces & NamedType\n   */\n  ;\n\n  _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n    var _this$_options2;\n\n    if (!this.expectOptionalKeyword('implements')) {\n      return [];\n    }\n\n    if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {\n      var types = []; // Optional leading ampersand\n\n      this.expectOptionalToken(TokenKind.AMP);\n\n      do {\n        types.push(this.parseNamedType());\n      } while (this.expectOptionalToken(TokenKind.AMP) || this.peek(TokenKind.NAME));\n\n      return types;\n    }\n\n    return this.delimitedMany(TokenKind.AMP, this.parseNamedType);\n  }\n  /**\n   * FieldsDefinition : { FieldDefinition+ }\n   */\n  ;\n\n  _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n    var _this$_options3;\n\n    // Legacy support for the SDL?\n    if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) {\n      this._lexer.advance();\n\n      this._lexer.advance();\n\n      return [];\n    }\n\n    return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R);\n  }\n  /**\n   * FieldDefinition :\n   *   - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n   */\n  ;\n\n  _proto.parseFieldDefinition = function parseFieldDefinition() {\n    var start = this._lexer.token;\n    var description = this.parseDescription();\n    var name = this.parseName();\n    var args = this.parseArgumentDefs();\n    this.expectToken(TokenKind.COLON);\n    var type = this.parseTypeReference();\n    var directives = this.parseDirectives(true);\n    return {\n      kind: Kind.FIELD_DEFINITION,\n      description: description,\n      name: name,\n      arguments: args,\n      type: type,\n      directives: directives,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * ArgumentsDefinition : ( InputValueDefinition+ )\n   */\n  ;\n\n  _proto.parseArgumentDefs = function parseArgumentDefs() {\n    return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R);\n  }\n  /**\n   * InputValueDefinition :\n   *   - Description? Name : Type DefaultValue? Directives[Const]?\n   */\n  ;\n\n  _proto.parseInputValueDef = function parseInputValueDef() {\n    var start = this._lexer.token;\n    var description = this.parseDescription();\n    var name = this.parseName();\n    this.expectToken(TokenKind.COLON);\n    var type = this.parseTypeReference();\n    var defaultValue;\n\n    if (this.expectOptionalToken(TokenKind.EQUALS)) {\n      defaultValue = this.parseValueLiteral(true);\n    }\n\n    var directives = this.parseDirectives(true);\n    return {\n      kind: Kind.INPUT_VALUE_DEFINITION,\n      description: description,\n      name: name,\n      type: type,\n      defaultValue: defaultValue,\n      directives: directives,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * InterfaceTypeDefinition :\n   *   - Description? interface Name Directives[Const]? FieldsDefinition?\n   */\n  ;\n\n  _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n    var start = this._lexer.token;\n    var description = this.parseDescription();\n    this.expectKeyword('interface');\n    var name = this.parseName();\n    var interfaces = this.parseImplementsInterfaces();\n    var directives = this.parseDirectives(true);\n    var fields = this.parseFieldsDefinition();\n    return {\n      kind: Kind.INTERFACE_TYPE_DEFINITION,\n      description: description,\n      name: name,\n      interfaces: interfaces,\n      directives: directives,\n      fields: fields,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * UnionTypeDefinition :\n   *   - Description? union Name Directives[Const]? UnionMemberTypes?\n   */\n  ;\n\n  _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n    var start = this._lexer.token;\n    var description = this.parseDescription();\n    this.expectKeyword('union');\n    var name = this.parseName();\n    var directives = this.parseDirectives(true);\n    var types = this.parseUnionMemberTypes();\n    return {\n      kind: Kind.UNION_TYPE_DEFINITION,\n      description: description,\n      name: name,\n      directives: directives,\n      types: types,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * UnionMemberTypes :\n   *   - = `|`? NamedType\n   *   - UnionMemberTypes | NamedType\n   */\n  ;\n\n  _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n    return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : [];\n  }\n  /**\n   * EnumTypeDefinition :\n   *   - Description? enum Name Directives[Const]? EnumValuesDefinition?\n   */\n  ;\n\n  _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n    var start = this._lexer.token;\n    var description = this.parseDescription();\n    this.expectKeyword('enum');\n    var name = this.parseName();\n    var directives = this.parseDirectives(true);\n    var values = this.parseEnumValuesDefinition();\n    return {\n      kind: Kind.ENUM_TYPE_DEFINITION,\n      description: description,\n      name: name,\n      directives: directives,\n      values: values,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * EnumValuesDefinition : { EnumValueDefinition+ }\n   */\n  ;\n\n  _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n    return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R);\n  }\n  /**\n   * EnumValueDefinition : Description? EnumValue Directives[Const]?\n   *\n   * EnumValue : Name\n   */\n  ;\n\n  _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n    var start = this._lexer.token;\n    var description = this.parseDescription();\n    var name = this.parseName();\n    var directives = this.parseDirectives(true);\n    return {\n      kind: Kind.ENUM_VALUE_DEFINITION,\n      description: description,\n      name: name,\n      directives: directives,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * InputObjectTypeDefinition :\n   *   - Description? input Name Directives[Const]? InputFieldsDefinition?\n   */\n  ;\n\n  _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n    var start = this._lexer.token;\n    var description = this.parseDescription();\n    this.expectKeyword('input');\n    var name = this.parseName();\n    var directives = this.parseDirectives(true);\n    var fields = this.parseInputFieldsDefinition();\n    return {\n      kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n      description: description,\n      name: name,\n      directives: directives,\n      fields: fields,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * InputFieldsDefinition : { InputValueDefinition+ }\n   */\n  ;\n\n  _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n    return this.optionalMany(TokenKind.BRACE_L, this.parseInputValueDef, TokenKind.BRACE_R);\n  }\n  /**\n   * TypeSystemExtension :\n   *   - SchemaExtension\n   *   - TypeExtension\n   *\n   * TypeExtension :\n   *   - ScalarTypeExtension\n   *   - ObjectTypeExtension\n   *   - InterfaceTypeExtension\n   *   - UnionTypeExtension\n   *   - EnumTypeExtension\n   *   - InputObjectTypeDefinition\n   */\n  ;\n\n  _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n    var keywordToken = this._lexer.lookahead();\n\n    if (keywordToken.kind === TokenKind.NAME) {\n      switch (keywordToken.value) {\n        case 'schema':\n          return this.parseSchemaExtension();\n\n        case 'scalar':\n          return this.parseScalarTypeExtension();\n\n        case 'type':\n          return this.parseObjectTypeExtension();\n\n        case 'interface':\n          return this.parseInterfaceTypeExtension();\n\n        case 'union':\n          return this.parseUnionTypeExtension();\n\n        case 'enum':\n          return this.parseEnumTypeExtension();\n\n        case 'input':\n          return this.parseInputObjectTypeExtension();\n      }\n    }\n\n    throw this.unexpected(keywordToken);\n  }\n  /**\n   * SchemaExtension :\n   *  - extend schema Directives[Const]? { OperationTypeDefinition+ }\n   *  - extend schema Directives[Const]\n   */\n  ;\n\n  _proto.parseSchemaExtension = function parseSchemaExtension() {\n    var start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('schema');\n    var directives = this.parseDirectives(true);\n    var operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n\n    if (directives.length === 0 && operationTypes.length === 0) {\n      throw this.unexpected();\n    }\n\n    return {\n      kind: Kind.SCHEMA_EXTENSION,\n      directives: directives,\n      operationTypes: operationTypes,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * ScalarTypeExtension :\n   *   - extend scalar Name Directives[Const]\n   */\n  ;\n\n  _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n    var start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('scalar');\n    var name = this.parseName();\n    var directives = this.parseDirectives(true);\n\n    if (directives.length === 0) {\n      throw this.unexpected();\n    }\n\n    return {\n      kind: Kind.SCALAR_TYPE_EXTENSION,\n      name: name,\n      directives: directives,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * ObjectTypeExtension :\n   *  - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n   *  - extend type Name ImplementsInterfaces? Directives[Const]\n   *  - extend type Name ImplementsInterfaces\n   */\n  ;\n\n  _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n    var start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('type');\n    var name = this.parseName();\n    var interfaces = this.parseImplementsInterfaces();\n    var directives = this.parseDirectives(true);\n    var fields = this.parseFieldsDefinition();\n\n    if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n      throw this.unexpected();\n    }\n\n    return {\n      kind: Kind.OBJECT_TYPE_EXTENSION,\n      name: name,\n      interfaces: interfaces,\n      directives: directives,\n      fields: fields,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * InterfaceTypeExtension :\n   *  - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n   *  - extend interface Name ImplementsInterfaces? Directives[Const]\n   *  - extend interface Name ImplementsInterfaces\n   */\n  ;\n\n  _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n    var start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('interface');\n    var name = this.parseName();\n    var interfaces = this.parseImplementsInterfaces();\n    var directives = this.parseDirectives(true);\n    var fields = this.parseFieldsDefinition();\n\n    if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n      throw this.unexpected();\n    }\n\n    return {\n      kind: Kind.INTERFACE_TYPE_EXTENSION,\n      name: name,\n      interfaces: interfaces,\n      directives: directives,\n      fields: fields,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * UnionTypeExtension :\n   *   - extend union Name Directives[Const]? UnionMemberTypes\n   *   - extend union Name Directives[Const]\n   */\n  ;\n\n  _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n    var start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('union');\n    var name = this.parseName();\n    var directives = this.parseDirectives(true);\n    var types = this.parseUnionMemberTypes();\n\n    if (directives.length === 0 && types.length === 0) {\n      throw this.unexpected();\n    }\n\n    return {\n      kind: Kind.UNION_TYPE_EXTENSION,\n      name: name,\n      directives: directives,\n      types: types,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * EnumTypeExtension :\n   *   - extend enum Name Directives[Const]? EnumValuesDefinition\n   *   - extend enum Name Directives[Const]\n   */\n  ;\n\n  _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n    var start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('enum');\n    var name = this.parseName();\n    var directives = this.parseDirectives(true);\n    var values = this.parseEnumValuesDefinition();\n\n    if (directives.length === 0 && values.length === 0) {\n      throw this.unexpected();\n    }\n\n    return {\n      kind: Kind.ENUM_TYPE_EXTENSION,\n      name: name,\n      directives: directives,\n      values: values,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * InputObjectTypeExtension :\n   *   - extend input Name Directives[Const]? InputFieldsDefinition\n   *   - extend input Name Directives[Const]\n   */\n  ;\n\n  _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n    var start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('input');\n    var name = this.parseName();\n    var directives = this.parseDirectives(true);\n    var fields = this.parseInputFieldsDefinition();\n\n    if (directives.length === 0 && fields.length === 0) {\n      throw this.unexpected();\n    }\n\n    return {\n      kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n      name: name,\n      directives: directives,\n      fields: fields,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * DirectiveDefinition :\n   *   - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n   */\n  ;\n\n  _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n    var start = this._lexer.token;\n    var description = this.parseDescription();\n    this.expectKeyword('directive');\n    this.expectToken(TokenKind.AT);\n    var name = this.parseName();\n    var args = this.parseArgumentDefs();\n    var repeatable = this.expectOptionalKeyword('repeatable');\n    this.expectKeyword('on');\n    var locations = this.parseDirectiveLocations();\n    return {\n      kind: Kind.DIRECTIVE_DEFINITION,\n      description: description,\n      name: name,\n      arguments: args,\n      repeatable: repeatable,\n      locations: locations,\n      loc: this.loc(start)\n    };\n  }\n  /**\n   * DirectiveLocations :\n   *   - `|`? DirectiveLocation\n   *   - DirectiveLocations | DirectiveLocation\n   */\n  ;\n\n  _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n    return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n  }\n  /*\n   * DirectiveLocation :\n   *   - ExecutableDirectiveLocation\n   *   - TypeSystemDirectiveLocation\n   *\n   * ExecutableDirectiveLocation : one of\n   *   `QUERY`\n   *   `MUTATION`\n   *   `SUBSCRIPTION`\n   *   `FIELD`\n   *   `FRAGMENT_DEFINITION`\n   *   `FRAGMENT_SPREAD`\n   *   `INLINE_FRAGMENT`\n   *\n   * TypeSystemDirectiveLocation : one of\n   *   `SCHEMA`\n   *   `SCALAR`\n   *   `OBJECT`\n   *   `FIELD_DEFINITION`\n   *   `ARGUMENT_DEFINITION`\n   *   `INTERFACE`\n   *   `UNION`\n   *   `ENUM`\n   *   `ENUM_VALUE`\n   *   `INPUT_OBJECT`\n   *   `INPUT_FIELD_DEFINITION`\n   */\n  ;\n\n  _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n    var start = this._lexer.token;\n    var name = this.parseName();\n\n    if (DirectiveLocation[name.value] !== undefined) {\n      return name;\n    }\n\n    throw this.unexpected(start);\n  } // Core parsing utility functions\n\n  /**\n   * Returns a location object, used to identify the place in the source that created a given parsed object.\n   */\n  ;\n\n  _proto.loc = function loc(startToken) {\n    var _this$_options4;\n\n    if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {\n      return new Location(startToken, this._lexer.lastToken, this._lexer.source);\n    }\n  }\n  /**\n   * Determines if the next token is of a given kind\n   */\n  ;\n\n  _proto.peek = function peek(kind) {\n    return this._lexer.token.kind === kind;\n  }\n  /**\n   * If the next token is of the given kind, return that token after advancing the lexer.\n   * Otherwise, do not change the parser state and throw an error.\n   */\n  ;\n\n  _proto.expectToken = function expectToken(kind) {\n    var token = this._lexer.token;\n\n    if (token.kind === kind) {\n      this._lexer.advance();\n\n      return token;\n    }\n\n    throw syntaxError(this._lexer.source, token.start, \"Expected \".concat(getTokenKindDesc(kind), \", found \").concat(getTokenDesc(token), \".\"));\n  }\n  /**\n   * If the next token is of the given kind, return that token after advancing the lexer.\n   * Otherwise, do not change the parser state and return undefined.\n   */\n  ;\n\n  _proto.expectOptionalToken = function expectOptionalToken(kind) {\n    var token = this._lexer.token;\n\n    if (token.kind === kind) {\n      this._lexer.advance();\n\n      return token;\n    }\n\n    return undefined;\n  }\n  /**\n   * If the next token is a given keyword, advance the lexer.\n   * Otherwise, do not change the parser state and throw an error.\n   */\n  ;\n\n  _proto.expectKeyword = function expectKeyword(value) {\n    var token = this._lexer.token;\n\n    if (token.kind === TokenKind.NAME && token.value === value) {\n      this._lexer.advance();\n    } else {\n      throw syntaxError(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token), \".\"));\n    }\n  }\n  /**\n   * If the next token is a given keyword, return \"true\" after advancing the lexer.\n   * Otherwise, do not change the parser state and return \"false\".\n   */\n  ;\n\n  _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n    var token = this._lexer.token;\n\n    if (token.kind === TokenKind.NAME && token.value === value) {\n      this._lexer.advance();\n\n      return true;\n    }\n\n    return false;\n  }\n  /**\n   * Helper function for creating an error when an unexpected lexed token is encountered.\n   */\n  ;\n\n  _proto.unexpected = function unexpected(atToken) {\n    var token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n    return syntaxError(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token), \".\"));\n  }\n  /**\n   * Returns a possibly empty list of parse nodes, determined by the parseFn.\n   * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n  ;\n\n  _proto.any = function any(openKind, parseFn, closeKind) {\n    this.expectToken(openKind);\n    var nodes = [];\n\n    while (!this.expectOptionalToken(closeKind)) {\n      nodes.push(parseFn.call(this));\n    }\n\n    return nodes;\n  }\n  /**\n   * Returns a list of parse nodes, determined by the parseFn.\n   * It can be empty only if open token is missing otherwise it will always return non-empty list\n   * that begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n  ;\n\n  _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n    if (this.expectOptionalToken(openKind)) {\n      var nodes = [];\n\n      do {\n        nodes.push(parseFn.call(this));\n      } while (!this.expectOptionalToken(closeKind));\n\n      return nodes;\n    }\n\n    return [];\n  }\n  /**\n   * Returns a non-empty list of parse nodes, determined by the parseFn.\n   * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n  ;\n\n  _proto.many = function many(openKind, parseFn, closeKind) {\n    this.expectToken(openKind);\n    var nodes = [];\n\n    do {\n      nodes.push(parseFn.call(this));\n    } while (!this.expectOptionalToken(closeKind));\n\n    return nodes;\n  }\n  /**\n   * Returns a non-empty list of parse nodes, determined by the parseFn.\n   * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n   * Advances the parser to the next lex token after last item in the list.\n   */\n  ;\n\n  _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {\n    this.expectOptionalToken(delimiterKind);\n    var nodes = [];\n\n    do {\n      nodes.push(parseFn.call(this));\n    } while (this.expectOptionalToken(delimiterKind));\n\n    return nodes;\n  };\n\n  return Parser;\n}();\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n  var value = token.value;\n  return getTokenKindDesc(token.kind) + (value != null ? \" \\\"\".concat(value, \"\\\"\") : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\n\nfunction getTokenKindDesc(kind) {\n  return isPunctuatorTokenKind(kind) ? \"\\\"\".concat(kind, \"\\\"\") : kind;\n}\n","import inspect from \"../jsutils/inspect.mjs\";\nimport { isNode } from \"./ast.mjs\";\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport var QueryDocumentKeys = {\n  Name: [],\n  Document: ['definitions'],\n  OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n  VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n  Variable: ['name'],\n  SelectionSet: ['selections'],\n  Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n  Argument: ['name', 'value'],\n  FragmentSpread: ['name', 'directives'],\n  InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n  FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n  // or removed in the future.\n  'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n  IntValue: [],\n  FloatValue: [],\n  StringValue: [],\n  BooleanValue: [],\n  NullValue: [],\n  EnumValue: [],\n  ListValue: ['values'],\n  ObjectValue: ['fields'],\n  ObjectField: ['name', 'value'],\n  Directive: ['name', 'arguments'],\n  NamedType: ['name'],\n  ListType: ['type'],\n  NonNullType: ['type'],\n  SchemaDefinition: ['description', 'directives', 'operationTypes'],\n  OperationTypeDefinition: ['type'],\n  ScalarTypeDefinition: ['description', 'name', 'directives'],\n  ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n  FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n  InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n  InterfaceTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n  UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n  EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n  EnumValueDefinition: ['description', 'name', 'directives'],\n  InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n  DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n  SchemaExtension: ['directives', 'operationTypes'],\n  ScalarTypeExtension: ['name', 'directives'],\n  ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n  InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n  UnionTypeExtension: ['name', 'directives', 'types'],\n  EnumTypeExtension: ['name', 'directives', 'values'],\n  InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n *     const editedAST = visit(ast, {\n *       enter(node, key, parent, path, ancestors) {\n *         // @return\n *         //   undefined: no action\n *         //   false: skip visiting this node\n *         //   visitor.BREAK: stop visiting altogether\n *         //   null: delete this node\n *         //   any value: replace this node with the returned value\n *       },\n *       leave(node, key, parent, path, ancestors) {\n *         // @return\n *         //   undefined: no action\n *         //   false: no action\n *         //   visitor.BREAK: stop visiting altogether\n *         //   null: delete this node\n *         //   any value: replace this node with the returned value\n *       }\n *     });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n *     visit(ast, {\n *       Kind(node) {\n *         // enter the \"Kind\" node\n *       }\n *     })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n *    a specific kind.\n *\n *     visit(ast, {\n *       Kind: {\n *         enter(node) {\n *           // enter the \"Kind\" node\n *         }\n *         leave(node) {\n *           // leave the \"Kind\" node\n *         }\n *       }\n *     })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n *     visit(ast, {\n *       enter(node) {\n *         // enter any node\n *       },\n *       leave(node) {\n *         // leave any node\n *       }\n *     })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n *     visit(ast, {\n *       enter: {\n *         Kind(node) {\n *           // enter the \"Kind\" node\n *         }\n *       },\n *       leave: {\n *         Kind(node) {\n *           // leave the \"Kind\" node\n *         }\n *       }\n *     })\n */\n\nexport function visit(root, visitor) {\n  var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n  /* eslint-disable no-undef-init */\n  var stack = undefined;\n  var inArray = Array.isArray(root);\n  var keys = [root];\n  var index = -1;\n  var edits = [];\n  var node = undefined;\n  var key = undefined;\n  var parent = undefined;\n  var path = [];\n  var ancestors = [];\n  var newRoot = root;\n  /* eslint-enable no-undef-init */\n\n  do {\n    index++;\n    var isLeaving = index === keys.length;\n    var isEdited = isLeaving && edits.length !== 0;\n\n    if (isLeaving) {\n      key = ancestors.length === 0 ? undefined : path[path.length - 1];\n      node = parent;\n      parent = ancestors.pop();\n\n      if (isEdited) {\n        if (inArray) {\n          node = node.slice();\n        } else {\n          var clone = {};\n\n          for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n            var k = _Object$keys2[_i2];\n            clone[k] = node[k];\n          }\n\n          node = clone;\n        }\n\n        var editOffset = 0;\n\n        for (var ii = 0; ii < edits.length; ii++) {\n          var editKey = edits[ii][0];\n          var editValue = edits[ii][1];\n\n          if (inArray) {\n            editKey -= editOffset;\n          }\n\n          if (inArray && editValue === null) {\n            node.splice(editKey, 1);\n            editOffset++;\n          } else {\n            node[editKey] = editValue;\n          }\n        }\n      }\n\n      index = stack.index;\n      keys = stack.keys;\n      edits = stack.edits;\n      inArray = stack.inArray;\n      stack = stack.prev;\n    } else {\n      key = parent ? inArray ? index : keys[index] : undefined;\n      node = parent ? parent[key] : newRoot;\n\n      if (node === null || node === undefined) {\n        continue;\n      }\n\n      if (parent) {\n        path.push(key);\n      }\n    }\n\n    var result = void 0;\n\n    if (!Array.isArray(node)) {\n      if (!isNode(node)) {\n        throw new Error(\"Invalid AST Node: \".concat(inspect(node), \".\"));\n      }\n\n      var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n      if (visitFn) {\n        result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n        if (result === BREAK) {\n          break;\n        }\n\n        if (result === false) {\n          if (!isLeaving) {\n            path.pop();\n            continue;\n          }\n        } else if (result !== undefined) {\n          edits.push([key, result]);\n\n          if (!isLeaving) {\n            if (isNode(result)) {\n              node = result;\n            } else {\n              path.pop();\n              continue;\n            }\n          }\n        }\n      }\n    }\n\n    if (result === undefined && isEdited) {\n      edits.push([key, node]);\n    }\n\n    if (isLeaving) {\n      path.pop();\n    } else {\n      var _visitorKeys$node$kin;\n\n      stack = {\n        inArray: inArray,\n        index: index,\n        keys: keys,\n        edits: edits,\n        prev: stack\n      };\n      inArray = Array.isArray(node);\n      keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];\n      index = -1;\n      edits = [];\n\n      if (parent) {\n        ancestors.push(parent);\n      }\n\n      parent = node;\n    }\n  } while (stack !== undefined);\n\n  if (edits.length !== 0) {\n    newRoot = edits[edits.length - 1][1];\n  }\n\n  return newRoot;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n  var skipping = new Array(visitors.length);\n  return {\n    enter: function enter(node) {\n      for (var i = 0; i < visitors.length; i++) {\n        if (skipping[i] == null) {\n          var fn = getVisitFn(visitors[i], node.kind,\n          /* isLeaving */\n          false);\n\n          if (fn) {\n            var result = fn.apply(visitors[i], arguments);\n\n            if (result === false) {\n              skipping[i] = node;\n            } else if (result === BREAK) {\n              skipping[i] = BREAK;\n            } else if (result !== undefined) {\n              return result;\n            }\n          }\n        }\n      }\n    },\n    leave: function leave(node) {\n      for (var i = 0; i < visitors.length; i++) {\n        if (skipping[i] == null) {\n          var fn = getVisitFn(visitors[i], node.kind,\n          /* isLeaving */\n          true);\n\n          if (fn) {\n            var result = fn.apply(visitors[i], arguments);\n\n            if (result === BREAK) {\n              skipping[i] = BREAK;\n            } else if (result !== undefined && result !== false) {\n              return result;\n            }\n          }\n        } else if (skipping[i] === node) {\n          skipping[i] = null;\n        }\n      }\n    }\n  };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n  var kindVisitor = visitor[kind];\n\n  if (kindVisitor) {\n    if (!isLeaving && typeof kindVisitor === 'function') {\n      // { Kind() {} }\n      return kindVisitor;\n    }\n\n    var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n    if (typeof kindSpecificVisitor === 'function') {\n      // { Kind: { enter() {}, leave() {} } }\n      return kindSpecificVisitor;\n    }\n  } else {\n    var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n    if (specificVisitor) {\n      if (typeof specificVisitor === 'function') {\n        // { enter() {}, leave() {} }\n        return specificVisitor;\n      }\n\n      var specificKindVisitor = specificVisitor[kind];\n\n      if (typeof specificKindVisitor === 'function') {\n        // { enter: { Kind() {} }, leave: { Kind() {} } }\n        return specificKindVisitor;\n      }\n    }\n  }\n}\n","import { visit } from \"./visitor.mjs\";\nimport { printBlockString } from \"./blockString.mjs\";\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n  return visit(ast, {\n    leave: printDocASTReducer\n  });\n}\nvar MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future\n\nvar printDocASTReducer = {\n  Name: function Name(node) {\n    return node.value;\n  },\n  Variable: function Variable(node) {\n    return '$' + node.name;\n  },\n  // Document\n  Document: function Document(node) {\n    return join(node.definitions, '\\n\\n') + '\\n';\n  },\n  OperationDefinition: function OperationDefinition(node) {\n    var op = node.operation;\n    var name = node.name;\n    var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n    var directives = join(node.directives, ' ');\n    var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n    // the query short form.\n\n    return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n  },\n  VariableDefinition: function VariableDefinition(_ref) {\n    var variable = _ref.variable,\n        type = _ref.type,\n        defaultValue = _ref.defaultValue,\n        directives = _ref.directives;\n    return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n  },\n  SelectionSet: function SelectionSet(_ref2) {\n    var selections = _ref2.selections;\n    return block(selections);\n  },\n  Field: function Field(_ref3) {\n    var alias = _ref3.alias,\n        name = _ref3.name,\n        args = _ref3.arguments,\n        directives = _ref3.directives,\n        selectionSet = _ref3.selectionSet;\n    var prefix = wrap('', alias, ': ') + name;\n    var argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n    if (argsLine.length > MAX_LINE_LENGTH) {\n      argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n    }\n\n    return join([argsLine, join(directives, ' '), selectionSet], ' ');\n  },\n  Argument: function Argument(_ref4) {\n    var name = _ref4.name,\n        value = _ref4.value;\n    return name + ': ' + value;\n  },\n  // Fragments\n  FragmentSpread: function FragmentSpread(_ref5) {\n    var name = _ref5.name,\n        directives = _ref5.directives;\n    return '...' + name + wrap(' ', join(directives, ' '));\n  },\n  InlineFragment: function InlineFragment(_ref6) {\n    var typeCondition = _ref6.typeCondition,\n        directives = _ref6.directives,\n        selectionSet = _ref6.selectionSet;\n    return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n  },\n  FragmentDefinition: function FragmentDefinition(_ref7) {\n    var name = _ref7.name,\n        typeCondition = _ref7.typeCondition,\n        variableDefinitions = _ref7.variableDefinitions,\n        directives = _ref7.directives,\n        selectionSet = _ref7.selectionSet;\n    return (// Note: fragment variable definitions are experimental and may be changed\n      // or removed in the future.\n      \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n    );\n  },\n  // Value\n  IntValue: function IntValue(_ref8) {\n    var value = _ref8.value;\n    return value;\n  },\n  FloatValue: function FloatValue(_ref9) {\n    var value = _ref9.value;\n    return value;\n  },\n  StringValue: function StringValue(_ref10, key) {\n    var value = _ref10.value,\n        isBlockString = _ref10.block;\n    return isBlockString ? printBlockString(value, key === 'description' ? '' : '  ') : JSON.stringify(value);\n  },\n  BooleanValue: function BooleanValue(_ref11) {\n    var value = _ref11.value;\n    return value ? 'true' : 'false';\n  },\n  NullValue: function NullValue() {\n    return 'null';\n  },\n  EnumValue: function EnumValue(_ref12) {\n    var value = _ref12.value;\n    return value;\n  },\n  ListValue: function ListValue(_ref13) {\n    var values = _ref13.values;\n    return '[' + join(values, ', ') + ']';\n  },\n  ObjectValue: function ObjectValue(_ref14) {\n    var fields = _ref14.fields;\n    return '{' + join(fields, ', ') + '}';\n  },\n  ObjectField: function ObjectField(_ref15) {\n    var name = _ref15.name,\n        value = _ref15.value;\n    return name + ': ' + value;\n  },\n  // Directive\n  Directive: function Directive(_ref16) {\n    var name = _ref16.name,\n        args = _ref16.arguments;\n    return '@' + name + wrap('(', join(args, ', '), ')');\n  },\n  // Type\n  NamedType: function NamedType(_ref17) {\n    var name = _ref17.name;\n    return name;\n  },\n  ListType: function ListType(_ref18) {\n    var type = _ref18.type;\n    return '[' + type + ']';\n  },\n  NonNullType: function NonNullType(_ref19) {\n    var type = _ref19.type;\n    return type + '!';\n  },\n  // Type System Definitions\n  SchemaDefinition: addDescription(function (_ref20) {\n    var directives = _ref20.directives,\n        operationTypes = _ref20.operationTypes;\n    return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n  }),\n  OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n    var operation = _ref21.operation,\n        type = _ref21.type;\n    return operation + ': ' + type;\n  },\n  ScalarTypeDefinition: addDescription(function (_ref22) {\n    var name = _ref22.name,\n        directives = _ref22.directives;\n    return join(['scalar', name, join(directives, ' ')], ' ');\n  }),\n  ObjectTypeDefinition: addDescription(function (_ref23) {\n    var name = _ref23.name,\n        interfaces = _ref23.interfaces,\n        directives = _ref23.directives,\n        fields = _ref23.fields;\n    return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n  }),\n  FieldDefinition: addDescription(function (_ref24) {\n    var name = _ref24.name,\n        args = _ref24.arguments,\n        type = _ref24.type,\n        directives = _ref24.directives;\n    return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n  }),\n  InputValueDefinition: addDescription(function (_ref25) {\n    var name = _ref25.name,\n        type = _ref25.type,\n        defaultValue = _ref25.defaultValue,\n        directives = _ref25.directives;\n    return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n  }),\n  InterfaceTypeDefinition: addDescription(function (_ref26) {\n    var name = _ref26.name,\n        interfaces = _ref26.interfaces,\n        directives = _ref26.directives,\n        fields = _ref26.fields;\n    return join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n  }),\n  UnionTypeDefinition: addDescription(function (_ref27) {\n    var name = _ref27.name,\n        directives = _ref27.directives,\n        types = _ref27.types;\n    return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n  }),\n  EnumTypeDefinition: addDescription(function (_ref28) {\n    var name = _ref28.name,\n        directives = _ref28.directives,\n        values = _ref28.values;\n    return join(['enum', name, join(directives, ' '), block(values)], ' ');\n  }),\n  EnumValueDefinition: addDescription(function (_ref29) {\n    var name = _ref29.name,\n        directives = _ref29.directives;\n    return join([name, join(directives, ' ')], ' ');\n  }),\n  InputObjectTypeDefinition: addDescription(function (_ref30) {\n    var name = _ref30.name,\n        directives = _ref30.directives,\n        fields = _ref30.fields;\n    return join(['input', name, join(directives, ' '), block(fields)], ' ');\n  }),\n  DirectiveDefinition: addDescription(function (_ref31) {\n    var name = _ref31.name,\n        args = _ref31.arguments,\n        repeatable = _ref31.repeatable,\n        locations = _ref31.locations;\n    return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n  }),\n  SchemaExtension: function SchemaExtension(_ref32) {\n    var directives = _ref32.directives,\n        operationTypes = _ref32.operationTypes;\n    return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n  },\n  ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n    var name = _ref33.name,\n        directives = _ref33.directives;\n    return join(['extend scalar', name, join(directives, ' ')], ' ');\n  },\n  ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n    var name = _ref34.name,\n        interfaces = _ref34.interfaces,\n        directives = _ref34.directives,\n        fields = _ref34.fields;\n    return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n  },\n  InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n    var name = _ref35.name,\n        interfaces = _ref35.interfaces,\n        directives = _ref35.directives,\n        fields = _ref35.fields;\n    return join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n  },\n  UnionTypeExtension: function UnionTypeExtension(_ref36) {\n    var name = _ref36.name,\n        directives = _ref36.directives,\n        types = _ref36.types;\n    return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n  },\n  EnumTypeExtension: function EnumTypeExtension(_ref37) {\n    var name = _ref37.name,\n        directives = _ref37.directives,\n        values = _ref37.values;\n    return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n  },\n  InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n    var name = _ref38.name,\n        directives = _ref38.directives,\n        fields = _ref38.fields;\n    return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n  }\n};\n\nfunction addDescription(cb) {\n  return function (node) {\n    return join([node.description, cb(node)], '\\n');\n  };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray) {\n  var _maybeArray$filter$jo;\n\n  var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function (x) {\n    return x;\n  }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n  return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\n\nfunction wrap(start, maybeString) {\n  var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n  return maybeString != null && maybeString !== '' ? start + maybeString + end : '';\n}\n\nfunction indent(str) {\n  return wrap('  ', str.replace(/\\n/g, '\\n  '));\n}\n\nfunction isMultiline(str) {\n  return str.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n  return maybeArray != null && maybeArray.some(isMultiline);\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","/* tslint:disable */\n\nimport zenObservable from 'zen-observable';\n\nnamespace Observable {\n\n}\n\nimport { ZenObservable } from './types';\n\nexport { ZenObservable };\n\nexport type Observer<T> = ZenObservable.Observer<T>;\nexport type Subscriber<T> = ZenObservable.Subscriber<T>;\nexport type ObservableLike<T> = ZenObservable.ObservableLike<T>;\n\nexport const Observable: {\n  new <T>(subscriber: Subscriber<T>): Observable<T>;\n  from<R>(\n    observable: Observable<R> | ZenObservable.ObservableLike<R> | ArrayLike<R>,\n  ): Observable<R>;\n  of<R>(...args: Array<R>): Observable<R>;\n} = <any>zenObservable;\n\nexport interface Observable<T> {\n  subscribe(\n    observerOrNext: ((value: T) => void) | ZenObservable.Observer<T>,\n    error?: (error: any) => void,\n    complete?: () => void,\n  ): ZenObservable.Subscription;\n\n  forEach(fn: (value: T) => void): Promise<void>;\n\n  map<R>(fn: (value: T) => R): Observable<R>;\n\n  filter(fn: (value: T) => boolean): Observable<T>;\n\n  reduce<R = T>(\n    fn: (previousValue: R | T, currentValue: T) => R | T,\n    initialValue?: R | T,\n  ): Observable<R | T>;\n\n  flatMap<R>(fn: (value: T) => ZenObservable.ObservableLike<R>): Observable<R>;\n\n  from<R>(\n    observable: Observable<R> | ZenObservable.ObservableLike<R> | ArrayLike<R>,\n  ): Observable<R>;\n  of<R>(...args: Array<R>): Observable<R>;\n}\n","const SHORT_TO_HEX: { [key: number]: string } = {};\nconst HEX_TO_SHORT: { [key: string]: number } = {};\n\nfor (let i = 0; i < 256; i++) {\n  let encodedByte = i.toString(16).toLowerCase();\n  if (encodedByte.length === 1) {\n    encodedByte = `0${encodedByte}`;\n  }\n\n  SHORT_TO_HEX[i] = encodedByte;\n  HEX_TO_SHORT[encodedByte] = i;\n}\n\n/**\n * Converts a hexadecimal encoded string to a Uint8Array of bytes.\n *\n * @param encoded The hexadecimal encoded string\n */\nexport function fromHex(encoded: string): Uint8Array {\n  if (encoded.length % 2 !== 0) {\n    throw new Error(\"Hex encoded strings must have an even number length\");\n  }\n\n  const out = new Uint8Array(encoded.length / 2);\n  for (let i = 0; i < encoded.length; i += 2) {\n    const encodedByte = encoded.substr(i, 2).toLowerCase();\n    if (encodedByte in HEX_TO_SHORT) {\n      out[i / 2] = HEX_TO_SHORT[encodedByte];\n    } else {\n      throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n    }\n  }\n\n  return out;\n}\n\n/**\n * Converts a Uint8Array of binary data to a hexadecimal encoded string.\n *\n * @param bytes The binary data to encode\n */\nexport function toHex(bytes: Uint8Array): string {\n  let out = \"\";\n  for (let i = 0; i < bytes.byteLength; i++) {\n    out += SHORT_TO_HEX[bytes[i]];\n  }\n\n  return out;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Date & time utility functions to abstract the `aws-sdk` away from users.\n * (v2 => v3 modularization is a breaking change)\n *\n * @see https://github.com/aws/aws-sdk-js/blob/6edf586dcc1de7fe8fbfbbd9a0d2b1847921e6e1/lib/util.js#L262\n */\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\n// Comment - TODO: remove\nvar FIVE_MINUTES_IN_MS = 1000 * 60 * 5;\nexport var DateUtils = {\n    /**\n     * Milliseconds to offset the date to compensate for clock skew between device & services\n     */\n    clockOffset: 0,\n    getDateWithClockOffset: function () {\n        if (DateUtils.clockOffset) {\n            return new Date(new Date().getTime() + DateUtils.clockOffset);\n        }\n        else {\n            return new Date();\n        }\n    },\n    /**\n     * @returns {number} Clock offset in milliseconds\n     */\n    getClockOffset: function () {\n        return DateUtils.clockOffset;\n    },\n    getHeaderStringFromDate: function (date) {\n        if (date === void 0) { date = DateUtils.getDateWithClockOffset(); }\n        return date.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n    },\n    getDateFromHeaderString: function (header) {\n        var _a = __read(header.match(/^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2}).+/), 7), year = _a[1], month = _a[2], day = _a[3], hour = _a[4], minute = _a[5], second = _a[6];\n        return new Date(Date.UTC(Number(year), Number(month) - 1, Number(day), Number(hour), Number(minute), Number(second)));\n    },\n    isClockSkewed: function (serverDate) {\n        // API gateway permits client calls that are off by no more than ±5 minutes\n        return (Math.abs(serverDate.getTime() - DateUtils.getDateWithClockOffset().getTime()) >= FIVE_MINUTES_IN_MS);\n    },\n    isClockSkewError: function (error) {\n        if (!error.response || !error.response.headers) {\n            return false;\n        }\n        var headers = error.response.headers;\n        return Boolean(['BadRequestException', 'InvalidSignatureException'].includes(headers['x-amzn-errortype']) &&\n            (headers.date || headers.Date));\n    },\n    /**\n     * @param {number} offset Clock offset in milliseconds\n     */\n    setClockOffset: function (offset) {\n        DateUtils.clockOffset = offset;\n    },\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns signed headers.\n *\n * @param headers `headers` from the request.\n * @returns List of headers included in canonical headers, separated by semicolons (;). This indicates which headers\n * are part of the signing process. Header names must use lowercase characters and must appear in alphabetical order.\n *\n * @internal\n */\nexport var getSignedHeaders = function (headers) {\n    return Object.keys(headers)\n        .map(function (key) { return key.toLowerCase(); })\n        .sort()\n        .join(';');\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// query params\nexport var ALGORITHM_QUERY_PARAM = 'X-Amz-Algorithm';\nexport var AMZ_DATE_QUERY_PARAM = 'X-Amz-Date';\nexport var CREDENTIAL_QUERY_PARAM = 'X-Amz-Credential';\nexport var EXPIRES_QUERY_PARAM = 'X-Amz-Expires';\nexport var REGION_SET_PARAM = 'X-Amz-Region-Set';\nexport var SIGNATURE_QUERY_PARAM = 'X-Amz-Signature';\nexport var SIGNED_HEADERS_QUERY_PARAM = 'X-Amz-SignedHeaders';\nexport var TOKEN_QUERY_PARAM = 'X-Amz-Security-Token';\n// headers\nexport var AUTH_HEADER = 'authorization';\nexport var HOST_HEADER = 'host';\nexport var AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nexport var TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\n// identifiers\nexport var KEY_TYPE_IDENTIFIER = 'aws4_request';\nexport var SHA256_ALGORITHM_IDENTIFIER = 'AWS4-HMAC-SHA256';\nexport var SIGNATURE_IDENTIFIER = 'AWS4';\n// preset values\nexport var EMPTY_HASH = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';\nexport var UNSIGNED_PAYLOAD = 'UNSIGNED-PAYLOAD';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getCredentialScope } from './getCredentialScope';\nimport { getFormattedDates } from './getFormattedDates';\n/**\n * Extracts common values used for signing both requests and urls.\n *\n * @param options `SignRequestOptions` object containing values used to construct the signature.\n * @returns Common `SigningValues` used for signing.\n *\n * @internal\n */\nexport var getSigningValues = function (_a) {\n    var credentials = _a.credentials, _b = _a.signingDate, signingDate = _b === void 0 ? new Date() : _b, signingRegion = _a.signingRegion, signingService = _a.signingService, _c = _a.uriEscapePath, uriEscapePath = _c === void 0 ? true : _c;\n    // get properties from credentials\n    var accessKeyId = credentials.accessKeyId, secretAccessKey = credentials.secretAccessKey, sessionToken = credentials.sessionToken;\n    // get formatted dates for signing\n    var _d = getFormattedDates(signingDate), longDate = _d.longDate, shortDate = _d.shortDate;\n    // copy header and set signing properties\n    var credentialScope = getCredentialScope(shortDate, signingRegion, signingService);\n    return {\n        accessKeyId: accessKeyId,\n        credentialScope: credentialScope,\n        longDate: longDate,\n        secretAccessKey: secretAccessKey,\n        sessionToken: sessionToken,\n        shortDate: shortDate,\n        signingRegion: signingRegion,\n        signingService: signingService,\n        uriEscapePath: uriEscapePath,\n    };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns expected date strings to be used in signing.\n *\n * @param date JavaScript `Date` object.\n * @returns `FormattedDates` object containing the following:\n * - longDate: A date string in 'YYYYMMDDThhmmssZ' format\n * - shortDate: A date string in 'YYYYMMDD' format\n *\n * @internal\n */\nexport var getFormattedDates = function (date) {\n    var longDate = date.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n    return {\n        longDate: longDate,\n        shortDate: longDate.slice(0, 8),\n    };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { KEY_TYPE_IDENTIFIER } from '../constants';\n/**\n * Returns the credential scope which restricts the resulting signature to the specified region and service.\n *\n * @param date Current date in the format 'YYYYMMDD'.\n * @param region AWS region in which the service resides.\n * @param service Service to which the signed request is being sent.\n *\n * @returns  A string representing the credential scope with format 'YYYYMMDD/region/service/aws4_request'.\n *\n * @internal\n */\nexport var getCredentialScope = function (date, region, service) { return \"\".concat(date, \"/\").concat(region, \"/\").concat(service, \"/\").concat(KEY_TYPE_IDENTIFIER); };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n// TODO: V6 update to different crypto dependency?\nimport { Sha256 } from '@aws-crypto/sha256-js';\nimport { toHex } from '@aws-sdk/util-hex-encoding';\n/**\n * Returns the hashed data a `Uint8Array`.\n *\n * @param key `SourceData` to be used as hashing key.\n * @param data Hashable `SourceData`.\n * @returns `Uint8Array` created from the data as input to a hash function.\n */\nexport var getHashedData = function (key, data) {\n    var sha256 = new Sha256(key);\n    sha256.update(data);\n    // TODO: V6 flip to async digest\n    var hashedData = sha256.digestSync();\n    return hashedData;\n};\n/**\n * Returns the hashed data as a hex string.\n *\n * @param key `SourceData` to be used as hashing key.\n * @param data Hashable `SourceData`.\n * @returns String using lowercase hexadecimal characters created from the data as input to a hash function.\n *\n * @internal\n */\nexport var getHashedDataAsHex = function (key, data) {\n    var hashedData = getHashedData(key, data);\n    return toHex(hashedData);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\n/**\n * Returns canonical headers.\n *\n * @param headers Headers from the request.\n * @returns Request headers that will be signed, and their values, separated by newline characters. Header names must\n * use lowercase characters, must appear in alphabetical order, and must be followed by a colon (:). For the values,\n * trim any leading or trailing spaces, convert sequential spaces to a single space, and separate the values\n * for a multi-value header using commas.\n *\n * @internal\n */\nexport var getCanonicalHeaders = function (headers) {\n    return Object.entries(headers)\n        .map(function (_a) {\n        var _b;\n        var _c = __read(_a, 2), key = _c[0], value = _c[1];\n        return ({\n            key: key.toLowerCase(),\n            value: (_b = value === null || value === void 0 ? void 0 : value.trim().replace(/\\s+/g, ' ')) !== null && _b !== void 0 ? _b : '',\n        });\n    })\n        .sort(function (a, b) { return (a.key < b.key ? -1 : 1); })\n        .map(function (entry) { return \"\".concat(entry.key, \":\").concat(entry.value, \"\\n\"); })\n        .join('');\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\n/**\n * Returns a canonical query string.\n *\n * @param searchParams `searchParams` from the request url.\n * @returns URL-encoded query string parameters, separated by ampersands (&). Percent-encode reserved characters,\n * including the space character. Encode names and values separately. If there are empty parameters, append the equals\n * sign to the parameter name before encoding. After encoding, sort the parameters alphabetically by key name. If there\n * is no query string, use an empty string (\"\").\n *\n * @internal\n */\nexport var getCanonicalQueryString = function (searchParams) {\n    return Array.from(searchParams)\n        .sort(function (_a, _b) {\n        var _c = __read(_a, 2), keyA = _c[0], valA = _c[1];\n        var _d = __read(_b, 2), keyB = _d[0], valB = _d[1];\n        if (keyA === keyB) {\n            return valA < valB ? -1 : 1;\n        }\n        return keyA < keyB ? -1 : 1;\n    })\n        .map(function (_a) {\n        var _b = __read(_a, 2), key = _b[0], val = _b[1];\n        return \"\".concat(escapeUri(key), \"=\").concat(escapeUri(val));\n    })\n        .join('&');\n};\nvar escapeUri = function (uri) {\n    return encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode);\n};\nvar hexEncode = function (c) {\n    return \"%\".concat(c.charCodeAt(0).toString(16).toUpperCase());\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * Returns a canonical uri.\n *\n * @param pathname `pathname` from request url.\n * @param uriEscapePath Whether to uri encode the path as part of canonical uri. It's used for S3 only where the\n *   pathname is already uri encoded, and the signing process is not expected to uri encode it again. Defaults to true.\n * @returns URI-encoded version of the absolute path component URL (everything between the host and the question mark\n * character (?) that starts the query string parameters). If the absolute path is empty, a forward slash character (/).\n *\n * @internal\n */\nexport var getCanonicalUri = function (pathname, uriEscapePath) {\n    if (uriEscapePath === void 0) { uriEscapePath = true; }\n    return pathname\n        ? uriEscapePath\n            ? encodeURIComponent(pathname).replace(/%2F/g, '/')\n            : pathname\n        : '/';\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { EMPTY_HASH, UNSIGNED_PAYLOAD } from '../constants';\nimport { getHashedDataAsHex } from './dataHashHelpers';\n/**\n * Returns the hashed payload.\n *\n * @param body `body` (payload) from the request.\n * @returns String created using the payload in the body of the HTTP request as input to a hash function. This string\n * uses lowercase hexadecimal characters. If the payload is empty, return precalculated result of an empty hash.\n *\n * @internal\n */\nexport var getHashedPayload = function (body) {\n    // return precalculated empty hash if body is undefined or null\n    if (body == null) {\n        return EMPTY_HASH;\n    }\n    if (isSourceData(body)) {\n        var hashedData = getHashedDataAsHex(null, body);\n        return hashedData;\n    }\n    // Defined body is not signable. Return unsigned payload which may or may not be accepted by the service.\n    return UNSIGNED_PAYLOAD;\n};\nvar isSourceData = function (body) {\n    return typeof body === 'string' || ArrayBuffer.isView(body) || isArrayBuffer(body);\n};\nvar isArrayBuffer = function (arg) {\n    return (typeof ArrayBuffer === 'function' && arg instanceof ArrayBuffer) ||\n        Object.prototype.toString.call(arg) === '[object ArrayBuffer]';\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getHashedDataAsHex } from './dataHashHelpers';\nimport { getCanonicalRequest } from './getCanonicalRequest';\nimport { getSigningKey } from './getSigningKey';\nimport { getStringToSign } from './getStringToSign';\n/**\n * Calculates and returns an AWS API Signature.\n * https://docs.aws.amazon.com/IAM/latest/UserGuide/create-signed-request.html\n *\n * @param request `HttpRequest` to be signed.\n * @param signRequestOptions `SignRequestOptions` object containing values used to construct the signature.\n * @returns AWS API Signature to sign a request or url with.\n *\n * @internal\n */\nexport var getSignature = function (request, _a) {\n    var credentialScope = _a.credentialScope, longDate = _a.longDate, secretAccessKey = _a.secretAccessKey, shortDate = _a.shortDate, signingRegion = _a.signingRegion, signingService = _a.signingService, uriEscapePath = _a.uriEscapePath;\n    // step 1: create a canonical request\n    var canonicalRequest = getCanonicalRequest(request, uriEscapePath);\n    // step 2: create a hash of the canonical request\n    var hashedRequest = getHashedDataAsHex(null, canonicalRequest);\n    // step 3: create a string to sign\n    var stringToSign = getStringToSign(longDate, credentialScope, hashedRequest);\n    // step 4: calculate the signature\n    var signature = getHashedDataAsHex(getSigningKey(secretAccessKey, shortDate, signingRegion, signingService), stringToSign);\n    return signature;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getCanonicalHeaders } from './getCanonicalHeaders';\nimport { getCanonicalQueryString } from './getCanonicalQueryString';\nimport { getCanonicalUri } from './getCanonicalUri';\nimport { getHashedPayload } from './getHashedPayload';\nimport { getSignedHeaders } from './getSignedHeaders';\n/**\n * Returns a canonical request.\n *\n * @param request `HttpRequest` from which to create the canonical request from.\n * @param uriEscapePath Whether to uri encode the path as part of canonical uri. It's used for S3 only where the\n *   pathname is already uri encoded, and the signing process is not expected to uri encode it again. Defaults to true.\n * @returns String created by by concatenating the following strings, separated by newline characters:\n * - HTTPMethod\n * - CanonicalUri\n * - CanonicalQueryString\n * - CanonicalHeaders\n * - SignedHeaders\n * - HashedPayload\n *\n * @internal\n */\nexport var getCanonicalRequest = function (_a, uriEscapePath) {\n    var body = _a.body, headers = _a.headers, method = _a.method, url = _a.url;\n    if (uriEscapePath === void 0) { uriEscapePath = true; }\n    return [\n        method,\n        getCanonicalUri(url.pathname, uriEscapePath),\n        getCanonicalQueryString(url.searchParams),\n        getCanonicalHeaders(headers),\n        getSignedHeaders(headers),\n        getHashedPayload(body),\n    ].join('\\n');\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { SHA256_ALGORITHM_IDENTIFIER } from '../constants';\n/**\n * Returns a string to be signed.\n *\n * @param date Current date in the format 'YYYYMMDDThhmmssZ'.\n * @param credentialScope String representing the credential scope with format 'YYYYMMDD/region/service/aws4_request'.\n * @param hashedRequest Hashed canonical request.\n *\n * @returns A string created by by concatenating the following strings, separated by newline characters:\n * - Algorithm\n * - RequestDateTime\n * - CredentialScope\n * - HashedCanonicalRequest\n *\n * @internal\n */\nexport var getStringToSign = function (date, credentialScope, hashedRequest) {\n    return [SHA256_ALGORITHM_IDENTIFIER, date, credentialScope, hashedRequest].join('\\n');\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { KEY_TYPE_IDENTIFIER, SIGNATURE_IDENTIFIER } from '../constants';\nimport { getHashedData } from './dataHashHelpers';\n/**\n * Returns a signing key to be used for signing requests.\n *\n * @param secretAccessKey AWS secret access key from credentials.\n * @param date Current date in the format 'YYYYMMDD'.\n * @param region AWS region in which the service resides.\n * @param service Service to which the signed request is being sent.\n *\n * @returns `Uint8Array` calculated from its composite parts.\n *\n * @internal\n */\nexport var getSigningKey = function (secretAccessKey, date, region, service) {\n    var key = \"\".concat(SIGNATURE_IDENTIFIER).concat(secretAccessKey);\n    var dateKey = getHashedData(key, date);\n    var regionKey = getHashedData(dateKey, region);\n    var serviceKey = getHashedData(regionKey, service);\n    var signingKey = getHashedData(serviceKey, KEY_TYPE_IDENTIFIER);\n    return signingKey;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport { getSignedHeaders } from './utils/getSignedHeaders';\nimport { getSigningValues } from './utils/getSigningValues';\nimport { AMZ_DATE_HEADER, AUTH_HEADER, HOST_HEADER, SHA256_ALGORITHM_IDENTIFIER, TOKEN_HEADER, } from './constants';\nimport { getSignature } from './utils/getSignature';\n/**\n * Given a `HttpRequest`, returns a Signature Version 4 signed `HttpRequest`.\n *\n * @param request `HttpRequest` to be signed.\n * @param signRequestOptions `SignRequestOptions` object containing values used to construct the signature.\n * @returns A `HttpRequest` with authentication headers which can grant temporary access to AWS resources.\n */\nexport var signRequest = function (request, options) {\n    var signingValues = getSigningValues(options);\n    var accessKeyId = signingValues.accessKeyId, credentialScope = signingValues.credentialScope, longDate = signingValues.longDate, sessionToken = signingValues.sessionToken;\n    // create the request to sign\n    var headers = __assign({}, request.headers);\n    headers[HOST_HEADER] = request.url.host;\n    headers[AMZ_DATE_HEADER] = longDate;\n    if (sessionToken) {\n        headers[TOKEN_HEADER] = sessionToken;\n    }\n    var requestToSign = __assign(__assign({}, request), { headers: headers });\n    // calculate and add the signature to the request\n    var signature = getSignature(requestToSign, signingValues);\n    var credentialEntry = \"Credential=\".concat(accessKeyId, \"/\").concat(credentialScope);\n    var signedHeadersEntry = \"SignedHeaders=\".concat(getSignedHeaders(headers));\n    var signatureEntry = \"Signature=\".concat(signature);\n    headers[AUTH_HEADER] = \"\".concat(SHA256_ALGORITHM_IDENTIFIER, \" \").concat(credentialEntry, \", \").concat(signedHeadersEntry, \", \").concat(signatureEntry);\n    return requestToSign;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nvar __read = (this && this.__read) || function (o, n) {\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n    if (!m) return o;\n    var i = m.call(o), r, ar = [], e;\n    try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n    }\n    catch (error) { e = { error: error }; }\n    finally {\n        try {\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        }\n        finally { if (e) throw e.error; }\n    }\n    return ar;\n};\nimport { ALGORITHM_QUERY_PARAM, AMZ_DATE_QUERY_PARAM, CREDENTIAL_QUERY_PARAM, EXPIRES_QUERY_PARAM, HOST_HEADER, SHA256_ALGORITHM_IDENTIFIER, SIGNATURE_QUERY_PARAM, SIGNED_HEADERS_QUERY_PARAM, TOKEN_QUERY_PARAM, } from './constants';\nimport { getSigningValues } from './utils/getSigningValues';\nimport { getSignature } from './utils/getSignature';\n/**\n * Given a `Presignable` object, returns a Signature Version 4 presigned `URL` object.\n *\n * @param presignable `Presignable` object containing at least a url to be presigned with authentication query params.\n * @param presignUrlOptions `PresignUrlOptions` object containing values used to construct the signature.\n * @returns A `URL` with authentication query params which can grant temporary access to AWS resources.\n */\nexport var presignUrl = function (_a, _b) {\n    var _c, _d, _e, _f;\n    var body = _a.body, _g = _a.method, method = _g === void 0 ? 'GET' : _g, url = _a.url;\n    var expiration = _b.expiration, options = __rest(_b, [\"expiration\"]);\n    var signingValues = getSigningValues(options);\n    var accessKeyId = signingValues.accessKeyId, credentialScope = signingValues.credentialScope, longDate = signingValues.longDate, sessionToken = signingValues.sessionToken;\n    // create the request to sign\n    // @ts-ignore URL constructor accepts a URL object\n    var presignedUrl = new URL(url);\n    Object.entries(__assign(__assign((_c = {}, _c[ALGORITHM_QUERY_PARAM] = SHA256_ALGORITHM_IDENTIFIER, _c[CREDENTIAL_QUERY_PARAM] = \"\".concat(accessKeyId, \"/\").concat(credentialScope), _c[AMZ_DATE_QUERY_PARAM] = longDate, _c[SIGNED_HEADERS_QUERY_PARAM] = HOST_HEADER, _c), (expiration && (_d = {}, _d[EXPIRES_QUERY_PARAM] = expiration.toString(), _d))), (sessionToken && (_e = {}, _e[TOKEN_QUERY_PARAM] = sessionToken, _e)))).forEach(function (_a) {\n        var _b = __read(_a, 2), key = _b[0], value = _b[1];\n        presignedUrl.searchParams.append(key, value);\n    });\n    var requestToSign = {\n        body: body,\n        headers: (_f = {}, _f[HOST_HEADER] = url.host, _f),\n        method: method,\n        url: presignedUrl,\n    };\n    // calculate and add the signature to the url\n    var signature = getSignature(requestToSign, signingValues);\n    presignedUrl.searchParams.append(SIGNATURE_QUERY_PARAM, signature);\n    return presignedUrl;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport { DateUtils } from './Util';\nimport { presignUrl, signRequest, TOKEN_QUERY_PARAM, } from './clients/middleware/signing/signer/signatureV4';\nvar IOT_SERVICE_NAME = 'iotdevicegateway';\n// Best practice regex to parse the service and region from an AWS endpoint\nvar AWS_ENDPOINT_REGEX = /([^\\.]+)\\.(?:([^\\.]*)\\.)?amazonaws\\.com(.cn)?$/;\nvar Signer = /** @class */ (function () {\n    function Signer() {\n    }\n    /**\n    * Sign a HTTP request, add 'Authorization' header to request param\n    * @method sign\n    * @memberof Signer\n    * @static\n    *\n    * @param {object} request - HTTP request object\n    <pre>\n    request: {\n        method: GET | POST | PUT ...\n        url: ...,\n        headers: {\n            header1: ...\n        },\n        data: data\n    }\n    </pre>\n    * @param {object} access_info - AWS access credential info\n    <pre>\n    access_info: {\n        access_key: ...,\n        secret_key: ...,\n        session_token: ...\n    }\n    </pre>\n    * @param {object} [service_info] - AWS service type and region, optional,\n    *                                  if not provided then parse out from url\n    <pre>\n    service_info: {\n        service: ...,\n        region: ...\n    }\n    </pre>\n    *\n    * @returns {object} Signed HTTP request\n    */\n    Signer.sign = function (request, accessInfo, serviceInfo) {\n        request.headers = request.headers || {};\n        if (request.body && !request.data) {\n            throw new Error('The attribute \"body\" was found on the request object. Please use the attribute \"data\" instead.');\n        }\n        var requestToSign = __assign(__assign({}, request), { body: request.data, url: new URL(request.url) });\n        var options = getOptions(requestToSign, accessInfo, serviceInfo);\n        var signedRequest = signRequest(requestToSign, options);\n        // Prior to using `signRequest`, Signer accepted urls as strings and outputted urls as string. Coerce the property\n        // back to a string so as not to disrupt consumers of Signer.\n        signedRequest.url = signedRequest.url.toString();\n        // HTTP headers should be case insensitive but, to maintain parity with the previous Signer implementation and\n        // limit the impact of this implementation swap, replace lowercased headers with title cased ones.\n        signedRequest.headers.Authorization = signedRequest.headers.authorization;\n        signedRequest.headers['X-Amz-Security-Token'] =\n            signedRequest.headers['x-amz-security-token'];\n        delete signedRequest.headers.authorization;\n        delete signedRequest.headers['x-amz-security-token'];\n        return signedRequest;\n    };\n    Signer.signUrl = function (urlOrRequest, accessInfo, serviceInfo, expiration) {\n        var urlToSign = typeof urlOrRequest === 'object' ? urlOrRequest.url : urlOrRequest;\n        var method = typeof urlOrRequest === 'object' ? urlOrRequest.method : 'GET';\n        var body = typeof urlOrRequest === 'object' ? urlOrRequest.body : undefined;\n        var presignable = {\n            body: body,\n            method: method,\n            url: new URL(urlToSign),\n        };\n        var options = getOptions(presignable, accessInfo, serviceInfo, expiration);\n        var signedUrl = presignUrl(presignable, options);\n        if (accessInfo.session_token &&\n            !sessionTokenRequiredInSigning(options.signingService)) {\n            signedUrl.searchParams.append(TOKEN_QUERY_PARAM, accessInfo.session_token);\n        }\n        return signedUrl.toString();\n    };\n    return Signer;\n}());\nexport { Signer };\nvar getOptions = function (request, accessInfo, serviceInfo, expiration) {\n    var _a = accessInfo !== null && accessInfo !== void 0 ? accessInfo : {}, access_key = _a.access_key, secret_key = _a.secret_key, session_token = _a.session_token;\n    var _b = parseServiceInfo(request.url), urlRegion = _b.region, urlService = _b.service;\n    var _c = serviceInfo !== null && serviceInfo !== void 0 ? serviceInfo : {}, _d = _c.region, region = _d === void 0 ? urlRegion : _d, _e = _c.service, service = _e === void 0 ? urlService : _e;\n    var credentials = __assign({ accessKeyId: access_key, secretAccessKey: secret_key }, (sessionTokenRequiredInSigning(service)\n        ? { sessionToken: session_token }\n        : {}));\n    return __assign({ credentials: credentials, signingDate: DateUtils.getDateWithClockOffset(), signingRegion: region, signingService: service }, (expiration && { expiration: expiration }));\n};\n// TODO: V6 investigate whether add to custom clients' general signer implementation.\nvar parseServiceInfo = function (url) {\n    var _a;\n    var host = url.host;\n    var matched = (_a = host.match(AWS_ENDPOINT_REGEX)) !== null && _a !== void 0 ? _a : [];\n    var parsed = matched.slice(1, 3);\n    if (parsed[1] === 'es') {\n        // Elastic Search\n        parsed = parsed.reverse();\n    }\n    return {\n        service: parsed[0],\n        region: parsed[1],\n    };\n};\n// IoT service does not allow the session token in the canonical request\n// https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html\n// TODO: V6 investigate whether add to custom clients' general signer implementation.\nvar sessionTokenRequiredInSigning = function (service) {\n    return service !== IOT_SERVICE_NAME;\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\r\n// SPDX-License-Identifier: Apache-2.0\r\n\r\nimport { CacheConfig, CacheItem, CacheItemOptions } from '../types';\r\nimport { StorageHelper } from '@aws-amplify/core';\r\n/**\r\n * Default cache config\r\n */\r\nexport const defaultConfig: CacheConfig = {\r\n\tkeyPrefix: 'aws-amplify-cache',\r\n\tcapacityInBytes: 1048576, // 1MB\r\n\titemMaxSize: 210000, // about 200kb\r\n\tdefaultTTL: 259200000, // about 3 days\r\n\tdefaultPriority: 5,\r\n\twarningThreshold: 0.8,\r\n\t// the storage helper will check if localStorage exists,\r\n\t// if not, will use a in-memory object instead\r\n\tstorage: new StorageHelper().getStorage(),\r\n};\r\n\r\n/**\r\n * return the byte size of the string\r\n * @param str\r\n */\r\nexport function getByteLength(str: string): number {\r\n\tlet ret: number = 0;\r\n\tret = str.length;\r\n\r\n\tfor (let i = str.length; i >= 0; i -= 1) {\r\n\t\tconst charCode: number = str.charCodeAt(i);\r\n\t\tif (charCode > 0x7f && charCode <= 0x7ff) {\r\n\t\t\tret += 1;\r\n\t\t} else if (charCode > 0x7ff && charCode <= 0xffff) {\r\n\t\t\tret += 2;\r\n\t\t}\r\n\t\t// trail surrogate\r\n\t\tif (charCode >= 0xdc00 && charCode <= 0xdfff) {\r\n\t\t\ti -= 1;\r\n\t\t}\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\n/**\r\n * get current time\r\n */\r\nexport function getCurrTime(): number {\r\n\tconst currTime = new Date();\r\n\treturn currTime.getTime();\r\n}\r\n\r\n/**\r\n * check if passed value is an integer\r\n */\r\nexport function isInteger(value): boolean {\r\n\tif (Number.isInteger) {\r\n\t\treturn Number.isInteger(value);\r\n\t}\r\n\r\n\treturn _isInteger(value);\r\n}\r\n\r\nfunction _isInteger(value): boolean {\r\n\treturn (\r\n\t\ttypeof value === 'number' && isFinite(value) && Math.floor(value) === value\r\n\t);\r\n}\r\n\r\n/**\r\n * provide an object as the in-memory cache\r\n */\r\nlet store = {};\r\nexport class CacheObject {\r\n\tstatic clear(): void {\r\n\t\tstore = {};\r\n\t}\r\n\r\n\tstatic getItem(key: string): string | null {\r\n\t\treturn store[key] || null;\r\n\t}\r\n\r\n\tstatic setItem(key: string, value: string): void {\r\n\t\tstore[key] = value;\r\n\t}\r\n\r\n\tstatic removeItem(key: string): void {\r\n\t\tdelete store[key];\r\n\t}\r\n}\r\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\r\n// SPDX-License-Identifier: Apache-2.0\r\n\r\nimport { getCurrTime, getByteLength, defaultConfig, isInteger } from './Utils';\r\n\r\nimport { CacheConfig, CacheItem, CacheItemOptions } from './types';\r\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\r\n\r\nconst logger = new Logger('StorageCache');\r\n\r\n/**\r\n * Initialization of the cache\r\n *\r\n */\r\nexport class StorageCache {\r\n\tprotected cacheCurSizeKey: string;\r\n\tprotected config: CacheConfig;\r\n\r\n\t/**\r\n\t * Initialize the cache\r\n\t * @param config - the configuration of the cache\r\n\t */\r\n\tconstructor(config: CacheConfig) {\r\n\t\tthis.config = Object.assign({}, config);\r\n\t\tthis.cacheCurSizeKey = this.config.keyPrefix + 'CurSize';\r\n\t\tthis.checkConfig();\r\n\t}\r\n\r\n\tpublic getModuleName() {\r\n\t\treturn 'Cache';\r\n\t}\r\n\r\n\tprivate checkConfig(): void {\r\n\t\t// check configuration\r\n\t\tif (!isInteger(this.config.capacityInBytes)) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: capacityInBytes. It should be an Integer. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.capacityInBytes = defaultConfig.capacityInBytes;\r\n\t\t}\r\n\r\n\t\tif (!isInteger(this.config.itemMaxSize)) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: itemMaxSize. It should be an Integer. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.itemMaxSize = defaultConfig.itemMaxSize;\r\n\t\t}\r\n\r\n\t\tif (!isInteger(this.config.defaultTTL)) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: defaultTTL. It should be an Integer. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.defaultTTL = defaultConfig.defaultTTL;\r\n\t\t}\r\n\r\n\t\tif (!isInteger(this.config.defaultPriority)) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: defaultPriority. It should be an Integer. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.defaultPriority = defaultConfig.defaultPriority;\r\n\t\t}\r\n\r\n\t\tif (this.config.itemMaxSize > this.config.capacityInBytes) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: itemMaxSize. It should be smaller than capacityInBytes. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.itemMaxSize = defaultConfig.itemMaxSize;\r\n\t\t}\r\n\r\n\t\tif (this.config.defaultPriority > 5 || this.config.defaultPriority < 1) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: defaultPriority. It should be between 1 and 5. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.defaultPriority = defaultConfig.defaultPriority;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tNumber(this.config.warningThreshold) > 1 ||\r\n\t\t\tNumber(this.config.warningThreshold) < 0\r\n\t\t) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Invalid parameter: warningThreshold. It should be between 0 and 1. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.warningThreshold = defaultConfig.warningThreshold;\r\n\t\t}\r\n\t\t// set 5MB limit\r\n\t\tconst cacheLimit: number = 5 * 1024 * 1024;\r\n\t\tif (this.config.capacityInBytes > cacheLimit) {\r\n\t\t\tlogger.error(\r\n\t\t\t\t'Cache Capacity should be less than 5MB. Setting back to default. Setting back to default.'\r\n\t\t\t);\r\n\t\t\tthis.config.capacityInBytes = defaultConfig.capacityInBytes;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * produce a JSON object with meta-data and data value\r\n\t * @param value - the value of the item\r\n\t * @param options - optional, the specified meta-data\r\n\t *\r\n\t * @return - the item which has the meta-data and the value\r\n\t */\r\n\tprotected fillCacheItem(\r\n\t\tkey: string,\r\n\t\tvalue: object | number | string | boolean,\r\n\t\toptions: CacheItemOptions\r\n\t): CacheItem {\r\n\t\tconst ret: CacheItem = {\r\n\t\t\tkey,\r\n\t\t\tdata: value,\r\n\t\t\ttimestamp: getCurrTime(),\r\n\t\t\tvisitedTime: getCurrTime(),\r\n\t\t\tpriority: options.priority,\r\n\t\t\texpires: options.expires,\r\n\t\t\ttype: typeof value,\r\n\t\t\tbyteSize: 0,\r\n\t\t};\r\n\r\n\t\tret.byteSize = getByteLength(JSON.stringify(ret));\r\n\r\n\t\t// for accurate size\r\n\t\tret.byteSize = getByteLength(JSON.stringify(ret));\r\n\t\treturn ret;\r\n\t}\r\n\r\n\t/**\r\n\t * set cache with customized configuration\r\n\t * @param config - customized configuration\r\n\t *\r\n\t * @return - the current configuration\r\n\t */\r\n\tpublic configure(config?: CacheConfig): CacheConfig {\r\n\t\tif (!config) {\r\n\t\t\treturn this.config;\r\n\t\t}\r\n\t\tif (config.keyPrefix) {\r\n\t\t\tlogger.warn(`Don't try to configure keyPrefix!`);\r\n\t\t}\r\n\r\n\t\tthis.config = Object.assign({}, this.config, config, config.Cache);\r\n\t\tthis.checkConfig();\r\n\t\treturn this.config;\r\n\t}\r\n}\r\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\r\n// SPDX-License-Identifier: Apache-2.0\r\n\r\nimport { Amplify, ConsoleLogger as Logger } from '@aws-amplify/core';\r\nimport { defaultConfig, getCurrTime } from './Utils';\r\nimport { StorageCache } from './StorageCache';\r\nimport { ICache, CacheConfig, CacheItem, CacheItemOptions } from './types';\r\n\r\nconst logger = new Logger('Cache');\r\n\r\n/**\r\n * Customized storage based on the SessionStorage or LocalStorage with LRU implemented\r\n */\r\nexport class BrowserStorageCacheClass extends StorageCache implements ICache {\r\n\t/**\r\n\t * initialize the cache\r\n\t * @param config - the configuration of the cache\r\n\t */\r\n\tconstructor(config?: CacheConfig) {\r\n\t\tconst cacheConfig = config\r\n\t\t\t? Object.assign({}, defaultConfig, config)\r\n\t\t\t: defaultConfig;\r\n\t\tsuper(cacheConfig);\r\n\t\tthis.config.storage = cacheConfig.storage;\r\n\t\tthis.getItem = this.getItem.bind(this);\r\n\t\tthis.setItem = this.setItem.bind(this);\r\n\t\tthis.removeItem = this.removeItem.bind(this);\r\n\t}\r\n\r\n\t/**\r\n\t * decrease current size of the cache\r\n\t *\r\n\t * @private\r\n\t * @param amount - the amount of the cache size which needs to be decreased\r\n\t */\r\n\tprivate _decreaseCurSizeInBytes(amount: number): void {\r\n\t\tconst curSize: number = this.getCacheCurSize();\r\n\t\tthis.config.storage.setItem(\r\n\t\t\tthis.cacheCurSizeKey,\r\n\t\t\t(curSize - amount).toString()\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * increase current size of the cache\r\n\t *\r\n\t * @private\r\n\t * @param amount - the amount of the cache szie which need to be increased\r\n\t */\r\n\tprivate _increaseCurSizeInBytes(amount: number): void {\r\n\t\tconst curSize: number = this.getCacheCurSize();\r\n\t\tthis.config.storage.setItem(\r\n\t\t\tthis.cacheCurSizeKey,\r\n\t\t\t(curSize + amount).toString()\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * update the visited time if item has been visited\r\n\t *\r\n\t * @private\r\n\t * @param item - the item which need to be refreshed\r\n\t * @param prefixedKey - the key of the item\r\n\t *\r\n\t * @return the refreshed item\r\n\t */\r\n\tprivate _refreshItem(item: CacheItem, prefixedKey: string): CacheItem {\r\n\t\titem.visitedTime = getCurrTime();\r\n\t\tthis.config.storage.setItem(prefixedKey, JSON.stringify(item));\r\n\t\treturn item;\r\n\t}\r\n\r\n\t/**\r\n\t * check wether item is expired\r\n\t *\r\n\t * @private\r\n\t * @param key - the key of the item\r\n\t *\r\n\t * @return true if the item is expired.\r\n\t */\r\n\tprivate _isExpired(key: string): boolean {\r\n\t\tconst text: string | null = this.config.storage.getItem(key);\r\n\t\tconst item: CacheItem = JSON.parse(text);\r\n\t\tif (getCurrTime() >= item.expires) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * delete item from cache\r\n\t *\r\n\t * @private\r\n\t * @param prefixedKey - the key of the item\r\n\t * @param size - optional, the byte size of the item\r\n\t */\r\n\tprivate _removeItem(prefixedKey: string, size?: number): void {\r\n\t\tconst itemSize: number = size\r\n\t\t\t? size\r\n\t\t\t: JSON.parse(this.config.storage.getItem(prefixedKey)).byteSize;\r\n\t\tthis._decreaseCurSizeInBytes(itemSize);\r\n\t\t// remove the cache item\r\n\t\tthis.config.storage.removeItem(prefixedKey);\r\n\t}\r\n\r\n\t/**\r\n\t * put item into cache\r\n\t *\r\n\t * @private\r\n\t * @param prefixedKey - the key of the item\r\n\t * @param itemData - the value of the item\r\n\t * @param itemSizeInBytes - the byte size of the item\r\n\t */\r\n\tprivate _setItem(prefixedKey: string, item: CacheItem): void {\r\n\t\t// update the cache size\r\n\t\tthis._increaseCurSizeInBytes(item.byteSize);\r\n\r\n\t\ttry {\r\n\t\t\tthis.config.storage.setItem(prefixedKey, JSON.stringify(item));\r\n\t\t} catch (setItemErr) {\r\n\t\t\t// if failed, we need to rollback the cache size\r\n\t\t\tthis._decreaseCurSizeInBytes(item.byteSize);\r\n\t\t\tlogger.error(`Failed to set item ${setItemErr}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * total space needed when poping out items\r\n\t *\r\n\t * @private\r\n\t * @param itemSize\r\n\t *\r\n\t * @return total space needed\r\n\t */\r\n\tprivate _sizeToPop(itemSize: number): number {\r\n\t\tconst spaceItemNeed =\r\n\t\t\tthis.getCacheCurSize() + itemSize - this.config.capacityInBytes;\r\n\t\tconst cacheThresholdSpace =\r\n\t\t\t(1 - this.config.warningThreshold) * this.config.capacityInBytes;\r\n\t\treturn spaceItemNeed > cacheThresholdSpace\r\n\t\t\t? spaceItemNeed\r\n\t\t\t: cacheThresholdSpace;\r\n\t}\r\n\r\n\t/**\r\n\t * see whether cache is full\r\n\t *\r\n\t * @private\r\n\t * @param itemSize\r\n\t *\r\n\t * @return true if cache is full\r\n\t */\r\n\tprivate _isCacheFull(itemSize: number): boolean {\r\n\t\treturn itemSize + this.getCacheCurSize() > this.config.capacityInBytes;\r\n\t}\r\n\r\n\t/**\r\n\t * scan the storage and find out all the keys owned by this cache\r\n\t * also clean the expired keys while scanning\r\n\t *\r\n\t * @private\r\n\t *\r\n\t * @return array of keys\r\n\t */\r\n\tprivate _findValidKeys(): string[] {\r\n\t\tconst keys: string[] = [];\r\n\t\tconst keyInCache: string[] = [];\r\n\t\t// get all keys in Storage\r\n\t\tfor (let i = 0; i < this.config.storage.length; i += 1) {\r\n\t\t\tkeyInCache.push(this.config.storage.key(i));\r\n\t\t}\r\n\r\n\t\t// find those items which belong to our cache and also clean those expired items\r\n\t\tfor (let i = 0; i < keyInCache.length; i += 1) {\r\n\t\t\tconst key: string = keyInCache[i];\r\n\t\t\tif (\r\n\t\t\t\tkey.indexOf(this.config.keyPrefix) === 0 &&\r\n\t\t\t\tkey !== this.cacheCurSizeKey\r\n\t\t\t) {\r\n\t\t\t\tif (this._isExpired(key)) {\r\n\t\t\t\t\tthis._removeItem(key);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn keys;\r\n\t}\r\n\r\n\t/**\r\n\t * get all the items we have, sort them by their priority,\r\n\t * if priority is same, sort them by their last visited time\r\n\t * pop out items from the low priority (5 is the lowest)\r\n\t *\r\n\t * @private\r\n\t * @param keys - all the keys in this cache\r\n\t * @param sizeToPop - the total size of the items which needed to be poped out\r\n\t */\r\n\tprivate _popOutItems(keys: string[], sizeToPop: number): void {\r\n\t\tconst items: CacheItem[] = [];\r\n\t\tlet remainedSize: number = sizeToPop;\r\n\t\t// get the items from Storage\r\n\t\tfor (let i = 0; i < keys.length; i += 1) {\r\n\t\t\tconst val: string | null = this.config.storage.getItem(keys[i]);\r\n\t\t\tif (val != null) {\r\n\t\t\t\tconst item: CacheItem = JSON.parse(val);\r\n\t\t\t\titems.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// first compare priority\r\n\t\t// then compare visited time\r\n\t\titems.sort((a, b) => {\r\n\t\t\tif (a.priority > b.priority) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else if (a.priority < b.priority) {\r\n\t\t\t\treturn 1;\r\n\t\t\t} else {\r\n\t\t\t\tif (a.visitedTime < b.visitedTime) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t} else return 1;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tfor (let i = 0; i < items.length; i += 1) {\r\n\t\t\t// pop out items until we have enough room for new item\r\n\t\t\tthis._removeItem(items[i].key, items[i].byteSize);\r\n\t\t\tremainedSize -= items[i].byteSize;\r\n\t\t\tif (remainedSize <= 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set item into cache. You can put number, string, boolean or object.\r\n\t * The cache will first check whether has the same key.\r\n\t * If it has, it will delete the old item and then put the new item in\r\n\t * The cache will pop out items if it is full\r\n\t * You can specify the cache item options. The cache will abort and output a warning:\r\n\t * If the key is invalid\r\n\t * If the size of the item exceeds itemMaxSize.\r\n\t * If the value is undefined\r\n\t * If incorrect cache item configuration\r\n\t * If error happened with browser storage\r\n\t *\r\n\t * @param key - the key of the item\r\n\t * @param value - the value of the item\r\n\t * @param {Object} [options] - optional, the specified meta-data\r\n\t */\r\n\tpublic setItem(\r\n\t\tkey: string,\r\n\t\tvalue: object | number | string | boolean,\r\n\t\toptions?: CacheItemOptions\r\n\t): void {\r\n\t\tlogger.log(\r\n\t\t\t`Set item: key is ${key}, value is ${value} with options: ${options}`\r\n\t\t);\r\n\t\tconst prefixedKey: string = this.config.keyPrefix + key;\r\n\t\t// invalid keys\r\n\t\tif (\r\n\t\t\tprefixedKey === this.config.keyPrefix ||\r\n\t\t\tprefixedKey === this.cacheCurSizeKey\r\n\t\t) {\r\n\t\t\tlogger.warn(`Invalid key: should not be empty or 'CurSize'`);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (typeof value === 'undefined') {\r\n\t\t\tlogger.warn(`The value of item should not be undefined!`);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst cacheItemOptions: CacheItemOptions = {\r\n\t\t\tpriority:\r\n\t\t\t\toptions && options.priority !== undefined\r\n\t\t\t\t\t? options.priority\r\n\t\t\t\t\t: this.config.defaultPriority,\r\n\t\t\texpires:\r\n\t\t\t\toptions && options.expires !== undefined\r\n\t\t\t\t\t? options.expires\r\n\t\t\t\t\t: this.config.defaultTTL + getCurrTime(),\r\n\t\t};\r\n\r\n\t\tif (cacheItemOptions.priority < 1 || cacheItemOptions.priority > 5) {\r\n\t\t\tlogger.warn(\r\n\t\t\t\t`Invalid parameter: priority due to out or range. It should be within 1 and 5.`\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst item: CacheItem = this.fillCacheItem(\r\n\t\t\tprefixedKey,\r\n\t\t\tvalue,\r\n\t\t\tcacheItemOptions\r\n\t\t);\r\n\r\n\t\t// check wether this item is too big;\r\n\t\tif (item.byteSize > this.config.itemMaxSize) {\r\n\t\t\tlogger.warn(\r\n\t\t\t\t`Item with key: ${key} you are trying to put into is too big!`\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\t// first look into the storage, if it exists, delete it.\r\n\t\t\tconst val: string | null = this.config.storage.getItem(prefixedKey);\r\n\t\t\tif (val) {\r\n\t\t\t\tthis._removeItem(prefixedKey, JSON.parse(val).byteSize);\r\n\t\t\t}\r\n\r\n\t\t\t// check whether the cache is full\r\n\t\t\tif (this._isCacheFull(item.byteSize)) {\r\n\t\t\t\tconst validKeys: string[] = this._findValidKeys();\r\n\t\t\t\t// check again and then pop out items\r\n\t\t\t\tif (this._isCacheFull(item.byteSize)) {\r\n\t\t\t\t\tconst sizeToPop: number = this._sizeToPop(item.byteSize);\r\n\t\t\t\t\tthis._popOutItems(validKeys, sizeToPop);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// put item in the cache\r\n\t\t\t// may failed due to storage full\r\n\t\t\tthis._setItem(prefixedKey, item);\r\n\t\t} catch (e) {\r\n\t\t\tlogger.warn(`setItem failed! ${e}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get item from cache. It will return null if item doesn’t exist or it has been expired.\r\n\t * If you specified callback function in the options,\r\n\t * then the function will be executed if no such item in the cache\r\n\t * and finally put the return value into cache.\r\n\t * Please make sure the callback function will return the value you want to put into the cache.\r\n\t * The cache will abort output a warning:\r\n\t * If the key is invalid\r\n\t * If error happened with browser storage\r\n\t *\r\n\t * @param key - the key of the item\r\n\t * @param {Object} [options] - the options of callback function\r\n\t *\r\n\t * @return - return the value of the item\r\n\t */\r\n\tpublic getItem(key: string, options?: CacheItemOptions): any {\r\n\t\tlogger.log(`Get item: key is ${key} with options ${options}`);\r\n\t\tlet ret: string | null = null;\r\n\t\tconst prefixedKey: string = this.config.keyPrefix + key;\r\n\r\n\t\tif (\r\n\t\t\tprefixedKey === this.config.keyPrefix ||\r\n\t\t\tprefixedKey === this.cacheCurSizeKey\r\n\t\t) {\r\n\t\t\tlogger.warn(`Invalid key: should not be empty or 'CurSize'`);\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tret = this.config.storage.getItem(prefixedKey);\r\n\t\t\tif (ret != null) {\r\n\t\t\t\tif (this._isExpired(prefixedKey)) {\r\n\t\t\t\t\t// if expired, remove that item and return null\r\n\t\t\t\t\tthis._removeItem(prefixedKey, JSON.parse(ret).byteSize);\r\n\t\t\t\t\tret = null;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// if not expired, great, return the value and refresh it\r\n\t\t\t\t\tlet item: CacheItem = JSON.parse(ret);\r\n\t\t\t\t\titem = this._refreshItem(item, prefixedKey);\r\n\t\t\t\t\treturn item.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (options && options.callback !== undefined) {\r\n\t\t\t\tconst val: object | string | number | boolean = options.callback();\r\n\t\t\t\tif (val !== null) {\r\n\t\t\t\t\tthis.setItem(key, val, options);\r\n\t\t\t\t}\r\n\t\t\t\treturn val;\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t} catch (e) {\r\n\t\t\tlogger.warn(`getItem failed! ${e}`);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * remove item from the cache\r\n\t * The cache will abort output a warning:\r\n\t * If error happened with browser storage\r\n\t * @param key - the key of the item\r\n\t */\r\n\tpublic removeItem(key: string): void {\r\n\t\tlogger.log(`Remove item: key is ${key}`);\r\n\t\tconst prefixedKey: string = this.config.keyPrefix + key;\r\n\r\n\t\tif (\r\n\t\t\tprefixedKey === this.config.keyPrefix ||\r\n\t\t\tprefixedKey === this.cacheCurSizeKey\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst val: string | null = this.config.storage.getItem(prefixedKey);\r\n\t\t\tif (val) {\r\n\t\t\t\tthis._removeItem(prefixedKey, JSON.parse(val).byteSize);\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tlogger.warn(`removeItem failed! ${e}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * clear the entire cache\r\n\t * The cache will abort output a warning:\r\n\t * If error happened with browser storage\r\n\t */\r\n\tpublic clear(): void {\r\n\t\tlogger.log(`Clear Cache`);\r\n\t\tconst keysToRemove: string[] = [];\r\n\r\n\t\tfor (let i = 0; i < this.config.storage.length; i += 1) {\r\n\t\t\tconst key = this.config.storage.key(i);\r\n\t\t\tif (key.indexOf(this.config.keyPrefix) === 0) {\r\n\t\t\t\tkeysToRemove.push(key);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tfor (let i = 0; i < keysToRemove.length; i += 1) {\r\n\t\t\t\tthis.config.storage.removeItem(keysToRemove[i]);\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tlogger.warn(`clear failed! ${e}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Return all the keys in the cache.\r\n\t *\r\n\t * @return - all keys in the cache\r\n\t */\r\n\tpublic getAllKeys(): string[] {\r\n\t\tconst keys: string[] = [];\r\n\t\tfor (let i = 0; i < this.config.storage.length; i += 1) {\r\n\t\t\tconst key = this.config.storage.key(i);\r\n\t\t\tif (\r\n\t\t\t\tkey.indexOf(this.config.keyPrefix) === 0 &&\r\n\t\t\t\tkey !== this.cacheCurSizeKey\r\n\t\t\t) {\r\n\t\t\t\tkeys.push(key.substring(this.config.keyPrefix.length));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn keys;\r\n\t}\r\n\r\n\t/**\r\n\t * return the current size of the cache\r\n\t *\r\n\t * @return - current size of the cache\r\n\t */\r\n\tpublic getCacheCurSize(): number {\r\n\t\tlet ret: string | null = this.config.storage.getItem(this.cacheCurSizeKey);\r\n\t\tif (!ret) {\r\n\t\t\tthis.config.storage.setItem(this.cacheCurSizeKey, '0');\r\n\t\t\tret = '0';\r\n\t\t}\r\n\t\treturn Number(ret);\r\n\t}\r\n\r\n\t/**\r\n\t * Return a new instance of cache with customized configuration.\r\n\t * @param config - the customized configuration\r\n\t *\r\n\t * @return - new instance of Cache\r\n\t */\r\n\tpublic createInstance(config: CacheConfig): ICache {\r\n\t\tif (!config.keyPrefix || config.keyPrefix === defaultConfig.keyPrefix) {\r\n\t\t\tlogger.error('invalid keyPrefix, setting keyPrefix with timeStamp');\r\n\t\t\tconfig.keyPrefix = getCurrTime.toString();\r\n\t\t}\r\n\r\n\t\treturn new BrowserStorageCacheClass(config);\r\n\t}\r\n}\r\n\r\nexport const BrowserStorageCache: ICache = new BrowserStorageCacheClass();\r\n\r\nAmplify.register(BrowserStorageCache);\r\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport Observable from 'zen-observable-ts';\nimport { PubSubProvider, ProviderOptions } from '../types/Provider';\nimport {\n\tCustomUserAgentDetails,\n\tConsoleLogger as Logger,\n} from '@aws-amplify/core';\nimport { PubSubContent } from '../types/PubSub';\n\nconst logger = new Logger('AbstractPubSubProvider');\n\nexport abstract class AbstractPubSubProvider<T extends ProviderOptions>\n\timplements PubSubProvider\n{\n\tprivate _config: T;\n\n\tconstructor(options: T) {\n\t\tthis._config = options;\n\t}\n\n\tconfigure(config: T): T {\n\t\tthis._config = { ...config, ...this._config };\n\n\t\tlogger.debug(`configure ${this.getProviderName()}`, this._config);\n\n\t\treturn this.options;\n\t}\n\n\tgetCategory() {\n\t\treturn 'PubSub';\n\t}\n\n\tabstract getProviderName(): string;\n\n\tprotected get options(): T {\n\t\treturn { ...this._config };\n\t}\n\n\tpublic abstract newClient(clientOptions: T): Promise<any>;\n\n\tpublic abstract publish(\n\t\ttopics: string[] | string,\n\t\tmsg: PubSubContent,\n\t\toptions?: T\n\t): void;\n\n\tpublic abstract subscribe(\n\t\ttopics: string[] | string,\n\t\toptions?: T,\n\t\tcustomUserAgentDetails?: CustomUserAgentDetails\n\t): Observable<PubSubContent>;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ZenObservable } from 'zen-observable-ts';\n\nexport interface SubscriptionObserver<T> {\n\tclosed: boolean;\n\tnext(value: T): void;\n\terror(errorValue: any): void;\n\tcomplete(): void;\n}\n\nexport enum CONTROL_MSG {\n\tCONNECTION_CLOSED = 'Connection closed',\n\tCONNECTION_FAILED = 'Connection failed',\n\tREALTIME_SUBSCRIPTION_INIT_ERROR = 'AppSync Realtime subscription init error',\n\tSUBSCRIPTION_ACK = 'Subscription ack',\n\tTIMEOUT_DISCONNECT = 'Timeout disconnect',\n}\n\n/** @enum {string} */\nexport enum ConnectionState {\n\t/*\n\t * The connection is alive and healthy\n\t */\n\tConnected = 'Connected',\n\t/*\n\t * The connection is alive, but the connection is offline\n\t */\n\tConnectedPendingNetwork = 'ConnectedPendingNetwork',\n\t/*\n\t * The connection has been disconnected while in use\n\t */\n\tConnectionDisrupted = 'ConnectionDisrupted',\n\t/*\n\t * The connection has been disconnected and the network is offline\n\t */\n\tConnectionDisruptedPendingNetwork = 'ConnectionDisruptedPendingNetwork',\n\t/*\n\t * The connection is in the process of connecting\n\t */\n\tConnecting = 'Connecting',\n\t/*\n\t * The connection is not in use and is being disconnected\n\t */\n\tConnectedPendingDisconnect = 'ConnectedPendingDisconnect',\n\t/*\n\t * The connection is not in use and has been disconnected\n\t */\n\tDisconnected = 'Disconnected',\n\t/*\n\t * The connection is alive, but a keep alive message has been missed\n\t */\n\tConnectedPendingKeepAlive = 'ConnectedPendingKeepAlive',\n}\n\nexport type PubSubContent = Record<string, unknown> | string;\nexport type PubSubContentObserver =\n\tZenObservable.SubscriptionObserver<PubSubContent>;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport const MAX_DELAY_MS = 5000;\n\nexport const NON_RETRYABLE_CODES = [400, 401, 403];\n\nexport const CONNECTION_STATE_CHANGE = 'ConnectionStateChange';\n\nexport enum MESSAGE_TYPES {\n\t/**\n\t * Client -> Server message.\n\t * This message type is the first message after handshake and this will initialize AWS AppSync RealTime communication\n\t */\n\tGQL_CONNECTION_INIT = 'connection_init',\n\t/**\n\t * Server -> Client message\n\t * This message type is in case there is an issue with AWS AppSync RealTime when establishing connection\n\t */\n\tGQL_CONNECTION_ERROR = 'connection_error',\n\t/**\n\t * Server -> Client message.\n\t * This message type is for the ack response from AWS AppSync RealTime for GQL_CONNECTION_INIT message\n\t */\n\tGQL_CONNECTION_ACK = 'connection_ack',\n\t/**\n\t * Client -> Server message.\n\t * This message type is for register subscriptions with AWS AppSync RealTime\n\t */\n\tGQL_START = 'start',\n\t/**\n\t * Server -> Client message.\n\t * This message type is for the ack response from AWS AppSync RealTime for GQL_START message\n\t */\n\tGQL_START_ACK = 'start_ack',\n\t/**\n\t * Server -> Client message.\n\t * This message type is for subscription message from AWS AppSync RealTime\n\t */\n\tGQL_DATA = 'data',\n\t/**\n\t * Server -> Client message.\n\t * This message type helps the client to know is still receiving messages from AWS AppSync RealTime\n\t */\n\tGQL_CONNECTION_KEEP_ALIVE = 'ka',\n\t/**\n\t * Client -> Server message.\n\t * This message type is for unregister subscriptions with AWS AppSync RealTime\n\t */\n\tGQL_STOP = 'stop',\n\t/**\n\t * Server -> Client message.\n\t * This message type is for the ack response from AWS AppSync RealTime for GQL_STOP message\n\t */\n\tGQL_COMPLETE = 'complete',\n\t/**\n\t * Server -> Client message.\n\t * This message type is for sending error messages from AWS AppSync RealTime to the client\n\t */\n\tGQL_ERROR = 'error', // Server -> Client\n}\n\nexport enum SUBSCRIPTION_STATUS {\n\tPENDING,\n\tCONNECTED,\n\tFAILED,\n}\n\nexport enum SOCKET_STATUS {\n\tCLOSED,\n\tREADY,\n\tCONNECTING,\n}\n\nexport const AMPLIFY_SYMBOL = (\n\ttypeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n\t\t? Symbol.for('amplify_default')\n\t\t: '@@amplify_default'\n) as Symbol;\n\nexport const AWS_APPSYNC_REALTIME_HEADERS = {\n\taccept: 'application/json, text/javascript',\n\t'content-encoding': 'amz-1.0',\n\t'content-type': 'application/json; charset=UTF-8',\n};\n\n/**\n * Time in milleseconds to wait for GQL_CONNECTION_INIT message\n */\nexport const CONNECTION_INIT_TIMEOUT = 15000;\n\n/**\n * Time in milleseconds to wait for GQL_START_ACK message\n */\nexport const START_ACK_TIMEOUT = 15000;\n\n/**\n * Default Time in milleseconds to wait for GQL_CONNECTION_KEEP_ALIVE message\n */\nexport const DEFAULT_KEEP_ALIVE_TIMEOUT = 5 * 60 * 1000;\n\n/**\n * Default Time in milleseconds to alert for missed GQL_CONNECTION_KEEP_ALIVE message\n */\nexport const DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT = 65 * 1000;\n\n/**\n * Default delay time in milleseconds between when reconnect is triggered vs when it is attempted\n */\nexport const RECONNECT_DELAY = 5 * 1000;\n\n/**\n * Default interval time in milleseconds between when reconnect is re-attempted\n */\nexport const RECONNECT_INTERVAL = 60 * 1000;\n","var __values = (this && this.__values) || function(o) {\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n    if (m) return m.call(o);\n    if (o && typeof o.length === \"number\") return {\n        next: function () {\n            if (o && i >= o.length) o = void 0;\n            return { value: o && o[i++], done: !o };\n        }\n    };\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { browserOrNode, isWebWorker } from '@aws-amplify/core';\nimport Observable from 'zen-observable-ts';\nvar ReachabilityNavigator = /** @class */ (function () {\n    function ReachabilityNavigator() {\n    }\n    ReachabilityNavigator.prototype.networkMonitor = function (netInfo) {\n        if (browserOrNode().isNode) {\n            return Observable.from([{ online: true }]);\n        }\n        var globalObj = isWebWorker() ? self : window;\n        return new Observable(function (observer) {\n            observer.next({ online: globalObj.navigator.onLine });\n            var notifyOnline = function () { return observer.next({ online: true }); };\n            var notifyOffline = function () { return observer.next({ online: false }); };\n            globalObj.addEventListener('online', notifyOnline);\n            globalObj.addEventListener('offline', notifyOffline);\n            ReachabilityNavigator._observers.push(observer);\n            return function () {\n                globalObj.removeEventListener('online', notifyOnline);\n                globalObj.removeEventListener('offline', notifyOffline);\n                ReachabilityNavigator._observers = ReachabilityNavigator._observers.filter(function (_observer) { return _observer !== observer; });\n            };\n        });\n    };\n    // expose observers to simulate offline mode for integration testing\n    ReachabilityNavigator._observerOverride = function (status) {\n        var e_1, _a;\n        var _loop_1 = function (observer) {\n            if (observer.closed) {\n                ReachabilityNavigator._observers = ReachabilityNavigator._observers.filter(function (_observer) { return _observer !== observer; });\n                return \"continue\";\n            }\n            observer.next(status);\n        };\n        try {\n            for (var _b = __values(ReachabilityNavigator._observers), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var observer = _c.value;\n                _loop_1(observer);\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    };\n    ReachabilityNavigator._observers = [];\n    return ReachabilityNavigator;\n}());\nexport default ReachabilityNavigator;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Reachability } from '@aws-amplify/core';\n\nexport const ReachabilityMonitor = () => new Reachability().networkMonitor();\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Observer } from 'zen-observable-ts';\nimport { RECONNECT_DELAY, RECONNECT_INTERVAL } from '../Providers/constants';\n\nexport enum ReconnectEvent {\n\tSTART_RECONNECT = 'START_RECONNECT',\n\tHALT_RECONNECT = 'HALT_RECONNECT',\n}\n\n/**\n * Captures the reconnect event logic used to determine when to reconnect to PubSub providers.\n *   Reconnnect attempts are delayed by 5 seconds to let the interface settle.\n *   Attempting to reconnect only once creates unrecoverable states when the network state isn't\n *   supported by the browser, so this keeps retrying every minute until halted.\n */\nexport class ReconnectionMonitor {\n\tprivate reconnectObservers: Observer<void>[] = [];\n\tprivate reconnectIntervalId?: ReturnType<typeof setInterval>;\n\tprivate reconnectSetTimeoutId?: ReturnType<typeof setTimeout>;\n\n\t/**\n\t * Add reconnect observer to the list of observers to alert on reconnect\n\t */\n\taddObserver(reconnectObserver: Observer<void>) {\n\t\tthis.reconnectObservers.push(reconnectObserver);\n\t}\n\n\t/**\n\t * Given a reconnect event, start the appropriate behavior\n\t */\n\trecord(event: ReconnectEvent) {\n\t\tif (event === ReconnectEvent.START_RECONNECT) {\n\t\t\t// If the reconnection hasn't been started\n\t\t\tif (\n\t\t\t\tthis.reconnectSetTimeoutId === undefined &&\n\t\t\t\tthis.reconnectIntervalId === undefined\n\t\t\t) {\n\t\t\t\tthis.reconnectSetTimeoutId = setTimeout(() => {\n\t\t\t\t\t// Reconnect now\n\t\t\t\t\tthis._triggerReconnect();\n\t\t\t\t\t// Retry reconnect every periodically until it works\n\t\t\t\t\tthis.reconnectIntervalId = setInterval(() => {\n\t\t\t\t\t\tthis._triggerReconnect();\n\t\t\t\t\t}, RECONNECT_INTERVAL);\n\t\t\t\t}, RECONNECT_DELAY);\n\t\t\t}\n\t\t}\n\n\t\tif (event === ReconnectEvent.HALT_RECONNECT) {\n\t\t\tif (this.reconnectIntervalId) {\n\t\t\t\tclearInterval(this.reconnectIntervalId);\n\t\t\t\tthis.reconnectIntervalId = undefined;\n\t\t\t}\n\t\t\tif (this.reconnectSetTimeoutId) {\n\t\t\t\tclearTimeout(this.reconnectSetTimeoutId);\n\t\t\t\tthis.reconnectSetTimeoutId = undefined;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Complete all reconnect observers\n\t */\n\tclose() {\n\t\tthis.reconnectObservers.forEach(reconnectObserver => {\n\t\t\treconnectObserver.complete?.();\n\t\t});\n\t}\n\n\tprivate _triggerReconnect() {\n\t\tthis.reconnectObservers.forEach(reconnectObserver => {\n\t\t\treconnectObserver.next?.();\n\t\t});\n\t}\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Observable, { ZenObservable } from 'zen-observable-ts';\nimport { ConnectionState } from '../types/PubSub';\nimport { ReachabilityMonitor } from './ReachabilityMonitor';\n\n// Internal types for tracking different connection states\ntype LinkedConnectionState = 'connected' | 'disconnected';\ntype LinkedHealthState = 'healthy' | 'unhealthy';\ntype LinkedConnectionStates = {\n\tnetworkState: LinkedConnectionState;\n\tconnectionState: LinkedConnectionState | 'connecting';\n\tintendedConnectionState: LinkedConnectionState;\n\tkeepAliveState: LinkedHealthState;\n};\n\nexport const CONNECTION_CHANGE: {\n\t[key in\n\t\t| 'KEEP_ALIVE_MISSED'\n\t\t| 'KEEP_ALIVE'\n\t\t| 'CONNECTION_ESTABLISHED'\n\t\t| 'CONNECTION_FAILED'\n\t\t| 'CLOSING_CONNECTION'\n\t\t| 'OPENING_CONNECTION'\n\t\t| 'CLOSED'\n\t\t| 'ONLINE'\n\t\t| 'OFFLINE']: Partial<LinkedConnectionStates>;\n} = {\n\tKEEP_ALIVE_MISSED: { keepAliveState: 'unhealthy' },\n\tKEEP_ALIVE: { keepAliveState: 'healthy' },\n\tCONNECTION_ESTABLISHED: { connectionState: 'connected' },\n\tCONNECTION_FAILED: {\n\t\tintendedConnectionState: 'disconnected',\n\t\tconnectionState: 'disconnected',\n\t},\n\tCLOSING_CONNECTION: { intendedConnectionState: 'disconnected' },\n\tOPENING_CONNECTION: {\n\t\tintendedConnectionState: 'connected',\n\t\tconnectionState: 'connecting',\n\t},\n\tCLOSED: { connectionState: 'disconnected' },\n\tONLINE: { networkState: 'connected' },\n\tOFFLINE: { networkState: 'disconnected' },\n};\n\nexport class ConnectionStateMonitor {\n\t/**\n\t * @private\n\t */\n\tprivate _linkedConnectionState: LinkedConnectionStates;\n\tprivate _linkedConnectionStateObservable: Observable<LinkedConnectionStates>;\n\tprivate _linkedConnectionStateObserver: ZenObservable.SubscriptionObserver<LinkedConnectionStates>;\n\tprivate _networkMonitoringSubscription?: ZenObservable.Subscription;\n\tprivate _initialNetworkStateSubscription?: ZenObservable.Subscription;\n\n\tconstructor() {\n\t\tthis._networkMonitoringSubscription = undefined;\n\t\tthis._linkedConnectionState = {\n\t\t\tnetworkState: 'connected',\n\t\t\tconnectionState: 'disconnected',\n\t\t\tintendedConnectionState: 'disconnected',\n\t\t\tkeepAliveState: 'healthy',\n\t\t};\n\n\t\t// Attempt to update the state with the current actual network state\n\t\tthis._initialNetworkStateSubscription = ReachabilityMonitor().subscribe(\n\t\t\t({ online }) => {\n\t\t\t\tthis.record(\n\t\t\t\t\tonline ? CONNECTION_CHANGE.ONLINE : CONNECTION_CHANGE.OFFLINE\n\t\t\t\t);\n\t\t\t\tthis._initialNetworkStateSubscription?.unsubscribe();\n\t\t\t}\n\t\t);\n\n\t\tthis._linkedConnectionStateObservable =\n\t\t\tnew Observable<LinkedConnectionStates>(connectionStateObserver => {\n\t\t\t\tconnectionStateObserver.next(this._linkedConnectionState);\n\t\t\t\tthis._linkedConnectionStateObserver = connectionStateObserver;\n\t\t\t});\n\t}\n\n\t/**\n\t * Turn network state monitoring on if it isn't on already\n\t */\n\tprivate enableNetworkMonitoring() {\n\t\t// If no initial network state was discovered, stop trying\n\t\tthis._initialNetworkStateSubscription?.unsubscribe();\n\n\t\t// Maintain the network state based on the reachability monitor\n\t\tif (this._networkMonitoringSubscription === undefined) {\n\t\t\tthis._networkMonitoringSubscription = ReachabilityMonitor().subscribe(\n\t\t\t\t({ online }) => {\n\t\t\t\t\tthis.record(\n\t\t\t\t\t\tonline ? CONNECTION_CHANGE.ONLINE : CONNECTION_CHANGE.OFFLINE\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Turn network state monitoring off if it isn't off already\n\t */\n\tprivate disableNetworkMonitoring() {\n\t\tthis._networkMonitoringSubscription?.unsubscribe();\n\t\tthis._networkMonitoringSubscription = undefined;\n\t}\n\n\t/**\n\t * Get the observable that allows us to monitor the connection state\n\t *\n\t * @returns {Observable<ConnectionState>} - The observable that emits ConnectionState updates\n\t */\n\tpublic get connectionStateObservable(): Observable<ConnectionState> {\n\t\tlet previous: ConnectionState;\n\n\t\t// The linked state aggregates state changes to any of the network, connection,\n\t\t// intendedConnection and keepAliveHealth. Some states will change these independent\n\t\t// states without changing the overall connection state.\n\n\t\t// After translating from linked states to ConnectionState, then remove any duplicates\n\t\treturn this._linkedConnectionStateObservable\n\t\t\t.map(value => {\n\t\t\t\treturn this.connectionStatesTranslator(value);\n\t\t\t})\n\t\t\t.filter(current => {\n\t\t\t\tconst toInclude = current !== previous;\n\t\t\t\tprevious = current;\n\t\t\t\treturn toInclude;\n\t\t\t});\n\t}\n\n\t/*\n\t * Updates local connection state and emits the full state to the observer.\n\t */\n\trecord(statusUpdates: Partial<LinkedConnectionStates>) {\n\t\t// Maintain the network monitor\n\t\tif (statusUpdates.intendedConnectionState === 'connected') {\n\t\t\tthis.enableNetworkMonitoring();\n\t\t} else if (statusUpdates.intendedConnectionState === 'disconnected') {\n\t\t\tthis.disableNetworkMonitoring();\n\t\t}\n\n\t\t// Maintain the socket state\n\t\tconst newSocketStatus = {\n\t\t\t...this._linkedConnectionState,\n\t\t\t...statusUpdates,\n\t\t};\n\n\t\tthis._linkedConnectionState = { ...newSocketStatus };\n\n\t\tthis._linkedConnectionStateObserver.next(this._linkedConnectionState);\n\t}\n\n\t/*\n\t * Translate the ConnectionState structure into a specific ConnectionState string literal union\n\t */\n\tprivate connectionStatesTranslator({\n\t\tconnectionState,\n\t\tnetworkState,\n\t\tintendedConnectionState,\n\t\tkeepAliveState,\n\t}: LinkedConnectionStates): ConnectionState {\n\t\tif (connectionState === 'connected' && networkState === 'disconnected')\n\t\t\treturn ConnectionState.ConnectedPendingNetwork;\n\n\t\tif (\n\t\t\tconnectionState === 'connected' &&\n\t\t\tintendedConnectionState === 'disconnected'\n\t\t)\n\t\t\treturn ConnectionState.ConnectedPendingDisconnect;\n\n\t\tif (\n\t\t\tconnectionState === 'disconnected' &&\n\t\t\tintendedConnectionState === 'connected' &&\n\t\t\tnetworkState === 'disconnected'\n\t\t)\n\t\t\treturn ConnectionState.ConnectionDisruptedPendingNetwork;\n\n\t\tif (\n\t\t\tconnectionState === 'disconnected' &&\n\t\t\tintendedConnectionState === 'connected'\n\t\t)\n\t\t\treturn ConnectionState.ConnectionDisrupted;\n\n\t\tif (connectionState === 'connected' && keepAliveState === 'unhealthy')\n\t\t\treturn ConnectionState.ConnectedPendingKeepAlive;\n\n\t\t// All remaining states directly correspond to the connection state\n\t\tif (connectionState === 'connecting') return ConnectionState.Connecting;\n\t\tif (connectionState === 'disconnected') return ConnectionState.Disconnected;\n\t\treturn ConnectionState.Connected;\n\t}\n}\n","import { GRAPHQL_AUTH_MODE } from '@aws-amplify/auth';\nexport { GRAPHQL_AUTH_MODE };\nexport var GraphQLAuthError;\n(function (GraphQLAuthError) {\n    GraphQLAuthError[\"NO_API_KEY\"] = \"No api-key configured\";\n    GraphQLAuthError[\"NO_CURRENT_USER\"] = \"No current user\";\n    GraphQLAuthError[\"NO_CREDENTIALS\"] = \"No credentials\";\n    GraphQLAuthError[\"NO_FEDERATED_JWT\"] = \"No federated jwt\";\n    GraphQLAuthError[\"NO_AUTH_TOKEN\"] = \"No auth token specified\";\n})(GraphQLAuthError || (GraphQLAuthError = {}));\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport Observable, { ZenObservable } from 'zen-observable-ts';\nimport { GraphQLError } from 'graphql';\nimport * as url from 'url';\nimport { v4 as uuid } from 'uuid';\nimport { Buffer } from 'buffer';\nimport { ProviderOptions } from '../../types/Provider';\nimport {\n\tLogger,\n\tCredentials,\n\tSigner,\n\tHub,\n\tConstants,\n\tUSER_AGENT_HEADER,\n\tjitteredExponentialRetry,\n\tNonRetryableError,\n\tICredentials,\n\tisNonRetryableError,\n\tCustomUserAgentDetails,\n\tgetAmplifyUserAgent,\n} from '@aws-amplify/core';\nimport { Cache } from '@aws-amplify/cache';\nimport { Auth, GRAPHQL_AUTH_MODE } from '@aws-amplify/auth';\nimport { AbstractPubSubProvider } from '../PubSubProvider';\nimport {\n\tCONTROL_MSG,\n\tConnectionState,\n\tPubSubContent,\n\tPubSubContentObserver,\n} from '../../types/PubSub';\n\nimport {\n\tAMPLIFY_SYMBOL,\n\tAWS_APPSYNC_REALTIME_HEADERS,\n\tCONNECTION_INIT_TIMEOUT,\n\tDEFAULT_KEEP_ALIVE_TIMEOUT,\n\tDEFAULT_KEEP_ALIVE_ALERT_TIMEOUT,\n\tMAX_DELAY_MS,\n\tMESSAGE_TYPES,\n\tNON_RETRYABLE_CODES,\n\tSOCKET_STATUS,\n\tSTART_ACK_TIMEOUT,\n\tSUBSCRIPTION_STATUS,\n\tCONNECTION_STATE_CHANGE,\n} from '../constants';\nimport {\n\tConnectionStateMonitor,\n\tCONNECTION_CHANGE,\n} from '../../utils/ConnectionStateMonitor';\nimport {\n\tReconnectEvent,\n\tReconnectionMonitor,\n} from '../../utils/ReconnectionMonitor';\n\nconst logger = new Logger('AWSAppSyncRealTimeProvider');\n\nconst dispatchApiEvent = (\n\tevent: string,\n\tdata: Record<string, unknown>,\n\tmessage: string\n) => {\n\tHub.dispatch('api', { event, data, message }, 'PubSub', AMPLIFY_SYMBOL);\n};\n\n/**\n * @returns base64url-encoded string - https://datatracker.ietf.org/doc/html/rfc4648#section-5\n */\nconst base64urlEncode = (str: string): string => {\n\tconst base64Str = Buffer.from(str).toString('base64');\n\n\tconst base64UrlStr = base64Str\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_')\n\t\t.replace(/=/g, '');\n\n\treturn base64UrlStr;\n};\n\nexport type ObserverQuery = {\n\tobserver: PubSubContentObserver;\n\tquery: string;\n\tvariables: Record<string, unknown>;\n\tsubscriptionState: SUBSCRIPTION_STATUS;\n\tsubscriptionReadyCallback?: Function;\n\tsubscriptionFailedCallback?: Function;\n\tstartAckTimeoutId?: ReturnType<typeof setTimeout>;\n};\n\nconst standardDomainPattern =\n\t/^https:\\/\\/\\w{26}\\.appsync\\-api\\.\\w{2}(?:(?:\\-\\w{2,})+)\\-\\d\\.amazonaws.com(?:\\.cn)?\\/graphql$/i;\n\nconst customDomainPath = '/realtime';\n\ntype GraphqlAuthModes = keyof typeof GRAPHQL_AUTH_MODE;\n\ntype DataObject = {\n\tdata: Record<string, unknown>;\n};\n\ntype DataPayload = {\n\tid: string;\n\tpayload: DataObject;\n\ttype: string;\n};\n\ntype ParsedMessagePayload = {\n\ttype: string;\n\tpayload: {\n\t\tconnectionTimeoutMs: number;\n\t\terrors?: [{ errorType: string; errorCode: number }];\n\t};\n};\n\nexport interface AWSAppSyncRealTimeProviderOptions extends ProviderOptions {\n\tappSyncGraphqlEndpoint?: string;\n\tauthenticationType?: GraphqlAuthModes;\n\tquery?: string;\n\tvariables?: Record<string, unknown>;\n\tapiKey?: string;\n\tregion?: string;\n\tgraphql_headers?: () => {} | (() => Promise<{}>);\n\tadditionalHeaders?: { [key: string]: string };\n}\n\ntype AWSAppSyncRealTimeAuthInput =\n\tPartial<AWSAppSyncRealTimeProviderOptions> & {\n\t\tcanonicalUri: string;\n\t\tpayload: string;\n\t\thost?: string | undefined;\n\t};\n\nexport class AWSAppSyncRealTimeProvider extends AbstractPubSubProvider<AWSAppSyncRealTimeProviderOptions> {\n\tprivate awsRealTimeSocket?: WebSocket;\n\tprivate socketStatus: SOCKET_STATUS = SOCKET_STATUS.CLOSED;\n\tprivate keepAliveTimeoutId?: ReturnType<typeof setTimeout>;\n\tprivate keepAliveTimeout = DEFAULT_KEEP_ALIVE_TIMEOUT;\n\tprivate keepAliveAlertTimeoutId?: ReturnType<typeof setTimeout>;\n\tprivate subscriptionObserverMap: Map<string, ObserverQuery> = new Map();\n\tprivate promiseArray: Array<{ res: Function; rej: Function }> = [];\n\tprivate connectionState: ConnectionState;\n\tprivate readonly connectionStateMonitor = new ConnectionStateMonitor();\n\tprivate readonly reconnectionMonitor = new ReconnectionMonitor();\n\tprivate connectionStateMonitorSubscription: ZenObservable.Subscription;\n\n\tconstructor(options: ProviderOptions = {}) {\n\t\tsuper(options);\n\t\t// Monitor the connection state and pass changes along to Hub\n\t\tthis.connectionStateMonitorSubscription =\n\t\t\tthis.connectionStateMonitor.connectionStateObservable.subscribe(\n\t\t\t\tconnectionState => {\n\t\t\t\t\tdispatchApiEvent(\n\t\t\t\t\t\tCONNECTION_STATE_CHANGE,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tprovider: this,\n\t\t\t\t\t\t\tconnectionState,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t`Connection state is ${connectionState}`\n\t\t\t\t\t);\n\t\t\t\t\tthis.connectionState = connectionState;\n\n\t\t\t\t\t// Trigger START_RECONNECT when the connection is disrupted\n\t\t\t\t\tif (connectionState === ConnectionState.ConnectionDisrupted) {\n\t\t\t\t\t\tthis.reconnectionMonitor.record(ReconnectEvent.START_RECONNECT);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Trigger HALT_RECONNECT to halt reconnection attempts when the state is anything other than\n\t\t\t\t\t//   ConnectionDisrupted or Connecting\n\t\t\t\t\tif (\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tConnectionState.Connected,\n\t\t\t\t\t\t\tConnectionState.ConnectedPendingDisconnect,\n\t\t\t\t\t\t\tConnectionState.ConnectedPendingKeepAlive,\n\t\t\t\t\t\t\tConnectionState.ConnectedPendingNetwork,\n\t\t\t\t\t\t\tConnectionState.ConnectionDisruptedPendingNetwork,\n\t\t\t\t\t\t\tConnectionState.Disconnected,\n\t\t\t\t\t\t].includes(connectionState)\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.reconnectionMonitor.record(ReconnectEvent.HALT_RECONNECT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t}\n\n\t/**\n\t * Mark the socket closed and release all active listeners\n\t */\n\tclose() {\n\t\t// Mark the socket closed both in status and the connection monitor\n\t\tthis.socketStatus = SOCKET_STATUS.CLOSED;\n\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_FAILED);\n\n\t\t// Turn off the subscription monitor Hub publishing\n\t\tthis.connectionStateMonitorSubscription.unsubscribe();\n\t\t// Complete all reconnect observers\n\t\tthis.reconnectionMonitor.close();\n\t}\n\n\tgetNewWebSocket(url: string, protocol: string[]) {\n\t\treturn new WebSocket(url, protocol);\n\t}\n\n\tgetProviderName() {\n\t\treturn 'AWSAppSyncRealTimeProvider';\n\t}\n\n\tnewClient(): Promise<any> {\n\t\tthrow new Error('Not used here');\n\t}\n\n\tpublic async publish(\n\t\t_topics: string[] | string,\n\t\t_msg: PubSubContent,\n\t\t_options?: AWSAppSyncRealTimeProviderOptions\n\t) {\n\t\tthrow new Error('Operation not supported');\n\t}\n\n\t// Check if url matches standard domain pattern\n\tprivate isCustomDomain(url: string): boolean {\n\t\treturn url.match(standardDomainPattern) === null;\n\t}\n\n\tsubscribe(\n\t\t_topics: string[] | string,\n\t\toptions?: AWSAppSyncRealTimeProviderOptions,\n\t\tcustomUserAgentDetails?: CustomUserAgentDetails\n\t): Observable<Record<string, unknown>> {\n\t\tconst appSyncGraphqlEndpoint = options?.appSyncGraphqlEndpoint;\n\n\t\treturn new Observable(observer => {\n\t\t\tif (!options || !appSyncGraphqlEndpoint) {\n\t\t\t\tobserver.error({\n\t\t\t\t\terrors: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...new GraphQLError(\n\t\t\t\t\t\t\t\t`Subscribe only available for AWS AppSync endpoint`\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tobserver.complete();\n\t\t\t} else {\n\t\t\t\tlet subscriptionStartActive = false;\n\t\t\t\tconst subscriptionId = uuid();\n\t\t\t\tconst startSubscription = () => {\n\t\t\t\t\tif (!subscriptionStartActive) {\n\t\t\t\t\t\tsubscriptionStartActive = true;\n\n\t\t\t\t\t\tconst startSubscriptionPromise =\n\t\t\t\t\t\t\tthis._startSubscriptionWithAWSAppSyncRealTime({\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t\tobserver,\n\t\t\t\t\t\t\t\tsubscriptionId,\n\t\t\t\t\t\t\t\tcustomUserAgentDetails,\n\t\t\t\t\t\t\t}).catch<any>(err => {\n\t\t\t\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t\t\t\t`${CONTROL_MSG.REALTIME_SUBSCRIPTION_INIT_ERROR}: ${err}`\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\tstartSubscriptionPromise.finally(() => {\n\t\t\t\t\t\t\tsubscriptionStartActive = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tlet reconnectSubscription: ZenObservable.Subscription;\n\n\t\t\t\t// Add an observable to the reconnection list to manage reconnection for this subscription\n\t\t\t\treconnectSubscription = new Observable(observer => {\n\t\t\t\t\tthis.reconnectionMonitor.addObserver(observer);\n\t\t\t\t}).subscribe(() => {\n\t\t\t\t\tstartSubscription();\n\t\t\t\t});\n\n\t\t\t\tstartSubscription();\n\n\t\t\t\treturn async () => {\n\t\t\t\t\t// Cleanup reconnection subscription\n\t\t\t\t\treconnectSubscription?.unsubscribe();\n\n\t\t\t\t\t// Cleanup after unsubscribing or observer.complete was called after _startSubscriptionWithAWSAppSyncRealTime\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// Waiting that subscription has been connected before trying to unsubscribe\n\t\t\t\t\t\tawait this._waitForSubscriptionToBeConnected(subscriptionId);\n\n\t\t\t\t\t\tconst { subscriptionState } =\n\t\t\t\t\t\t\tthis.subscriptionObserverMap.get(subscriptionId) || {};\n\n\t\t\t\t\t\tif (!subscriptionState) {\n\t\t\t\t\t\t\t// subscription already unsubscribed\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (subscriptionState === SUBSCRIPTION_STATUS.CONNECTED) {\n\t\t\t\t\t\t\tthis._sendUnsubscriptionMessage(subscriptionId);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow new Error('Subscription never connected');\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tlogger.debug(`Error while unsubscribing ${err}`);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis._removeSubscriptionObserver(subscriptionId);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected get isSSLEnabled() {\n\t\treturn !this.options[\n\t\t\t'aws_appsync_dangerously_connect_to_http_endpoint_for_testing'\n\t\t];\n\t}\n\n\tprivate async _startSubscriptionWithAWSAppSyncRealTime({\n\t\toptions,\n\t\tobserver,\n\t\tsubscriptionId,\n\t\tcustomUserAgentDetails,\n\t}: {\n\t\toptions: AWSAppSyncRealTimeProviderOptions;\n\t\tobserver: PubSubContentObserver;\n\t\tsubscriptionId: string;\n\t\tcustomUserAgentDetails: CustomUserAgentDetails;\n\t}) {\n\t\tconst {\n\t\t\tappSyncGraphqlEndpoint,\n\t\t\tauthenticationType,\n\t\t\tquery,\n\t\t\tvariables,\n\t\t\tapiKey,\n\t\t\tregion,\n\t\t\tgraphql_headers = () => ({}),\n\t\t\tadditionalHeaders = {},\n\t\t} = options;\n\n\t\tconst subscriptionState: SUBSCRIPTION_STATUS = SUBSCRIPTION_STATUS.PENDING;\n\t\tconst data = {\n\t\t\tquery,\n\t\t\tvariables,\n\t\t};\n\t\t// Having a subscription id map will make it simple to forward messages received\n\t\tthis.subscriptionObserverMap.set(subscriptionId, {\n\t\t\tobserver,\n\t\t\tquery: query ?? '',\n\t\t\tvariables: variables ?? {},\n\t\t\tsubscriptionState,\n\t\t\tstartAckTimeoutId: undefined,\n\t\t});\n\n\t\t// Preparing payload for subscription message\n\n\t\tconst dataString = JSON.stringify(data);\n\t\tconst headerObj = {\n\t\t\t...(await this._awsRealTimeHeaderBasedAuth({\n\t\t\t\tapiKey,\n\t\t\t\tappSyncGraphqlEndpoint,\n\t\t\t\tauthenticationType,\n\t\t\t\tpayload: dataString,\n\t\t\t\tcanonicalUri: '',\n\t\t\t\tregion,\n\t\t\t\tadditionalHeaders,\n\t\t\t})),\n\t\t\t...(await graphql_headers()),\n\t\t\t...additionalHeaders,\n\t\t\t[USER_AGENT_HEADER]: getAmplifyUserAgent(customUserAgentDetails),\n\t\t};\n\n\t\tconst subscriptionMessage = {\n\t\t\tid: subscriptionId,\n\t\t\tpayload: {\n\t\t\t\tdata: dataString,\n\t\t\t\textensions: {\n\t\t\t\t\tauthorization: {\n\t\t\t\t\t\t...headerObj,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\ttype: MESSAGE_TYPES.GQL_START,\n\t\t};\n\n\t\tconst stringToAWSRealTime = JSON.stringify(subscriptionMessage);\n\n\t\ttry {\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);\n\t\t\tawait this._initializeWebSocketConnection({\n\t\t\t\tapiKey,\n\t\t\t\tappSyncGraphqlEndpoint,\n\t\t\t\tauthenticationType,\n\t\t\t\tregion,\n\t\t\t\tadditionalHeaders,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tthis._logStartSubscriptionError(subscriptionId, observer, err);\n\t\t\treturn;\n\t\t}\n\n\t\t// Potential race condition can occur when unsubscribe is called during _initializeWebSocketConnection.\n\t\t// E.g.unsubscribe gets invoked prior to finishing WebSocket handshake or START_ACK.\n\t\t// Both subscriptionFailedCallback and subscriptionReadyCallback are used to synchronized this.\n\n\t\tconst { subscriptionFailedCallback, subscriptionReadyCallback } =\n\t\t\tthis.subscriptionObserverMap.get(subscriptionId) ?? {};\n\n\t\t// This must be done before sending the message in order to be listening immediately\n\t\tthis.subscriptionObserverMap.set(subscriptionId, {\n\t\t\tobserver,\n\t\t\tsubscriptionState,\n\t\t\tquery: query ?? '',\n\t\t\tvariables: variables ?? {},\n\t\t\tsubscriptionReadyCallback,\n\t\t\tsubscriptionFailedCallback,\n\t\t\tstartAckTimeoutId: setTimeout(() => {\n\t\t\t\tthis._timeoutStartSubscriptionAck.call(this, subscriptionId);\n\t\t\t}, START_ACK_TIMEOUT),\n\t\t});\n\t\tif (this.awsRealTimeSocket) {\n\t\t\tthis.awsRealTimeSocket.send(stringToAWSRealTime);\n\t\t}\n\t}\n\n\t// Log logic for start subscription failures\n\tprivate _logStartSubscriptionError(\n\t\tsubscriptionId: string,\n\t\tobserver: PubSubContentObserver,\n\t\terr: { message?: string }\n\t) {\n\t\tlogger.debug({ err });\n\t\tconst message = String(err.message ?? '');\n\t\t// Resolving to give the state observer time to propogate the update\n\t\tPromise.resolve(\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED)\n\t\t);\n\n\t\t// Capture the error only when the network didn't cause disruption\n\t\tif (\n\t\t\tthis.connectionState !== ConnectionState.ConnectionDisruptedPendingNetwork\n\t\t) {\n\t\t\t// When the error is non-retriable, error out the observable\n\t\t\tif (isNonRetryableError(err)) {\n\t\t\t\tobserver.error({\n\t\t\t\t\terrors: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...new GraphQLError(\n\t\t\t\t\t\t\t\t`${CONTROL_MSG.CONNECTION_FAILED}: ${message}`\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tlogger.debug(`${CONTROL_MSG.CONNECTION_FAILED}: ${message}`);\n\t\t\t}\n\n\t\t\tconst { subscriptionFailedCallback } =\n\t\t\t\tthis.subscriptionObserverMap.get(subscriptionId) || {};\n\n\t\t\t// Notify concurrent unsubscription\n\t\t\tif (typeof subscriptionFailedCallback === 'function') {\n\t\t\t\tsubscriptionFailedCallback();\n\t\t\t}\n\t\t}\n\t}\n\n\t// Waiting that subscription has been connected before trying to unsubscribe\n\tprivate async _waitForSubscriptionToBeConnected(subscriptionId: string) {\n\t\tconst subscriptionObserver =\n\t\t\tthis.subscriptionObserverMap.get(subscriptionId);\n\t\tif (subscriptionObserver) {\n\t\t\tconst { subscriptionState } = subscriptionObserver;\n\t\t\t// This in case unsubscribe is invoked before sending start subscription message\n\t\t\tif (subscriptionState === SUBSCRIPTION_STATUS.PENDING) {\n\t\t\t\treturn new Promise((res, rej) => {\n\t\t\t\t\tconst { observer, subscriptionState, variables, query } =\n\t\t\t\t\t\tsubscriptionObserver;\n\t\t\t\t\tthis.subscriptionObserverMap.set(subscriptionId, {\n\t\t\t\t\t\tobserver,\n\t\t\t\t\t\tsubscriptionState,\n\t\t\t\t\t\tvariables,\n\t\t\t\t\t\tquery,\n\t\t\t\t\t\tsubscriptionReadyCallback: res,\n\t\t\t\t\t\tsubscriptionFailedCallback: rej,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _sendUnsubscriptionMessage(subscriptionId: string) {\n\t\ttry {\n\t\t\tif (\n\t\t\t\tthis.awsRealTimeSocket &&\n\t\t\t\tthis.awsRealTimeSocket.readyState === WebSocket.OPEN &&\n\t\t\t\tthis.socketStatus === SOCKET_STATUS.READY\n\t\t\t) {\n\t\t\t\t// Preparing unsubscribe message to stop receiving messages for that subscription\n\t\t\t\tconst unsubscribeMessage = {\n\t\t\t\t\tid: subscriptionId,\n\t\t\t\t\ttype: MESSAGE_TYPES.GQL_STOP,\n\t\t\t\t};\n\t\t\t\tconst stringToAWSRealTime = JSON.stringify(unsubscribeMessage);\n\t\t\t\tthis.awsRealTimeSocket.send(stringToAWSRealTime);\n\t\t\t}\n\t\t} catch (err) {\n\t\t\t// If GQL_STOP is not sent because of disconnection issue, then there is nothing the client can do\n\t\t\tlogger.debug({ err });\n\t\t}\n\t}\n\n\tprivate _removeSubscriptionObserver(subscriptionId: string) {\n\t\tthis.subscriptionObserverMap.delete(subscriptionId);\n\n\t\t// Verifying 1000ms after removing subscription in case there are new subscription unmount/mount\n\t\tsetTimeout(this._closeSocketIfRequired.bind(this), 1000);\n\t}\n\n\tprivate _closeSocketIfRequired() {\n\t\tif (this.subscriptionObserverMap.size > 0) {\n\t\t\t// Active subscriptions on the WebSocket\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.awsRealTimeSocket) {\n\t\t\tthis.socketStatus = SOCKET_STATUS.CLOSED;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSING_CONNECTION);\n\n\t\tif (this.awsRealTimeSocket.bufferedAmount > 0) {\n\t\t\t// Still data on the WebSocket\n\t\t\tsetTimeout(this._closeSocketIfRequired.bind(this), 1000);\n\t\t} else {\n\t\t\tlogger.debug('closing WebSocket...');\n\t\t\tif (this.keepAliveTimeoutId) {\n\t\t\t\tclearTimeout(this.keepAliveTimeoutId);\n\t\t\t}\n\t\t\tif (this.keepAliveAlertTimeoutId) {\n\t\t\t\tclearTimeout(this.keepAliveAlertTimeoutId);\n\t\t\t}\n\t\t\tconst tempSocket = this.awsRealTimeSocket;\n\t\t\t// Cleaning callbacks to avoid race condition, socket still exists\n\t\t\ttempSocket.onclose = null;\n\t\t\ttempSocket.onerror = null;\n\t\t\ttempSocket.close(1000);\n\t\t\tthis.awsRealTimeSocket = undefined;\n\t\t\tthis.socketStatus = SOCKET_STATUS.CLOSED;\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n\t\t}\n\t}\n\n\tprivate _handleIncomingSubscriptionMessage(message: MessageEvent) {\n\t\tif (typeof message.data !== 'string') {\n\t\t\treturn;\n\t\t}\n\t\tlogger.debug(\n\t\t\t`subscription message from AWS AppSync RealTime: ${message.data}`\n\t\t);\n\t\tconst {\n\t\t\tid = '',\n\t\t\tpayload,\n\t\t\ttype,\n\t\t}: DataPayload = JSON.parse(String(message.data));\n\t\tconst {\n\t\t\tobserver = null,\n\t\t\tquery = '',\n\t\t\tvariables = {},\n\t\t\tstartAckTimeoutId,\n\t\t\tsubscriptionReadyCallback,\n\t\t\tsubscriptionFailedCallback,\n\t\t} = this.subscriptionObserverMap.get(id) || {};\n\n\t\tlogger.debug({ id, observer, query, variables });\n\n\t\tif (type === MESSAGE_TYPES.GQL_DATA && payload && payload.data) {\n\t\t\tif (observer) {\n\t\t\t\tobserver.next(payload);\n\t\t\t} else {\n\t\t\t\tlogger.debug(`observer not found for id: ${id}`);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (type === MESSAGE_TYPES.GQL_START_ACK) {\n\t\t\tlogger.debug(\n\t\t\t\t`subscription ready for ${JSON.stringify({ query, variables })}`\n\t\t\t);\n\t\t\tif (typeof subscriptionReadyCallback === 'function') {\n\t\t\t\tsubscriptionReadyCallback();\n\t\t\t}\n\t\t\tif (startAckTimeoutId) clearTimeout(startAckTimeoutId);\n\t\t\tdispatchApiEvent(\n\t\t\t\tCONTROL_MSG.SUBSCRIPTION_ACK,\n\t\t\t\t{ query, variables },\n\t\t\t\t'Connection established for subscription'\n\t\t\t);\n\t\t\tconst subscriptionState = SUBSCRIPTION_STATUS.CONNECTED;\n\t\t\tif (observer) {\n\t\t\t\tthis.subscriptionObserverMap.set(id, {\n\t\t\t\t\tobserver,\n\t\t\t\t\tquery,\n\t\t\t\t\tvariables,\n\t\t\t\t\tstartAckTimeoutId: undefined,\n\t\t\t\t\tsubscriptionState,\n\t\t\t\t\tsubscriptionReadyCallback,\n\t\t\t\t\tsubscriptionFailedCallback,\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.connectionStateMonitor.record(\n\t\t\t\tCONNECTION_CHANGE.CONNECTION_ESTABLISHED\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (type === MESSAGE_TYPES.GQL_CONNECTION_KEEP_ALIVE) {\n\t\t\tif (this.keepAliveTimeoutId) clearTimeout(this.keepAliveTimeoutId);\n\t\t\tif (this.keepAliveAlertTimeoutId)\n\t\t\t\tclearTimeout(this.keepAliveAlertTimeoutId);\n\t\t\tthis.keepAliveTimeoutId = setTimeout(\n\t\t\t\t() => this._errorDisconnect(CONTROL_MSG.TIMEOUT_DISCONNECT),\n\t\t\t\tthis.keepAliveTimeout\n\t\t\t);\n\t\t\tthis.keepAliveAlertTimeoutId = setTimeout(() => {\n\t\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE_MISSED);\n\t\t\t}, DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT);\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE);\n\t\t\treturn;\n\t\t}\n\n\t\tif (type === MESSAGE_TYPES.GQL_ERROR) {\n\t\t\tconst subscriptionState = SUBSCRIPTION_STATUS.FAILED;\n\t\t\tif (observer) {\n\t\t\t\tthis.subscriptionObserverMap.set(id, {\n\t\t\t\t\tobserver,\n\t\t\t\t\tquery,\n\t\t\t\t\tvariables,\n\t\t\t\t\tstartAckTimeoutId,\n\t\t\t\t\tsubscriptionReadyCallback,\n\t\t\t\t\tsubscriptionFailedCallback,\n\t\t\t\t\tsubscriptionState,\n\t\t\t\t});\n\n\t\t\t\tlogger.debug(\n\t\t\t\t\t`${CONTROL_MSG.CONNECTION_FAILED}: ${JSON.stringify(payload)}`\n\t\t\t\t);\n\n\t\t\t\tobserver.error({\n\t\t\t\t\terrors: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...new GraphQLError(\n\t\t\t\t\t\t\t\t`${CONTROL_MSG.CONNECTION_FAILED}: ${JSON.stringify(payload)}`\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\tif (startAckTimeoutId) clearTimeout(startAckTimeoutId);\n\n\t\t\t\tif (typeof subscriptionFailedCallback === 'function') {\n\t\t\t\t\tsubscriptionFailedCallback();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _errorDisconnect(msg: string) {\n\t\tlogger.debug(`Disconnect error: ${msg}`);\n\n\t\tif (this.awsRealTimeSocket) {\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n\t\t\tthis.awsRealTimeSocket.close();\n\t\t}\n\n\t\tthis.socketStatus = SOCKET_STATUS.CLOSED;\n\t}\n\n\tprivate _timeoutStartSubscriptionAck(subscriptionId: string) {\n\t\tconst subscriptionObserver =\n\t\t\tthis.subscriptionObserverMap.get(subscriptionId);\n\t\tif (subscriptionObserver) {\n\t\t\tconst { observer, query, variables } = subscriptionObserver;\n\t\t\tif (!observer) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.subscriptionObserverMap.set(subscriptionId, {\n\t\t\t\tobserver,\n\t\t\t\tquery,\n\t\t\t\tvariables,\n\t\t\t\tsubscriptionState: SUBSCRIPTION_STATUS.FAILED,\n\t\t\t});\n\n\t\t\tthis.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n\t\t\tlogger.debug(\n\t\t\t\t'timeoutStartSubscription',\n\t\t\t\tJSON.stringify({ query, variables })\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _initializeWebSocketConnection({\n\t\tappSyncGraphqlEndpoint,\n\t\tauthenticationType,\n\t\tapiKey,\n\t\tregion,\n\t\tadditionalHeaders,\n\t}: AWSAppSyncRealTimeProviderOptions) {\n\t\tif (this.socketStatus === SOCKET_STATUS.READY) {\n\t\t\treturn;\n\t\t}\n\t\treturn new Promise(async (res, rej) => {\n\t\t\tthis.promiseArray.push({ res, rej });\n\n\t\t\tif (this.socketStatus === SOCKET_STATUS.CLOSED) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.socketStatus = SOCKET_STATUS.CONNECTING;\n\n\t\t\t\t\tconst payloadString = '{}';\n\n\t\t\t\t\tconst authHeader = await this._awsRealTimeHeaderBasedAuth({\n\t\t\t\t\t\tauthenticationType,\n\t\t\t\t\t\tpayload: payloadString,\n\t\t\t\t\t\tcanonicalUri: '/connect',\n\t\t\t\t\t\tapiKey,\n\t\t\t\t\t\tappSyncGraphqlEndpoint,\n\t\t\t\t\t\tregion,\n\t\t\t\t\t\tadditionalHeaders,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst headerString = authHeader ? JSON.stringify(authHeader) : '';\n\t\t\t\t\tconst headerQs = base64urlEncode(headerString);\n\n\t\t\t\t\tlet discoverableEndpoint = appSyncGraphqlEndpoint ?? '';\n\n\t\t\t\t\tif (this.isCustomDomain(discoverableEndpoint)) {\n\t\t\t\t\t\tdiscoverableEndpoint =\n\t\t\t\t\t\t\tdiscoverableEndpoint.concat(customDomainPath);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdiscoverableEndpoint = discoverableEndpoint\n\t\t\t\t\t\t\t.replace('appsync-api', 'appsync-realtime-api')\n\t\t\t\t\t\t\t.replace('gogi-beta', 'grt-beta');\n\t\t\t\t\t}\n\n\t\t\t\t\t// Creating websocket url with required query strings\n\t\t\t\t\tconst protocol = this.isSSLEnabled ? 'wss://' : 'ws://';\n\t\t\t\t\tdiscoverableEndpoint = discoverableEndpoint\n\t\t\t\t\t\t.replace('https://', protocol)\n\t\t\t\t\t\t.replace('http://', protocol);\n\n\t\t\t\t\tconst awsRealTimeUrl = discoverableEndpoint;\n\t\t\t\t\tconst authTokenSubprotocol = `header-${headerQs}`;\n\n\t\t\t\t\tawait this._initializeRetryableHandshake(\n\t\t\t\t\t\tawsRealTimeUrl,\n\t\t\t\t\t\tauthTokenSubprotocol\n\t\t\t\t\t);\n\n\t\t\t\t\tthis.promiseArray.forEach(({ res }) => {\n\t\t\t\t\t\tlogger.debug('Notifying connection successful');\n\t\t\t\t\t\tres();\n\t\t\t\t\t});\n\t\t\t\t\tthis.socketStatus = SOCKET_STATUS.READY;\n\t\t\t\t\tthis.promiseArray = [];\n\t\t\t\t} catch (err) {\n\t\t\t\t\tlogger.debug('Connection exited with', err);\n\t\t\t\t\tthis.promiseArray.forEach(({ rej }) => rej(err));\n\t\t\t\t\tthis.promiseArray = [];\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.awsRealTimeSocket &&\n\t\t\t\t\t\tthis.awsRealTimeSocket.readyState === WebSocket.OPEN\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.awsRealTimeSocket.close(3001);\n\t\t\t\t\t}\n\t\t\t\t\tthis.awsRealTimeSocket = undefined;\n\t\t\t\t\tthis.socketStatus = SOCKET_STATUS.CLOSED;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async _initializeRetryableHandshake(\n\t\tawsRealTimeUrl: string,\n\t\tsubprotocol: string\n\t) {\n\t\tlogger.debug(`Initializaling retryable Handshake`);\n\t\tawait jitteredExponentialRetry(\n\t\t\tthis._initializeHandshake.bind(this),\n\t\t\t[awsRealTimeUrl, subprotocol],\n\t\t\tMAX_DELAY_MS\n\t\t);\n\t}\n\n\tprivate async _initializeHandshake(\n\t\tawsRealTimeUrl: string,\n\t\tsubprotocol: string\n\t) {\n\t\tlogger.debug(`Initializing handshake ${awsRealTimeUrl}`);\n\t\t// Because connecting the socket is async, is waiting until connection is open\n\t\t// Step 1: connect websocket\n\t\ttry {\n\t\t\tawait (() => {\n\t\t\t\treturn new Promise<void>((res, rej) => {\n\t\t\t\t\tconst newSocket = this.getNewWebSocket(awsRealTimeUrl, [\n\t\t\t\t\t\t'graphql-ws',\n\t\t\t\t\t\tsubprotocol,\n\t\t\t\t\t]);\n\t\t\t\t\tnewSocket.onerror = () => {\n\t\t\t\t\t\tlogger.debug(`WebSocket connection error`);\n\t\t\t\t\t};\n\t\t\t\t\tnewSocket.onclose = () => {\n\t\t\t\t\t\trej(new Error('Connection handshake error'));\n\t\t\t\t\t};\n\t\t\t\t\tnewSocket.onopen = () => {\n\t\t\t\t\t\tthis.awsRealTimeSocket = newSocket;\n\t\t\t\t\t\treturn res();\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t})();\n\t\t\t// Step 2: wait for ack from AWS AppSyncReaTime after sending init\n\t\t\tawait (() => {\n\t\t\t\treturn new Promise((res, rej) => {\n\t\t\t\t\tif (this.awsRealTimeSocket) {\n\t\t\t\t\t\tlet ackOk = false;\n\t\t\t\t\t\tthis.awsRealTimeSocket.onerror = error => {\n\t\t\t\t\t\t\tlogger.debug(`WebSocket error ${JSON.stringify(error)}`);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.awsRealTimeSocket.onclose = event => {\n\t\t\t\t\t\t\tlogger.debug(`WebSocket closed ${event.reason}`);\n\t\t\t\t\t\t\trej(new Error(JSON.stringify(event)));\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tthis.awsRealTimeSocket.onmessage = (message: MessageEvent) => {\n\t\t\t\t\t\t\tif (typeof message.data !== 'string') {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlogger.debug(\n\t\t\t\t\t\t\t\t`subscription message from AWS AppSyncRealTime: ${message.data} `\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst data = JSON.parse(message.data) as ParsedMessagePayload;\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\tconnectionTimeoutMs = DEFAULT_KEEP_ALIVE_TIMEOUT,\n\t\t\t\t\t\t\t\t} = {},\n\t\t\t\t\t\t\t} = data;\n\t\t\t\t\t\t\tif (type === MESSAGE_TYPES.GQL_CONNECTION_ACK) {\n\t\t\t\t\t\t\t\tackOk = true;\n\t\t\t\t\t\t\t\tif (this.awsRealTimeSocket) {\n\t\t\t\t\t\t\t\t\tthis.keepAliveTimeout = connectionTimeoutMs;\n\t\t\t\t\t\t\t\t\tthis.awsRealTimeSocket.onmessage =\n\t\t\t\t\t\t\t\t\t\tthis._handleIncomingSubscriptionMessage.bind(this);\n\t\t\t\t\t\t\t\t\tthis.awsRealTimeSocket.onerror = err => {\n\t\t\t\t\t\t\t\t\t\tlogger.debug(err);\n\t\t\t\t\t\t\t\t\t\tthis._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\tthis.awsRealTimeSocket.onclose = event => {\n\t\t\t\t\t\t\t\t\t\tlogger.debug(`WebSocket closed ${event.reason}`);\n\t\t\t\t\t\t\t\t\t\tthis._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tres('Cool, connected to AWS AppSyncRealTime');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (type === MESSAGE_TYPES.GQL_CONNECTION_ERROR) {\n\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\tpayload: {\n\t\t\t\t\t\t\t\t\t\terrors: [{ errorType = '', errorCode = 0 } = {}] = [],\n\t\t\t\t\t\t\t\t\t} = {},\n\t\t\t\t\t\t\t\t} = data;\n\n\t\t\t\t\t\t\t\trej({ errorType, errorCode });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tconst gqlInit = {\n\t\t\t\t\t\t\ttype: MESSAGE_TYPES.GQL_CONNECTION_INIT,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.awsRealTimeSocket.send(JSON.stringify(gqlInit));\n\n\t\t\t\t\t\tconst checkAckOk = (ackOk: boolean) => {\n\t\t\t\t\t\t\tif (!ackOk) {\n\t\t\t\t\t\t\t\tthis.connectionStateMonitor.record(\n\t\t\t\t\t\t\t\t\tCONNECTION_CHANGE.CONNECTION_FAILED\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\trej(\n\t\t\t\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t\t\t\t`Connection timeout: ack from AWSAppSyncRealTime was not received after ${CONNECTION_INIT_TIMEOUT} ms`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tsetTimeout(() => checkAckOk(ackOk), CONNECTION_INIT_TIMEOUT);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t})();\n\t\t} catch (err) {\n\t\t\tconst { errorType, errorCode } = err as {\n\t\t\t\terrorType: string;\n\t\t\t\terrorCode: number;\n\t\t\t};\n\n\t\t\tif (NON_RETRYABLE_CODES.includes(errorCode)) {\n\t\t\t\tthrow new NonRetryableError(errorType);\n\t\t\t} else if (errorType) {\n\t\t\t\tthrow new Error(errorType);\n\t\t\t} else {\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async _awsRealTimeHeaderBasedAuth({\n\t\tauthenticationType,\n\t\tpayload,\n\t\tcanonicalUri,\n\t\tappSyncGraphqlEndpoint,\n\t\tapiKey,\n\t\tregion,\n\t\tadditionalHeaders,\n\t}: AWSAppSyncRealTimeAuthInput): Promise<\n\t\tRecord<string, unknown> | undefined\n\t> {\n\t\tconst headerHandler: {\n\t\t\t[key in GraphqlAuthModes]: (AWSAppSyncRealTimeAuthInput) => {};\n\t\t} = {\n\t\t\tAPI_KEY: this._awsRealTimeApiKeyHeader.bind(this),\n\t\t\tAWS_IAM: this._awsRealTimeIAMHeader.bind(this),\n\t\t\tOPENID_CONNECT: this._awsRealTimeOPENIDHeader.bind(this),\n\t\t\tAMAZON_COGNITO_USER_POOLS: this._awsRealTimeCUPHeader.bind(this),\n\t\t\tAWS_LAMBDA: this._customAuthHeader,\n\t\t};\n\n\t\tif (!authenticationType || !headerHandler[authenticationType]) {\n\t\t\tlogger.debug(`Authentication type ${authenticationType} not supported`);\n\t\t\treturn undefined;\n\t\t} else {\n\t\t\tconst handler = headerHandler[authenticationType];\n\n\t\t\tconst { host } = url.parse(appSyncGraphqlEndpoint ?? '');\n\n\t\t\tlogger.debug(`Authenticating with ${authenticationType}`);\n\n\t\t\tconst result = await handler({\n\t\t\t\tpayload,\n\t\t\t\tcanonicalUri,\n\t\t\t\tappSyncGraphqlEndpoint,\n\t\t\t\tapiKey,\n\t\t\t\tregion,\n\t\t\t\thost,\n\t\t\t\tadditionalHeaders,\n\t\t\t});\n\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tprivate async _awsRealTimeCUPHeader({ host }: AWSAppSyncRealTimeAuthInput) {\n\t\tconst session = await Auth.currentSession();\n\t\treturn {\n\t\t\tAuthorization: session.getAccessToken().getJwtToken(),\n\t\t\thost,\n\t\t};\n\t}\n\n\tprivate async _awsRealTimeOPENIDHeader({\n\t\thost,\n\t}: AWSAppSyncRealTimeAuthInput) {\n\t\tlet token;\n\t\t// backwards compatibility\n\t\tconst federatedInfo = await Cache.getItem('federatedInfo');\n\t\tif (federatedInfo) {\n\t\t\ttoken = federatedInfo.token;\n\t\t} else {\n\t\t\tconst currentUser = await Auth.currentAuthenticatedUser();\n\t\t\tif (currentUser) {\n\t\t\t\ttoken = currentUser.token;\n\t\t\t}\n\t\t}\n\t\tif (!token) {\n\t\t\tthrow new Error('No federated jwt');\n\t\t}\n\t\treturn {\n\t\t\tAuthorization: token,\n\t\t\thost,\n\t\t};\n\t}\n\n\tprivate async _awsRealTimeApiKeyHeader({\n\t\tapiKey,\n\t\thost,\n\t}: AWSAppSyncRealTimeAuthInput) {\n\t\tconst dt = new Date();\n\t\tconst dtStr = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n\n\t\treturn {\n\t\t\thost,\n\t\t\t'x-amz-date': dtStr,\n\t\t\t'x-api-key': apiKey,\n\t\t};\n\t}\n\n\tprivate async _awsRealTimeIAMHeader({\n\t\tpayload,\n\t\tcanonicalUri,\n\t\tappSyncGraphqlEndpoint,\n\t\tregion,\n\t}: AWSAppSyncRealTimeAuthInput) {\n\t\tconst endpointInfo = {\n\t\t\tregion,\n\t\t\tservice: 'appsync',\n\t\t};\n\n\t\tconst credentialsOK = await this._ensureCredentials();\n\t\tif (!credentialsOK) {\n\t\t\tthrow new Error('No credentials');\n\t\t}\n\t\tconst creds = await Credentials.get().then((credentials: any) => {\n\t\t\tconst { secretAccessKey, accessKeyId, sessionToken } =\n\t\t\t\tcredentials as ICredentials;\n\n\t\t\treturn {\n\t\t\t\tsecret_key: secretAccessKey,\n\t\t\t\taccess_key: accessKeyId,\n\t\t\t\tsession_token: sessionToken,\n\t\t\t};\n\t\t});\n\n\t\tconst request = {\n\t\t\turl: `${appSyncGraphqlEndpoint}${canonicalUri}`,\n\t\t\tdata: payload,\n\t\t\tmethod: 'POST',\n\t\t\theaders: { ...AWS_APPSYNC_REALTIME_HEADERS },\n\t\t};\n\n\t\tconst signed_params = Signer.sign(request, creds, endpointInfo);\n\t\treturn signed_params.headers;\n\t}\n\n\tprivate _customAuthHeader({\n\t\thost,\n\t\tadditionalHeaders,\n\t}: AWSAppSyncRealTimeAuthInput) {\n\t\tif (!additionalHeaders || !additionalHeaders['Authorization']) {\n\t\t\tthrow new Error('No auth token specified');\n\t\t}\n\n\t\treturn {\n\t\t\tAuthorization: additionalHeaders.Authorization,\n\t\t\thost,\n\t\t};\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_ensureCredentials() {\n\t\treturn Credentials.get()\n\t\t\t.then((credentials: any) => {\n\t\t\t\tif (!credentials) return false;\n\t\t\t\tconst cred = Credentials.shear(credentials);\n\t\t\t\tlogger.debug('set credentials for AWSAppSyncRealTimeProvider', cred);\n\n\t\t\t\treturn true;\n\t\t\t})\n\t\t\t.catch((err: any) => {\n\t\t\t\tlogger.warn('ensure credentials error', err);\n\t\t\t\treturn false;\n\t\t\t});\n\t}\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport {\n\tAmplify,\n\tbrowserOrNode,\n\tCategory,\n\tConsoleLogger as Logger,\n\tCustomUserAgentDetails,\n\tINTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER,\n\tPubSubAction,\n} from '@aws-amplify/core';\nimport { PubSubProvider, PubSubOptions, ProviderOptions } from '../types';\nimport { AWSAppSyncRealTimeProvider } from '../Providers';\nimport { PubSubContent } from '../types/PubSub';\nimport Observable from 'zen-observable-ts';\n\nconst { isNode } = browserOrNode();\nconst logger = new Logger('PubSub');\n\ntype PubSubObservable = {\n\tprovider: PubSubProvider;\n\tvalue: string | Record<string, unknown>;\n};\n\nexport class InternalPubSubClass {\n\tprivate _options: PubSubOptions;\n\n\tprivate _pluggables: PubSubProvider[];\n\n\t/**\n\t * Internal instance of AWSAppSyncRealTimeProvider used by the API category to subscribe to AppSync\n\t */\n\tprivate _awsAppSyncRealTimeProvider?: AWSAppSyncRealTimeProvider;\n\n\t/**\n\t * Lazy instantiate AWSAppSyncRealTimeProvider when it is required by the API category\n\t */\n\tprivate get awsAppSyncRealTimeProvider() {\n\t\tif (!this._awsAppSyncRealTimeProvider) {\n\t\t\tthis._awsAppSyncRealTimeProvider = new AWSAppSyncRealTimeProvider(\n\t\t\t\tthis._options\n\t\t\t);\n\t\t}\n\t\treturn this._awsAppSyncRealTimeProvider;\n\t}\n\n\t/**\n\t * Initialize PubSub with AWS configurations\n\t *\n\t * @param {PubSubOptions} options - Configuration object for PubSub\n\t */\n\tconstructor(options?: PubSubOptions) {\n\t\tthis._options = options ?? {};\n\t\tlogger.debug('PubSub Options', this._options);\n\t\tthis._pluggables = [];\n\t\tthis.subscribe = this.subscribe.bind(this);\n\t}\n\n\tpublic getModuleName() {\n\t\treturn 'InternalPubSub';\n\t}\n\n\t/**\n\t * Configure PubSub part with configurations\n\t *\n\t * @param {PubSubOptions} config - Configuration for PubSub\n\t * @return {Object} - The current configuration\n\t */\n\tconfigure(options: PubSubOptions) {\n\t\tconst opt: Record<string, unknown> = options\n\t\t\t? options.PubSub || options\n\t\t\t: {};\n\t\tlogger.debug('configure PubSub', { opt });\n\n\t\tthis._options = Object.assign({}, this._options, opt);\n\n\t\tthis._pluggables.map(pluggable => pluggable.configure(this._options));\n\n\t\treturn this._options;\n\t}\n\n\t/**\n\t * add plugin into Analytics category\n\t * @param {Object} pluggable - an instance of the plugin\n\t */\n\tpublic async addPluggable(pluggable: PubSubProvider) {\n\t\tif (pluggable && pluggable.getCategory() === 'PubSub') {\n\t\t\tthis._pluggables.push(pluggable);\n\n\t\t\tconst config = pluggable.configure(this._options);\n\n\t\t\treturn config;\n\t\t}\n\t}\n\n\t/**\n\t * remove plugin from PubSub category\n\t * @param providerName - the name of the plugin\n\t */\n\tremovePluggable(providerName: string): void {\n\t\tthis._pluggables = this._pluggables.filter(\n\t\t\tpluggable => pluggable.getProviderName() !== providerName\n\t\t);\n\t}\n\n\tprivate getProviderByName(providerName: string | symbol) {\n\t\tif (providerName === INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER) {\n\t\t\treturn this.awsAppSyncRealTimeProvider;\n\t\t}\n\n\t\treturn this._pluggables.find(\n\t\t\tpluggable => pluggable.getProviderName() === providerName\n\t\t);\n\t}\n\n\tprivate getProviders(options: ProviderOptions = {}) {\n\t\tconst providerName = options.provider;\n\t\tif (!providerName) {\n\t\t\treturn this._pluggables;\n\t\t}\n\n\t\tconst provider = this.getProviderByName(providerName);\n\t\tif (!provider) {\n\t\t\tthrow new Error(`Could not find provider named ${String(providerName)}`);\n\t\t}\n\n\t\treturn [provider];\n\t}\n\n\tasync publish(\n\t\ttopics: string[] | string,\n\t\tmsg: PubSubContent,\n\t\toptions?: ProviderOptions\n\t) {\n\t\treturn Promise.all(\n\t\t\tthis.getProviders(options).map(provider =>\n\t\t\t\tprovider.publish(topics, msg, options)\n\t\t\t)\n\t\t);\n\t}\n\n\tsubscribe(\n\t\ttopics: string[] | string,\n\t\toptions?: ProviderOptions,\n\t\tcustomUserAgentDetails?: CustomUserAgentDetails\n\t): Observable<PubSubObservable> {\n\t\tif (isNode && this._options && this._options.ssr) {\n\t\t\tthrow new Error(\n\t\t\t\t'Subscriptions are not supported for Server-Side Rendering (SSR)'\n\t\t\t);\n\t\t}\n\n\t\tlogger.debug('subscribe options', options);\n\n\t\tconst providers = this.getProviders(options);\n\n\t\tconst pubSubUserAgentDetails: CustomUserAgentDetails = {\n\t\t\tcategory: Category.PubSub,\n\t\t\taction: PubSubAction.Subscribe,\n\t\t\t...customUserAgentDetails,\n\t\t};\n\n\t\treturn new Observable<PubSubObservable>(observer => {\n\t\t\tconst observables = providers.map(provider => ({\n\t\t\t\tprovider,\n\t\t\t\tobservable: provider.subscribe(topics, options, pubSubUserAgentDetails),\n\t\t\t}));\n\n\t\t\tconst subscriptions = observables.map(({ provider, observable }) =>\n\t\t\t\tobservable.subscribe({\n\t\t\t\t\tstart: console.error,\n\t\t\t\t\tnext: (value: PubSubContent) => observer.next({ provider, value }),\n\t\t\t\t\terror: (error: unknown) => observer.error({ provider, error }),\n\t\t\t\t\t// complete: observer.complete, // TODO: when all completed, complete the outer one\n\t\t\t\t})\n\t\t\t);\n\n\t\t\treturn () =>\n\t\t\t\tsubscriptions.forEach(subscription => subscription.unsubscribe());\n\t\t});\n\t}\n}\n\nexport const InternalPubSub = new InternalPubSubClass();\nAmplify.register(InternalPubSub);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n  return function wrap() {\n    return fn.apply(thisArg, arguments);\n  };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n    const str = toString.call(thing);\n    return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n  type = type.toLowerCase();\n  return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n    && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  let result;\n  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n  if (kindOf(val) !== 'object') {\n    return false;\n  }\n\n  const prototype = getPrototypeOf(val);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n  let kind;\n  return thing && (\n    (typeof FormData === 'function' && thing instanceof FormData) || (\n      isFunction(thing.append) && (\n        (kind = kindOf(thing)) === 'formdata' ||\n        // detect form-data instance\n        (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n      )\n    )\n  )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n  str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  let i;\n  let l;\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Iterate over object keys\n    const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n    const len = keys.length;\n    let key;\n\n    for (i = 0; i < len; i++) {\n      key = keys[i];\n      fn.call(null, obj[key], key, obj);\n    }\n  }\n}\n\nfunction findKey(obj, key) {\n  key = key.toLowerCase();\n  const keys = Object.keys(obj);\n  let i = keys.length;\n  let _key;\n  while (i-- > 0) {\n    _key = keys[i];\n    if (key === _key.toLowerCase()) {\n      return _key;\n    }\n  }\n  return null;\n}\n\nconst _global = (() => {\n  /*eslint no-undef:0*/\n  if (typeof globalThis !== \"undefined\") return globalThis;\n  return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n  const {caseless} = isContextDefined(this) && this || {};\n  const result = {};\n  const assignValue = (val, key) => {\n    const targetKey = caseless && findKey(result, key) || key;\n    if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n      result[targetKey] = merge(result[targetKey], val);\n    } else if (isPlainObject(val)) {\n      result[targetKey] = merge({}, val);\n    } else if (isArray(val)) {\n      result[targetKey] = val.slice();\n    } else {\n      result[targetKey] = val;\n    }\n  }\n\n  for (let i = 0, l = arguments.length; i < l; i++) {\n    arguments[i] && forEach(arguments[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n  forEach(b, (val, key) => {\n    if (thisArg && isFunction(val)) {\n      a[key] = bind(val, thisArg);\n    } else {\n      a[key] = val;\n    }\n  }, {allOwnKeys});\n  return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n  if (content.charCodeAt(0) === 0xFEFF) {\n    content = content.slice(1);\n  }\n  return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  constructor.prototype.constructor = constructor;\n  Object.defineProperty(constructor, 'super', {\n    value: superConstructor.prototype\n  });\n  props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n  let props;\n  let i;\n  let prop;\n  const merged = {};\n\n  destObj = destObj || {};\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  if (sourceObj == null) return destObj;\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = filter !== false && getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  const lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n  if (!thing) return null;\n  if (isArray(thing)) return thing;\n  let i = thing.length;\n  if (!isNumber(i)) return null;\n  const arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n  // eslint-disable-next-line func-names\n  return thing => {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n  const generator = obj && obj[Symbol.iterator];\n\n  const iterator = generator.call(obj);\n\n  let result;\n\n  while ((result = iterator.next()) && !result.done) {\n    const pair = result.value;\n    fn.call(obj, pair[0], pair[1]);\n  }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n  let matches;\n  const arr = [];\n\n  while ((matches = regExp.exec(str)) !== null) {\n    arr.push(matches);\n  }\n\n  return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n  return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n    function replacer(m, p1, p2) {\n      return p1.toUpperCase() + p2;\n    }\n  );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n  const descriptors = Object.getOwnPropertyDescriptors(obj);\n  const reducedDescriptors = {};\n\n  forEach(descriptors, (descriptor, name) => {\n    let ret;\n    if ((ret = reducer(descriptor, name, obj)) !== false) {\n      reducedDescriptors[name] = ret || descriptor;\n    }\n  });\n\n  Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n  reduceDescriptors(obj, (descriptor, name) => {\n    // skip restricted props in strict mode\n    if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n      return false;\n    }\n\n    const value = obj[name];\n\n    if (!isFunction(value)) return;\n\n    descriptor.enumerable = false;\n\n    if ('writable' in descriptor) {\n      descriptor.writable = false;\n      return;\n    }\n\n    if (!descriptor.set) {\n      descriptor.set = () => {\n        throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n      };\n    }\n  });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n  const obj = {};\n\n  const define = (arr) => {\n    arr.forEach(value => {\n      obj[value] = true;\n    });\n  }\n\n  isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n  return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n  return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n  DIGIT,\n  ALPHA,\n  ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n  let str = '';\n  const {length} = alphabet;\n  while (size--) {\n    str += alphabet[Math.random() * length|0]\n  }\n\n  return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n  return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n  const stack = new Array(10);\n\n  const visit = (source, i) => {\n\n    if (isObject(source)) {\n      if (stack.indexOf(source) >= 0) {\n        return;\n      }\n\n      if(!('toJSON' in source)) {\n        stack[i] = source;\n        const target = isArray(source) ? [] : {};\n\n        forEach(source, (value, key) => {\n          const reducedValue = visit(value, i + 1);\n          !isUndefined(reducedValue) && (target[key] = reducedValue);\n        });\n\n        stack[i] = undefined;\n\n        return target;\n      }\n    }\n\n    return source;\n  }\n\n  return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n  thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n  if (setImmediateSupported) {\n    return setImmediate;\n  }\n\n  return postMessageSupported ? ((token, callbacks) => {\n    _global.addEventListener(\"message\", ({source, data}) => {\n      if (source === _global && data === token) {\n        callbacks.length && callbacks.shift()();\n      }\n    }, false);\n\n    return (cb) => {\n      callbacks.push(cb);\n      _global.postMessage(token, \"*\");\n    }\n  })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n  typeof setImmediate === 'function',\n  isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n  queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n  isArray,\n  isArrayBuffer,\n  isBuffer,\n  isFormData,\n  isArrayBufferView,\n  isString,\n  isNumber,\n  isBoolean,\n  isObject,\n  isPlainObject,\n  isReadableStream,\n  isRequest,\n  isResponse,\n  isHeaders,\n  isUndefined,\n  isDate,\n  isFile,\n  isBlob,\n  isRegExp,\n  isFunction,\n  isStream,\n  isURLSearchParams,\n  isTypedArray,\n  isFileList,\n  forEach,\n  merge,\n  extend,\n  trim,\n  stripBOM,\n  inherits,\n  toFlatObject,\n  kindOf,\n  kindOfTest,\n  endsWith,\n  toArray,\n  forEachEntry,\n  matchAll,\n  isHTMLForm,\n  hasOwnProperty,\n  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n  reduceDescriptors,\n  freezeMethods,\n  toObjectSet,\n  toCamelCase,\n  noop,\n  toFiniteNumber,\n  findKey,\n  global: _global,\n  isContextDefined,\n  ALPHABET,\n  generateString,\n  isSpecCompliantForm,\n  toJSONObject,\n  isAsyncFn,\n  isThenable,\n  setImmediate: _setImmediate,\n  asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n  Error.call(this);\n\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, this.constructor);\n  } else {\n    this.stack = (new Error()).stack;\n  }\n\n  this.message = message;\n  this.name = 'AxiosError';\n  code && (this.code = code);\n  config && (this.config = config);\n  request && (this.request = request);\n  if (response) {\n    this.response = response;\n    this.status = response.status ? response.status : null;\n  }\n}\n\nutils.inherits(AxiosError, Error, {\n  toJSON: function toJSON() {\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: utils.toJSONObject(this.config),\n      code: this.code,\n      status: this.status\n    };\n  }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n  'ERR_BAD_OPTION_VALUE',\n  'ERR_BAD_OPTION',\n  'ECONNABORTED',\n  'ETIMEDOUT',\n  'ERR_NETWORK',\n  'ERR_FR_TOO_MANY_REDIRECTS',\n  'ERR_DEPRECATED',\n  'ERR_BAD_RESPONSE',\n  'ERR_BAD_REQUEST',\n  'ERR_CANCELED',\n  'ERR_NOT_SUPPORT',\n  'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n  descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n  const axiosError = Object.create(prototype);\n\n  utils.toFlatObject(error, axiosError, function filter(obj) {\n    return obj !== Error.prototype;\n  }, prop => {\n    return prop !== 'isAxiosError';\n  });\n\n  AxiosError.call(axiosError, error.message, code, config, request, response);\n\n  axiosError.cause = error;\n\n  axiosError.name = error.name;\n\n  customProps && Object.assign(axiosError, customProps);\n\n  return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n  return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n  return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n  if (!path) return key;\n  return path.concat(key).map(function each(token, i) {\n    // eslint-disable-next-line no-param-reassign\n    token = removeBrackets(token);\n    return !dots && i ? '[' + token + ']' : token;\n  }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n  return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n  return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('target must be an object');\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new (PlatformFormData || FormData)();\n\n  // eslint-disable-next-line no-param-reassign\n  options = utils.toFlatObject(options, {\n    metaTokens: true,\n    dots: false,\n    indexes: false\n  }, false, function defined(option, source) {\n    // eslint-disable-next-line no-eq-null,eqeqeq\n    return !utils.isUndefined(source[option]);\n  });\n\n  const metaTokens = options.metaTokens;\n  // eslint-disable-next-line no-use-before-define\n  const visitor = options.visitor || defaultVisitor;\n  const dots = options.dots;\n  const indexes = options.indexes;\n  const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n  const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n  if (!utils.isFunction(visitor)) {\n    throw new TypeError('visitor must be a function');\n  }\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (!useBlob && utils.isBlob(value)) {\n      throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n    }\n\n    return value;\n  }\n\n  /**\n   * Default visitor.\n   *\n   * @param {*} value\n   * @param {String|Number} key\n   * @param {Array<String|Number>} path\n   * @this {FormData}\n   *\n   * @returns {boolean} return true to visit the each prop of the value recursively\n   */\n  function defaultVisitor(value, key, path) {\n    let arr = value;\n\n    if (value && !path && typeof value === 'object') {\n      if (utils.endsWith(key, '{}')) {\n        // eslint-disable-next-line no-param-reassign\n        key = metaTokens ? key : key.slice(0, -2);\n        // eslint-disable-next-line no-param-reassign\n        value = JSON.stringify(value);\n      } else if (\n        (utils.isArray(value) && isFlatArray(value)) ||\n        ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n        )) {\n        // eslint-disable-next-line no-param-reassign\n        key = removeBrackets(key);\n\n        arr.forEach(function each(el, index) {\n          !(utils.isUndefined(el) || el === null) && formData.append(\n            // eslint-disable-next-line no-nested-ternary\n            indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n            convertValue(el)\n          );\n        });\n        return false;\n      }\n    }\n\n    if (isVisitable(value)) {\n      return true;\n    }\n\n    formData.append(renderKey(path, key, dots), convertValue(value));\n\n    return false;\n  }\n\n  const stack = [];\n\n  const exposedHelpers = Object.assign(predicates, {\n    defaultVisitor,\n    convertValue,\n    isVisitable\n  });\n\n  function build(value, path) {\n    if (utils.isUndefined(value)) return;\n\n    if (stack.indexOf(value) !== -1) {\n      throw Error('Circular reference detected in ' + path.join('.'));\n    }\n\n    stack.push(value);\n\n    utils.forEach(value, function each(el, key) {\n      const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n        formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n      );\n\n      if (result === true) {\n        build(el, path ? path.concat(key) : [key]);\n      }\n    });\n\n    stack.pop();\n  }\n\n  if (!utils.isObject(obj)) {\n    throw new TypeError('data must be an object');\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n  const charMap = {\n    '!': '%21',\n    \"'\": '%27',\n    '(': '%28',\n    ')': '%29',\n    '~': '%7E',\n    '%20': '+',\n    '%00': '\\x00'\n  };\n  return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n    return charMap[match];\n  });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n  this._pairs = [];\n\n  params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n  this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n  const _encode = encoder ? function(value) {\n    return encoder.call(this, value, encode);\n  } : encode;\n\n  return this._pairs.map(function each(pair) {\n    return _encode(pair[0]) + '=' + _encode(pair[1]);\n  }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n  return encodeURIComponent(val).\n    replace(/%3A/gi, ':').\n    replace(/%24/g, '$').\n    replace(/%2C/gi, ',').\n    replace(/%20/g, '+').\n    replace(/%5B/gi, '[').\n    replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n  /*eslint no-param-reassign:0*/\n  if (!params) {\n    return url;\n  }\n  \n  const _encode = options && options.encode || encode;\n\n  const serializeFn = options && options.serialize;\n\n  let serializedParams;\n\n  if (serializeFn) {\n    serializedParams = serializeFn(params, options);\n  } else {\n    serializedParams = utils.isURLSearchParams(params) ?\n      params.toString() :\n      new AxiosURLSearchParams(params, options).toString(_encode);\n  }\n\n  if (serializedParams) {\n    const hashmarkIndex = url.indexOf(\"#\");\n\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n  constructor() {\n    this.handlers = [];\n  }\n\n  /**\n   * Add a new interceptor to the stack\n   *\n   * @param {Function} fulfilled The function to handle `then` for a `Promise`\n   * @param {Function} rejected The function to handle `reject` for a `Promise`\n   *\n   * @return {Number} An ID used to remove interceptor later\n   */\n  use(fulfilled, rejected, options) {\n    this.handlers.push({\n      fulfilled,\n      rejected,\n      synchronous: options ? options.synchronous : false,\n      runWhen: options ? options.runWhen : null\n    });\n    return this.handlers.length - 1;\n  }\n\n  /**\n   * Remove an interceptor from the stack\n   *\n   * @param {Number} id The ID that was returned by `use`\n   *\n   * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n   */\n  eject(id) {\n    if (this.handlers[id]) {\n      this.handlers[id] = null;\n    }\n  }\n\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    if (this.handlers) {\n      this.handlers = [];\n    }\n  }\n\n  /**\n   * Iterate over all the registered interceptors\n   *\n   * This method is particularly useful for skipping over any\n   * interceptors that may have become `null` calling `eject`.\n   *\n   * @param {Function} fn The function to call for each interceptor\n   *\n   * @returns {void}\n   */\n  forEach(fn) {\n    utils.forEach(this.handlers, function forEachHandler(h) {\n      if (h !== null) {\n        fn(h);\n      }\n    });\n  }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n  isBrowser: true,\n  classes: {\n    URLSearchParams,\n    FormData,\n    Blob\n  },\n  protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n  (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n  return (\n    typeof WorkerGlobalScope !== 'undefined' &&\n    // eslint-disable-next-line no-undef\n    self instanceof WorkerGlobalScope &&\n    typeof self.importScripts === 'function'\n  );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n  hasBrowserEnv,\n  hasStandardBrowserWebWorkerEnv,\n  hasStandardBrowserEnv,\n  _navigator as navigator,\n  origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n  ...utils,\n  ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n  // foo[x][y][z]\n  // foo.x.y.z\n  // foo-x-y-z\n  // foo x y z\n  return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n    return match[0] === '[]' ? '' : match[1] || match[0];\n  });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n  const obj = {};\n  const keys = Object.keys(arr);\n  let i;\n  const len = keys.length;\n  let key;\n  for (i = 0; i < len; i++) {\n    key = keys[i];\n    obj[key] = arr[key];\n  }\n  return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n  function buildPath(path, value, target, index) {\n    let name = path[index++];\n\n    if (name === '__proto__') return true;\n\n    const isNumericKey = Number.isFinite(+name);\n    const isLast = index >= path.length;\n    name = !name && utils.isArray(target) ? target.length : name;\n\n    if (isLast) {\n      if (utils.hasOwnProp(target, name)) {\n        target[name] = [target[name], value];\n      } else {\n        target[name] = value;\n      }\n\n      return !isNumericKey;\n    }\n\n    if (!target[name] || !utils.isObject(target[name])) {\n      target[name] = [];\n    }\n\n    const result = buildPath(path, value, target[name], index);\n\n    if (result && utils.isArray(target[name])) {\n      target[name] = arrayToObject(target[name]);\n    }\n\n    return !isNumericKey;\n  }\n\n  if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n    const obj = {};\n\n    utils.forEachEntry(formData, (name, value) => {\n      buildPath(parsePropPath(name), value, obj, 0);\n    });\n\n    return obj;\n  }\n\n  return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n  transitional: transitionalDefaults,\n\n  adapter: ['xhr', 'http', 'fetch'],\n\n  transformRequest: [function transformRequest(data, headers) {\n    const contentType = headers.getContentType() || '';\n    const hasJSONContentType = contentType.indexOf('application/json') > -1;\n    const isObjectPayload = utils.isObject(data);\n\n    if (isObjectPayload && utils.isHTMLForm(data)) {\n      data = new FormData(data);\n    }\n\n    const isFormData = utils.isFormData(data);\n\n    if (isFormData) {\n      return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n    }\n\n    if (utils.isArrayBuffer(data) ||\n      utils.isBuffer(data) ||\n      utils.isStream(data) ||\n      utils.isFile(data) ||\n      utils.isBlob(data) ||\n      utils.isReadableStream(data)\n    ) {\n      return data;\n    }\n    if (utils.isArrayBufferView(data)) {\n      return data.buffer;\n    }\n    if (utils.isURLSearchParams(data)) {\n      headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n      return data.toString();\n    }\n\n    let isFileList;\n\n    if (isObjectPayload) {\n      if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n        return toURLEncodedForm(data, this.formSerializer).toString();\n      }\n\n      if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n        const _FormData = this.env && this.env.FormData;\n\n        return toFormData(\n          isFileList ? {'files[]': data} : data,\n          _FormData && new _FormData(),\n          this.formSerializer\n        );\n      }\n    }\n\n    if (isObjectPayload || hasJSONContentType ) {\n      headers.setContentType('application/json', false);\n      return stringifySafely(data);\n    }\n\n    return data;\n  }],\n\n  transformResponse: [function transformResponse(data) {\n    const transitional = this.transitional || defaults.transitional;\n    const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n    const JSONRequested = this.responseType === 'json';\n\n    if (utils.isResponse(data) || utils.isReadableStream(data)) {\n      return data;\n    }\n\n    if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n      const silentJSONParsing = transitional && transitional.silentJSONParsing;\n      const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n      try {\n        return JSON.parse(data);\n      } catch (e) {\n        if (strictJSONParsing) {\n          if (e.name === 'SyntaxError') {\n            throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n          }\n          throw e;\n        }\n      }\n    }\n\n    return data;\n  }],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: platform.classes.FormData,\n    Blob: platform.classes.Blob\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      'Accept': 'application/json, text/plain, */*',\n      'Content-Type': undefined\n    }\n  }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n  defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n  return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n    visitor: function(value, key, path, helpers) {\n      if (platform.isNode && utils.isBuffer(value)) {\n        this.append(key, value.toString('base64'));\n        return false;\n      }\n\n      return helpers.defaultVisitor.apply(this, arguments);\n    }\n  }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n  'age', 'authorization', 'content-length', 'content-type', 'etag',\n  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n  'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n  'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n  const parsed = {};\n  let key;\n  let val;\n  let i;\n\n  rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n    i = line.indexOf(':');\n    key = line.substring(0, i).trim().toLowerCase();\n    val = line.substring(i + 1).trim();\n\n    if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n      return;\n    }\n\n    if (key === 'set-cookie') {\n      if (parsed[key]) {\n        parsed[key].push(val);\n      } else {\n        parsed[key] = [val];\n      }\n    } else {\n      parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n    }\n  });\n\n  return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n  return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n  if (value === false || value == null) {\n    return value;\n  }\n\n  return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n  const tokens = Object.create(null);\n  const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let match;\n\n  while ((match = tokensRE.exec(str))) {\n    tokens[match[1]] = match[2];\n  }\n\n  return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n  if (utils.isFunction(filter)) {\n    return filter.call(this, value, header);\n  }\n\n  if (isHeaderNameFilter) {\n    value = header;\n  }\n\n  if (!utils.isString(value)) return;\n\n  if (utils.isString(filter)) {\n    return value.indexOf(filter) !== -1;\n  }\n\n  if (utils.isRegExp(filter)) {\n    return filter.test(value);\n  }\n}\n\nfunction formatHeader(header) {\n  return header.trim()\n    .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n      return char.toUpperCase() + str;\n    });\n}\n\nfunction buildAccessors(obj, header) {\n  const accessorName = utils.toCamelCase(' ' + header);\n\n  ['get', 'set', 'has'].forEach(methodName => {\n    Object.defineProperty(obj, methodName + accessorName, {\n      value: function(arg1, arg2, arg3) {\n        return this[methodName].call(this, header, arg1, arg2, arg3);\n      },\n      configurable: true\n    });\n  });\n}\n\nclass AxiosHeaders {\n  constructor(headers) {\n    headers && this.set(headers);\n  }\n\n  set(header, valueOrRewrite, rewrite) {\n    const self = this;\n\n    function setHeader(_value, _header, _rewrite) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!lHeader) {\n        throw new Error('header name must be a non-empty string');\n      }\n\n      const key = utils.findKey(self, lHeader);\n\n      if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n        self[key || _header] = normalizeValue(_value);\n      }\n    }\n\n    const setHeaders = (headers, _rewrite) =>\n      utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n    if (utils.isPlainObject(header) || header instanceof this.constructor) {\n      setHeaders(header, valueOrRewrite)\n    } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n      setHeaders(parseHeaders(header), valueOrRewrite);\n    } else if (utils.isHeaders(header)) {\n      for (const [key, value] of header.entries()) {\n        setHeader(value, key, rewrite);\n      }\n    } else {\n      header != null && setHeader(valueOrRewrite, header, rewrite);\n    }\n\n    return this;\n  }\n\n  get(header, parser) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      if (key) {\n        const value = this[key];\n\n        if (!parser) {\n          return value;\n        }\n\n        if (parser === true) {\n          return parseTokens(value);\n        }\n\n        if (utils.isFunction(parser)) {\n          return parser.call(this, value, key);\n        }\n\n        if (utils.isRegExp(parser)) {\n          return parser.exec(value);\n        }\n\n        throw new TypeError('parser must be boolean|regexp|function');\n      }\n    }\n  }\n\n  has(header, matcher) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n    }\n\n    return false;\n  }\n\n  delete(header, matcher) {\n    const self = this;\n    let deleted = false;\n\n    function deleteHeader(_header) {\n      _header = normalizeHeader(_header);\n\n      if (_header) {\n        const key = utils.findKey(self, _header);\n\n        if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n          delete self[key];\n\n          deleted = true;\n        }\n      }\n    }\n\n    if (utils.isArray(header)) {\n      header.forEach(deleteHeader);\n    } else {\n      deleteHeader(header);\n    }\n\n    return deleted;\n  }\n\n  clear(matcher) {\n    const keys = Object.keys(this);\n    let i = keys.length;\n    let deleted = false;\n\n    while (i--) {\n      const key = keys[i];\n      if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n        delete this[key];\n        deleted = true;\n      }\n    }\n\n    return deleted;\n  }\n\n  normalize(format) {\n    const self = this;\n    const headers = {};\n\n    utils.forEach(this, (value, header) => {\n      const key = utils.findKey(headers, header);\n\n      if (key) {\n        self[key] = normalizeValue(value);\n        delete self[header];\n        return;\n      }\n\n      const normalized = format ? formatHeader(header) : String(header).trim();\n\n      if (normalized !== header) {\n        delete self[header];\n      }\n\n      self[normalized] = normalizeValue(value);\n\n      headers[normalized] = true;\n    });\n\n    return this;\n  }\n\n  concat(...targets) {\n    return this.constructor.concat(this, ...targets);\n  }\n\n  toJSON(asStrings) {\n    const obj = Object.create(null);\n\n    utils.forEach(this, (value, header) => {\n      value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n    });\n\n    return obj;\n  }\n\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n\n  toString() {\n    return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'AxiosHeaders';\n  }\n\n  static from(thing) {\n    return thing instanceof this ? thing : new this(thing);\n  }\n\n  static concat(first, ...targets) {\n    const computed = new this(first);\n\n    targets.forEach((target) => computed.set(target));\n\n    return computed;\n  }\n\n  static accessor(header) {\n    const internals = this[$internals] = (this[$internals] = {\n      accessors: {}\n    });\n\n    const accessors = internals.accessors;\n    const prototype = this.prototype;\n\n    function defineAccessor(_header) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!accessors[lHeader]) {\n        buildAccessors(prototype, _header);\n        accessors[lHeader] = true;\n      }\n    }\n\n    utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n    return this;\n  }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n  let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n  return {\n    get: () => value,\n    set(headerValue) {\n      this[mapped] = headerValue;\n    }\n  }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n  const config = this || defaults;\n  const context = response || config;\n  const headers = AxiosHeaders.from(context.headers);\n  let data = context.data;\n\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n  });\n\n  headers.normalize();\n\n  return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n  this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n  __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n  const validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n      response.config,\n      response.request,\n      response\n    ));\n  }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n  samplesCount = samplesCount || 10;\n  const bytes = new Array(samplesCount);\n  const timestamps = new Array(samplesCount);\n  let head = 0;\n  let tail = 0;\n  let firstSampleTS;\n\n  min = min !== undefined ? min : 1000;\n\n  return function push(chunkLength) {\n    const now = Date.now();\n\n    const startedAt = timestamps[tail];\n\n    if (!firstSampleTS) {\n      firstSampleTS = now;\n    }\n\n    bytes[head] = chunkLength;\n    timestamps[head] = now;\n\n    let i = tail;\n    let bytesCount = 0;\n\n    while (i !== head) {\n      bytesCount += bytes[i++];\n      i = i % samplesCount;\n    }\n\n    head = (head + 1) % samplesCount;\n\n    if (head === tail) {\n      tail = (tail + 1) % samplesCount;\n    }\n\n    if (now - firstSampleTS < min) {\n      return;\n    }\n\n    const passed = startedAt && now - startedAt;\n\n    return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n  };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n  let timestamp = 0;\n  let threshold = 1000 / freq;\n  let lastArgs;\n  let timer;\n\n  const invoke = (args, now = Date.now()) => {\n    timestamp = now;\n    lastArgs = null;\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    fn.apply(null, args);\n  }\n\n  const throttled = (...args) => {\n    const now = Date.now();\n    const passed = now - timestamp;\n    if ( passed >= threshold) {\n      invoke(args, now);\n    } else {\n      lastArgs = args;\n      if (!timer) {\n        timer = setTimeout(() => {\n          timer = null;\n          invoke(lastArgs)\n        }, threshold - passed);\n      }\n    }\n  }\n\n  const flush = () => lastArgs && invoke(lastArgs);\n\n  return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n  let bytesNotified = 0;\n  const _speedometer = speedometer(50, 250);\n\n  return throttle(e => {\n    const loaded = e.loaded;\n    const total = e.lengthComputable ? e.total : undefined;\n    const progressBytes = loaded - bytesNotified;\n    const rate = _speedometer(progressBytes);\n    const inRange = loaded <= total;\n\n    bytesNotified = loaded;\n\n    const data = {\n      loaded,\n      total,\n      progress: total ? (loaded / total) : undefined,\n      bytes: progressBytes,\n      rate: rate ? rate : undefined,\n      estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n      event: e,\n      lengthComputable: total != null,\n      [isDownloadStream ? 'download' : 'upload']: true\n    };\n\n    listener(data);\n  }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n  const lengthComputable = total != null;\n\n  return [(loaded) => throttled[0]({\n    lengthComputable,\n    total,\n    loaded\n  }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n  (function standardBrowserEnv() {\n    const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);\n    const urlParsingNode = document.createElement('a');\n    let originURL;\n\n    /**\n    * Parse a URL to discover its components\n    *\n    * @param {String} url The URL to be parsed\n    * @returns {Object}\n    */\n    function resolveURL(url) {\n      let href = url;\n\n      if (msie) {\n        // IE needs attribute set twice to normalize properties\n        urlParsingNode.setAttribute('href', href);\n        href = urlParsingNode.href;\n      }\n\n      urlParsingNode.setAttribute('href', href);\n\n      // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n      return {\n        href: urlParsingNode.href,\n        protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n        host: urlParsingNode.host,\n        search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n        hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n        hostname: urlParsingNode.hostname,\n        port: urlParsingNode.port,\n        pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n          urlParsingNode.pathname :\n          '/' + urlParsingNode.pathname\n      };\n    }\n\n    originURL = resolveURL(window.location.href);\n\n    /**\n    * Determine if a URL shares the same origin as the current location\n    *\n    * @param {String} requestURL The URL to test\n    * @returns {boolean} True if URL shares the same origin, otherwise false\n    */\n    return function isURLSameOrigin(requestURL) {\n      const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n      return (parsed.protocol === originURL.protocol &&\n          parsed.host === originURL.host);\n    };\n  })() :\n\n  // Non standard browser envs (web workers, react-native) lack needed support.\n  (function nonStandardBrowserEnv() {\n    return function isURLSameOrigin() {\n      return true;\n    };\n  })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n  // Standard browser envs support document.cookie\n  {\n    write(name, value, expires, path, domain, secure) {\n      const cookie = [name + '=' + encodeURIComponent(value)];\n\n      utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n      utils.isString(path) && cookie.push('path=' + path);\n\n      utils.isString(domain) && cookie.push('domain=' + domain);\n\n      secure === true && cookie.push('secure');\n\n      document.cookie = cookie.join('; ');\n    },\n\n    read(name) {\n      const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n      return (match ? decodeURIComponent(match[3]) : null);\n    },\n\n    remove(name) {\n      this.write(name, '', Date.now() - 86400000);\n    }\n  }\n\n  :\n\n  // Non-standard browser env (web workers, react-native) lack needed support.\n  {\n    write() {},\n    read() {\n      return null;\n    },\n    remove() {}\n  };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n  if (baseURL && !isAbsoluteURL(requestedURL)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n  const config = {};\n\n  function getMergedValue(target, source, caseless) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge.call({caseless}, target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDeepProperties(a, b, caseless) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(a, b, caseless);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a, caseless);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(a, b, prop) {\n    if (prop in config2) {\n      return getMergedValue(a, b);\n    } else if (prop in config1) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  const mergeMap = {\n    url: valueFromConfig2,\n    method: valueFromConfig2,\n    data: valueFromConfig2,\n    baseURL: defaultToConfig2,\n    transformRequest: defaultToConfig2,\n    transformResponse: defaultToConfig2,\n    paramsSerializer: defaultToConfig2,\n    timeout: defaultToConfig2,\n    timeoutMessage: defaultToConfig2,\n    withCredentials: defaultToConfig2,\n    withXSRFToken: defaultToConfig2,\n    adapter: defaultToConfig2,\n    responseType: defaultToConfig2,\n    xsrfCookieName: defaultToConfig2,\n    xsrfHeaderName: defaultToConfig2,\n    onUploadProgress: defaultToConfig2,\n    onDownloadProgress: defaultToConfig2,\n    decompress: defaultToConfig2,\n    maxContentLength: defaultToConfig2,\n    maxBodyLength: defaultToConfig2,\n    beforeRedirect: defaultToConfig2,\n    transport: defaultToConfig2,\n    httpAgent: defaultToConfig2,\n    httpsAgent: defaultToConfig2,\n    cancelToken: defaultToConfig2,\n    socketPath: defaultToConfig2,\n    responseEncoding: defaultToConfig2,\n    validateStatus: mergeDirectKeys,\n    headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n  };\n\n  utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n    const merge = mergeMap[prop] || mergeDeepProperties;\n    const configValue = merge(config1[prop], config2[prop], prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  });\n\n  return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n  const newConfig = mergeConfig({}, config);\n\n  let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n  newConfig.headers = headers = AxiosHeaders.from(headers);\n\n  newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n  // HTTP basic authentication\n  if (auth) {\n    headers.set('Authorization', 'Basic ' +\n      btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n    );\n  }\n\n  let contentType;\n\n  if (utils.isFormData(data)) {\n    if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n      headers.setContentType(undefined); // Let the browser set it\n    } else if ((contentType = headers.getContentType()) !== false) {\n      // fix semicolon duplication issue for ReactNative FormData implementation\n      const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n      headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n    }\n  }\n\n  // Add xsrf header\n  // This is only done if running in a standard browser environment.\n  // Specifically not if we're in a web worker, or react-native.\n\n  if (platform.hasStandardBrowserEnv) {\n    withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n    if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n      // Add xsrf header\n      const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n      if (xsrfValue) {\n        headers.set(xsrfHeaderName, xsrfValue);\n      }\n    }\n  }\n\n  return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n  return new Promise(function dispatchXhrRequest(resolve, reject) {\n    const _config = resolveConfig(config);\n    let requestData = _config.data;\n    const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n    let {responseType, onUploadProgress, onDownloadProgress} = _config;\n    let onCanceled;\n    let uploadThrottled, downloadThrottled;\n    let flushUpload, flushDownload;\n\n    function done() {\n      flushUpload && flushUpload(); // flush events\n      flushDownload && flushDownload(); // flush events\n\n      _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n      _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n    }\n\n    let request = new XMLHttpRequest();\n\n    request.open(_config.method.toUpperCase(), _config.url, true);\n\n    // Set the request timeout in MS\n    request.timeout = _config.timeout;\n\n    function onloadend() {\n      if (!request) {\n        return;\n      }\n      // Prepare the response\n      const responseHeaders = AxiosHeaders.from(\n        'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n      );\n      const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n        request.responseText : request.response;\n      const response = {\n        data: responseData,\n        status: request.status,\n        statusText: request.statusText,\n        headers: responseHeaders,\n        config,\n        request\n      };\n\n      settle(function _resolve(value) {\n        resolve(value);\n        done();\n      }, function _reject(err) {\n        reject(err);\n        done();\n      }, response);\n\n      // Clean up request\n      request = null;\n    }\n\n    if ('onloadend' in request) {\n      // Use onloadend if available\n      request.onloadend = onloadend;\n    } else {\n      // Listen for ready state to emulate onloadend\n      request.onreadystatechange = function handleLoad() {\n        if (!request || request.readyState !== 4) {\n          return;\n        }\n\n        // The request errored out and we didn't get a response, this will be\n        // handled by onerror instead\n        // With one exception: request that using file: protocol, most browsers\n        // will return status as 0 even though it's a successful request\n        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n          return;\n        }\n        // readystate handler is calling before onerror or ontimeout handlers,\n        // so we should call onloadend on the next 'tick'\n        setTimeout(onloadend);\n      };\n    }\n\n    // Handle browser request cancellation (as opposed to a manual cancellation)\n    request.onabort = function handleAbort() {\n      if (!request) {\n        return;\n      }\n\n      reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle low level network errors\n    request.onerror = function handleError() {\n      // Real errors are hidden from us by the browser\n      // onerror should only fire if it's a network error\n      reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Handle timeout\n    request.ontimeout = function handleTimeout() {\n      let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n      const transitional = _config.transitional || transitionalDefaults;\n      if (_config.timeoutErrorMessage) {\n        timeoutErrorMessage = _config.timeoutErrorMessage;\n      }\n      reject(new AxiosError(\n        timeoutErrorMessage,\n        transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n        config,\n        request));\n\n      // Clean up request\n      request = null;\n    };\n\n    // Remove Content-Type if data is undefined\n    requestData === undefined && requestHeaders.setContentType(null);\n\n    // Add headers to the request\n    if ('setRequestHeader' in request) {\n      utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n        request.setRequestHeader(key, val);\n      });\n    }\n\n    // Add withCredentials to request if needed\n    if (!utils.isUndefined(_config.withCredentials)) {\n      request.withCredentials = !!_config.withCredentials;\n    }\n\n    // Add responseType to request if needed\n    if (responseType && responseType !== 'json') {\n      request.responseType = _config.responseType;\n    }\n\n    // Handle progress if needed\n    if (onDownloadProgress) {\n      ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n      request.addEventListener('progress', downloadThrottled);\n    }\n\n    // Not all browsers support upload events\n    if (onUploadProgress && request.upload) {\n      ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n      request.upload.addEventListener('progress', uploadThrottled);\n\n      request.upload.addEventListener('loadend', flushUpload);\n    }\n\n    if (_config.cancelToken || _config.signal) {\n      // Handle cancellation\n      // eslint-disable-next-line func-names\n      onCanceled = cancel => {\n        if (!request) {\n          return;\n        }\n        reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n        request.abort();\n        request = null;\n      };\n\n      _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n      if (_config.signal) {\n        _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n      }\n    }\n\n    const protocol = parseProtocol(_config.url);\n\n    if (protocol && platform.protocols.indexOf(protocol) === -1) {\n      reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n      return;\n    }\n\n\n    // Send the request\n    request.send(requestData || null);\n  });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n  const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n  return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n  const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n  if (timeout || length) {\n    let controller = new AbortController();\n\n    let aborted;\n\n    const onabort = function (reason) {\n      if (!aborted) {\n        aborted = true;\n        unsubscribe();\n        const err = reason instanceof Error ? reason : this.reason;\n        controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n      }\n    }\n\n    let timer = timeout && setTimeout(() => {\n      timer = null;\n      onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n    }, timeout)\n\n    const unsubscribe = () => {\n      if (signals) {\n        timer && clearTimeout(timer);\n        timer = null;\n        signals.forEach(signal => {\n          signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n        });\n        signals = null;\n      }\n    }\n\n    signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n    const {signal} = controller;\n\n    signal.unsubscribe = () => utils.asap(unsubscribe);\n\n    return signal;\n  }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n  let len = chunk.byteLength;\n\n  if (!chunkSize || len < chunkSize) {\n    yield chunk;\n    return;\n  }\n\n  let pos = 0;\n  let end;\n\n  while (pos < len) {\n    end = pos + chunkSize;\n    yield chunk.slice(pos, end);\n    pos = end;\n  }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n  for await (const chunk of readStream(iterable)) {\n    yield* streamChunk(chunk, chunkSize);\n  }\n}\n\nconst readStream = async function* (stream) {\n  if (stream[Symbol.asyncIterator]) {\n    yield* stream;\n    return;\n  }\n\n  const reader = stream.getReader();\n  try {\n    for (;;) {\n      const {done, value} = await reader.read();\n      if (done) {\n        break;\n      }\n      yield value;\n    }\n  } finally {\n    await reader.cancel();\n  }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n  const iterator = readBytes(stream, chunkSize);\n\n  let bytes = 0;\n  let done;\n  let _onFinish = (e) => {\n    if (!done) {\n      done = true;\n      onFinish && onFinish(e);\n    }\n  }\n\n  return new ReadableStream({\n    async pull(controller) {\n      try {\n        const {done, value} = await iterator.next();\n\n        if (done) {\n         _onFinish();\n          controller.close();\n          return;\n        }\n\n        let len = value.byteLength;\n        if (onProgress) {\n          let loadedBytes = bytes += len;\n          onProgress(loadedBytes);\n        }\n        controller.enqueue(new Uint8Array(value));\n      } catch (err) {\n        _onFinish(err);\n        throw err;\n      }\n    },\n    cancel(reason) {\n      _onFinish(reason);\n      return iterator.return();\n    }\n  }, {\n    highWaterMark: 2\n  })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n    ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n    async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n  try {\n    return !!fn(...args);\n  } catch (e) {\n    return false\n  }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n  let duplexAccessed = false;\n\n  const hasContentType = new Request(platform.origin, {\n    body: new ReadableStream(),\n    method: 'POST',\n    get duplex() {\n      duplexAccessed = true;\n      return 'half';\n    },\n  }).headers.has('Content-Type');\n\n  return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n  test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n  stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n  ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n    !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n      (_, config) => {\n        throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n      })\n  });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n  if (body == null) {\n    return 0;\n  }\n\n  if(utils.isBlob(body)) {\n    return body.size;\n  }\n\n  if(utils.isSpecCompliantForm(body)) {\n    const _request = new Request(platform.origin, {\n      method: 'POST',\n      body,\n    });\n    return (await _request.arrayBuffer()).byteLength;\n  }\n\n  if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n    return body.byteLength;\n  }\n\n  if(utils.isURLSearchParams(body)) {\n    body = body + '';\n  }\n\n  if(utils.isString(body)) {\n    return (await encodeText(body)).byteLength;\n  }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n  const length = utils.toFiniteNumber(headers.getContentLength());\n\n  return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n  let {\n    url,\n    method,\n    data,\n    signal,\n    cancelToken,\n    timeout,\n    onDownloadProgress,\n    onUploadProgress,\n    responseType,\n    headers,\n    withCredentials = 'same-origin',\n    fetchOptions\n  } = resolveConfig(config);\n\n  responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n  let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n  let request;\n\n  const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n      composedSignal.unsubscribe();\n  });\n\n  let requestContentLength;\n\n  try {\n    if (\n      onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n      (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n    ) {\n      let _request = new Request(url, {\n        method: 'POST',\n        body: data,\n        duplex: \"half\"\n      });\n\n      let contentTypeHeader;\n\n      if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n        headers.setContentType(contentTypeHeader)\n      }\n\n      if (_request.body) {\n        const [onProgress, flush] = progressEventDecorator(\n          requestContentLength,\n          progressEventReducer(asyncDecorator(onUploadProgress))\n        );\n\n        data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n      }\n    }\n\n    if (!utils.isString(withCredentials)) {\n      withCredentials = withCredentials ? 'include' : 'omit';\n    }\n\n    // Cloudflare Workers throws when credentials are defined\n    // see https://github.com/cloudflare/workerd/issues/902\n    const isCredentialsSupported = \"credentials\" in Request.prototype;\n    request = new Request(url, {\n      ...fetchOptions,\n      signal: composedSignal,\n      method: method.toUpperCase(),\n      headers: headers.normalize().toJSON(),\n      body: data,\n      duplex: \"half\",\n      credentials: isCredentialsSupported ? withCredentials : undefined\n    });\n\n    let response = await fetch(request);\n\n    const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n    if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n      const options = {};\n\n      ['status', 'statusText', 'headers'].forEach(prop => {\n        options[prop] = response[prop];\n      });\n\n      const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n      const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n        responseContentLength,\n        progressEventReducer(asyncDecorator(onDownloadProgress), true)\n      ) || [];\n\n      response = new Response(\n        trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n          flush && flush();\n          unsubscribe && unsubscribe();\n        }),\n        options\n      );\n    }\n\n    responseType = responseType || 'text';\n\n    let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n    !isStreamResponse && unsubscribe && unsubscribe();\n\n    return await new Promise((resolve, reject) => {\n      settle(resolve, reject, {\n        data: responseData,\n        headers: AxiosHeaders.from(response.headers),\n        status: response.status,\n        statusText: response.statusText,\n        config,\n        request\n      })\n    })\n  } catch (err) {\n    unsubscribe && unsubscribe();\n\n    if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n      throw Object.assign(\n        new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n        {\n          cause: err.cause || err\n        }\n      )\n    }\n\n    throw AxiosError.from(err, err && err.code, config, request);\n  }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n  http: httpAdapter,\n  xhr: xhrAdapter,\n  fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n  if (fn) {\n    try {\n      Object.defineProperty(fn, 'name', {value});\n    } catch (e) {\n      // eslint-disable-next-line no-empty\n    }\n    Object.defineProperty(fn, 'adapterName', {value});\n  }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n  getAdapter: (adapters) => {\n    adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n    const {length} = adapters;\n    let nameOrAdapter;\n    let adapter;\n\n    const rejectedReasons = {};\n\n    for (let i = 0; i < length; i++) {\n      nameOrAdapter = adapters[i];\n      let id;\n\n      adapter = nameOrAdapter;\n\n      if (!isResolvedHandle(nameOrAdapter)) {\n        adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n        if (adapter === undefined) {\n          throw new AxiosError(`Unknown adapter '${id}'`);\n        }\n      }\n\n      if (adapter) {\n        break;\n      }\n\n      rejectedReasons[id || '#' + i] = adapter;\n    }\n\n    if (!adapter) {\n\n      const reasons = Object.entries(rejectedReasons)\n        .map(([id, state]) => `adapter ${id} ` +\n          (state === false ? 'is not supported by the environment' : 'is not available in the build')\n        );\n\n      let s = length ?\n        (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n        'as no adapter specified';\n\n      throw new AxiosError(\n        `There is no suitable adapter to dispatch the request ` + s,\n        'ERR_NOT_SUPPORT'\n      );\n    }\n\n    return adapter;\n  },\n  adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError(null, config);\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  config.headers = AxiosHeaders.from(config.headers);\n\n  // Transform request data\n  config.data = transformData.call(\n    config,\n    config.transformRequest\n  );\n\n  if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n    config.headers.setContentType('application/x-www-form-urlencoded', false);\n  }\n\n  const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n  return adapter(config).then(function onAdapterResolution(response) {\n    throwIfCancellationRequested(config);\n\n    // Transform response data\n    response.data = transformData.call(\n      config,\n      config.transformResponse,\n      response\n    );\n\n    response.headers = AxiosHeaders.from(response.headers);\n\n    return response;\n  }, function onAdapterRejection(reason) {\n    if (!isCancel(reason)) {\n      throwIfCancellationRequested(config);\n\n      // Transform response data\n      if (reason && reason.response) {\n        reason.response.data = transformData.call(\n          config,\n          config.transformResponse,\n          reason.response\n        );\n        reason.response.headers = AxiosHeaders.from(reason.response.headers);\n      }\n    }\n\n    return Promise.reject(reason);\n  });\n}\n","export const VERSION = \"1.7.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n  }\n\n  // eslint-disable-next-line func-names\n  return (value, opt, opts) => {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  const keys = Object.keys(options);\n  let i = keys.length;\n  while (i-- > 0) {\n    const opt = keys[i];\n    const validator = schema[opt];\n    if (validator) {\n      const value = options[opt];\n      const result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nexport default {\n  assertOptions,\n  validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n  constructor(instanceConfig) {\n    this.defaults = instanceConfig;\n    this.interceptors = {\n      request: new InterceptorManager(),\n      response: new InterceptorManager()\n    };\n  }\n\n  /**\n   * Dispatch a request\n   *\n   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  async request(configOrUrl, config) {\n    try {\n      return await this._request(configOrUrl, config);\n    } catch (err) {\n      if (err instanceof Error) {\n        let dummy;\n\n        Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n        // slice off the Error: ... line\n        const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n        try {\n          if (!err.stack) {\n            err.stack = stack;\n            // match without the 2 top stack lines\n          } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n            err.stack += '\\n' + stack\n          }\n        } catch (e) {\n          // ignore the case where \"stack\" is an un-writable property\n        }\n      }\n\n      throw err;\n    }\n  }\n\n  _request(configOrUrl, config) {\n    /*eslint no-param-reassign:0*/\n    // Allow for axios('example/url'[, config]) a la fetch API\n    if (typeof configOrUrl === 'string') {\n      config = config || {};\n      config.url = configOrUrl;\n    } else {\n      config = configOrUrl || {};\n    }\n\n    config = mergeConfig(this.defaults, config);\n\n    const {transitional, paramsSerializer, headers} = config;\n\n    if (transitional !== undefined) {\n      validator.assertOptions(transitional, {\n        silentJSONParsing: validators.transitional(validators.boolean),\n        forcedJSONParsing: validators.transitional(validators.boolean),\n        clarifyTimeoutError: validators.transitional(validators.boolean)\n      }, false);\n    }\n\n    if (paramsSerializer != null) {\n      if (utils.isFunction(paramsSerializer)) {\n        config.paramsSerializer = {\n          serialize: paramsSerializer\n        }\n      } else {\n        validator.assertOptions(paramsSerializer, {\n          encode: validators.function,\n          serialize: validators.function\n        }, true);\n      }\n    }\n\n    // Set config.method\n    config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n    // Flatten headers\n    let contextHeaders = headers && utils.merge(\n      headers.common,\n      headers[config.method]\n    );\n\n    headers && utils.forEach(\n      ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n      (method) => {\n        delete headers[method];\n      }\n    );\n\n    config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n    // filter out skipped interceptors\n    const requestInterceptorChain = [];\n    let synchronousRequestInterceptors = true;\n    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n      if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n        return;\n      }\n\n      synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n      requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    const responseInterceptorChain = [];\n    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    let promise;\n    let i = 0;\n    let len;\n\n    if (!synchronousRequestInterceptors) {\n      const chain = [dispatchRequest.bind(this), undefined];\n      chain.unshift.apply(chain, requestInterceptorChain);\n      chain.push.apply(chain, responseInterceptorChain);\n      len = chain.length;\n\n      promise = Promise.resolve(config);\n\n      while (i < len) {\n        promise = promise.then(chain[i++], chain[i++]);\n      }\n\n      return promise;\n    }\n\n    len = requestInterceptorChain.length;\n\n    let newConfig = config;\n\n    i = 0;\n\n    while (i < len) {\n      const onFulfilled = requestInterceptorChain[i++];\n      const onRejected = requestInterceptorChain[i++];\n      try {\n        newConfig = onFulfilled(newConfig);\n      } catch (error) {\n        onRejected.call(this, error);\n        break;\n      }\n    }\n\n    try {\n      promise = dispatchRequest.call(this, newConfig);\n    } catch (error) {\n      return Promise.reject(error);\n    }\n\n    i = 0;\n    len = responseInterceptorChain.length;\n\n    while (i < len) {\n      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n    }\n\n    return promise;\n  }\n\n  getUri(config) {\n    config = mergeConfig(this.defaults, config);\n    const fullPath = buildFullPath(config.baseURL, config.url);\n    return buildURL(fullPath, config.params, config.paramsSerializer);\n  }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function(url, config) {\n    return this.request(mergeConfig(config || {}, {\n      method,\n      url,\n      data: (config || {}).data\n    }));\n  };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n  /*eslint func-names:0*/\n\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(mergeConfig(config || {}, {\n        method,\n        headers: isForm ? {\n          'Content-Type': 'multipart/form-data'\n        } : {},\n        url,\n        data\n      }));\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n  constructor(executor) {\n    if (typeof executor !== 'function') {\n      throw new TypeError('executor must be a function.');\n    }\n\n    let resolvePromise;\n\n    this.promise = new Promise(function promiseExecutor(resolve) {\n      resolvePromise = resolve;\n    });\n\n    const token = this;\n\n    // eslint-disable-next-line func-names\n    this.promise.then(cancel => {\n      if (!token._listeners) return;\n\n      let i = token._listeners.length;\n\n      while (i-- > 0) {\n        token._listeners[i](cancel);\n      }\n      token._listeners = null;\n    });\n\n    // eslint-disable-next-line func-names\n    this.promise.then = onfulfilled => {\n      let _resolve;\n      // eslint-disable-next-line func-names\n      const promise = new Promise(resolve => {\n        token.subscribe(resolve);\n        _resolve = resolve;\n      }).then(onfulfilled);\n\n      promise.cancel = function reject() {\n        token.unsubscribe(_resolve);\n      };\n\n      return promise;\n    };\n\n    executor(function cancel(message, config, request) {\n      if (token.reason) {\n        // Cancellation has already been requested\n        return;\n      }\n\n      token.reason = new CanceledError(message, config, request);\n      resolvePromise(token.reason);\n    });\n  }\n\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason) {\n      throw this.reason;\n    }\n  }\n\n  /**\n   * Subscribe to the cancel signal\n   */\n\n  subscribe(listener) {\n    if (this.reason) {\n      listener(this.reason);\n      return;\n    }\n\n    if (this._listeners) {\n      this._listeners.push(listener);\n    } else {\n      this._listeners = [listener];\n    }\n  }\n\n  /**\n   * Unsubscribe from the cancel signal\n   */\n\n  unsubscribe(listener) {\n    if (!this._listeners) {\n      return;\n    }\n    const index = this._listeners.indexOf(listener);\n    if (index !== -1) {\n      this._listeners.splice(index, 1);\n    }\n  }\n\n  toAbortSignal() {\n    const controller = new AbortController();\n\n    const abort = (err) => {\n      controller.abort(err);\n    };\n\n    this.subscribe(abort);\n\n    controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n    return controller.signal;\n  }\n\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let cancel;\n    const token = new CancelToken(function executor(c) {\n      cancel = c;\n    });\n    return {\n      token,\n      cancel\n    };\n  }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  PayloadTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  UnprocessableEntity: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n  HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  const context = new Axios(defaultConfig);\n  const instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n  // Copy context to instance\n  utils.extend(instance, context, null, {allOwnKeys: true});\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  var args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n  return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { __assign, __awaiter, __generator, __rest } from \"tslib\";\nimport { ConsoleLogger as Logger, Credentials, DateUtils, Signer, } from '@aws-amplify/core';\nimport axios from 'axios';\nimport { parse, format } from 'url';\nvar logger = new Logger('RestClient');\n/**\n* HTTP Client for REST requests. Send and receive JSON data.\n* Sign request with AWS credentials if available\n* Usage:\n<pre>\nconst restClient = new RestClient();\nrestClient.get('...')\n    .then(function(data) {\n        console.log(data);\n    })\n    .catch(err => console.log(err));\n</pre>\n*/\nvar RestClient = /** @class */ (function () {\n    /**\n     * @param {RestClientOptions} [options] - Instance options\n     */\n    function RestClient(options) {\n        this._region = 'us-east-1'; // this will be updated by endpoint function\n        this._service = 'execute-api'; // this can be updated by endpoint function\n        this._custom_header = undefined; // this can be updated by endpoint function\n        /**\n         * This weak map provides functionality to let clients cancel\n         * in-flight axios requests. https://github.com/axios/axios#cancellation\n         *\n         * 1. For every axios request, a unique cancel token is generated and added in the request.\n         * 2. Promise for fulfilling the request is then mapped to that unique cancel token.\n         * 3. The promise is returned to the client.\n         * 4. Clients can either wait for the promise to fulfill or call `API.cancel(promise)` to cancel the request.\n         * 5. If `API.cancel(promise)` is called, then the corresponding cancel token is retrieved from the map below.\n         * 6. Promise returned to the client will be in rejected state with the error provided during cancel.\n         * 7. Clients can check if the error is because of cancelling by calling `API.isCancel(error)`.\n         *\n         * For more details, see https://github.com/aws-amplify/amplify-js/pull/3769#issuecomment-552660025\n         */\n        this._cancelTokenMap = null;\n        this.Credentials = Credentials;\n        this._options = options;\n        logger.debug('API Options', this._options);\n        if (this._cancelTokenMap == null) {\n            this._cancelTokenMap = new WeakMap();\n        }\n    }\n    /**\n    * Update AWS credentials\n    * @param {AWSCredentials} credentials - AWS credentials\n    *\n    updateCredentials(credentials: AWSCredentials) {\n        this.options.credentials = credentials;\n    }\n*/\n    /**\n     * Basic HTTP request. Customizable\n     * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n     * @param {string} method - Request HTTP method\n     * @param {json} [init] - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestClient.prototype.ajax = function (urlOrApiInfo, method, init) {\n        return __awaiter(this, void 0, void 0, function () {\n            var parsed_url, url, region, service, custom_header, params, libraryHeaders, initParams, isAllResponse, custom_header_obj, _a, _b, search, parsedUrl, credentials, error_1, signedParams, response, error_2, headers, dateHeader, responseDate, requestDate, rawClientDate;\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        logger.debug(method, urlOrApiInfo);\n                        region = 'us-east-1';\n                        service = 'execute-api';\n                        custom_header = undefined;\n                        if (typeof urlOrApiInfo === 'string') {\n                            parsed_url = this._parseUrl(urlOrApiInfo);\n                            url = urlOrApiInfo;\n                        }\n                        else {\n                            (url = urlOrApiInfo.endpoint, custom_header = urlOrApiInfo.custom_header, region = urlOrApiInfo.region, service = urlOrApiInfo.service);\n                            parsed_url = this._parseUrl(urlOrApiInfo.endpoint);\n                        }\n                        params = {\n                            method: method,\n                            url: url,\n                            host: parsed_url.host,\n                            path: parsed_url.path,\n                            headers: {},\n                            data: null,\n                            responseType: 'json',\n                            timeout: 0,\n                            cancelToken: null,\n                        };\n                        libraryHeaders = {};\n                        initParams = Object.assign({}, init);\n                        isAllResponse = initParams.response;\n                        if (initParams.body) {\n                            if (typeof FormData === 'function' &&\n                                initParams.body instanceof FormData) {\n                                libraryHeaders['Content-Type'] = 'multipart/form-data';\n                                params.data = initParams.body;\n                            }\n                            else {\n                                libraryHeaders['Content-Type'] = 'application/json; charset=UTF-8';\n                                params.data = JSON.stringify(initParams.body);\n                            }\n                        }\n                        if (initParams.responseType) {\n                            params.responseType = initParams.responseType;\n                        }\n                        if (initParams.withCredentials) {\n                            params['withCredentials'] = initParams.withCredentials;\n                        }\n                        if (initParams.timeout) {\n                            params.timeout = initParams.timeout;\n                        }\n                        if (initParams.cancellableToken) {\n                            params.cancelToken = initParams.cancellableToken.token;\n                        }\n                        params['signerServiceInfo'] = initParams.signerServiceInfo;\n                        if (!(typeof custom_header === 'function')) return [3 /*break*/, 2];\n                        return [4 /*yield*/, custom_header()];\n                    case 1:\n                        _a = _c.sent();\n                        return [3 /*break*/, 3];\n                    case 2:\n                        _a = undefined;\n                        _c.label = 3;\n                    case 3:\n                        custom_header_obj = _a;\n                        params.headers = __assign(__assign(__assign({}, libraryHeaders), custom_header_obj), initParams.headers);\n                        _b = parse(url, true, true), search = _b.search, parsedUrl = __rest(_b, [\"search\"]);\n                        params.url = format(__assign(__assign({}, parsedUrl), { query: __assign(__assign({}, parsedUrl.query), (initParams.queryStringParameters || {})) }));\n                        // Do not sign the request if client has added 'Authorization' header,\n                        // which means custom authorizer.\n                        if (typeof params.headers['Authorization'] !== 'undefined') {\n                            params.headers = Object.keys(params.headers).reduce(function (acc, k) {\n                                if (params.headers[k]) {\n                                    acc[k] = params.headers[k];\n                                }\n                                return acc;\n                                // tslint:disable-next-line:align\n                            }, {});\n                            return [2 /*return*/, this._request(params, isAllResponse)];\n                        }\n                        _c.label = 4;\n                    case 4:\n                        _c.trys.push([4, 6, , 7]);\n                        return [4 /*yield*/, this.Credentials.get()];\n                    case 5:\n                        credentials = _c.sent();\n                        return [3 /*break*/, 7];\n                    case 6:\n                        error_1 = _c.sent();\n                        logger.debug('No credentials available, the request will be unsigned');\n                        return [2 /*return*/, this._request(params, isAllResponse)];\n                    case 7:\n                        _c.trys.push([7, 9, , 10]);\n                        signedParams = this._sign(__assign({}, params), credentials, {\n                            region: region,\n                            service: service,\n                        });\n                        return [4 /*yield*/, axios(signedParams)];\n                    case 8:\n                        response = _c.sent();\n                        return [2 /*return*/, isAllResponse ? response : response.data];\n                    case 9:\n                        error_2 = _c.sent();\n                        logger.debug(error_2);\n                        if (DateUtils.isClockSkewError(error_2)) {\n                            headers = error_2.response.headers;\n                            dateHeader = headers && (headers.date || headers.Date);\n                            responseDate = new Date(dateHeader);\n                            requestDate = DateUtils.getDateFromHeaderString(signedParams.headers['x-amz-date']);\n                            // Compare local clock to the server clock\n                            if (DateUtils.isClockSkewed(responseDate)) {\n                                rawClientDate = requestDate.getTime() - DateUtils.getClockOffset();\n                                DateUtils.setClockOffset(responseDate.getTime() - rawClientDate);\n                                return [2 /*return*/, this.ajax(urlOrApiInfo, method, init)];\n                            }\n                        }\n                        throw error_2;\n                    case 10: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * GET HTTP request\n     * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n     * @param {JSON} init - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestClient.prototype.get = function (urlOrApiInfo, init) {\n        return this.ajax(urlOrApiInfo, 'GET', init);\n    };\n    /**\n     * PUT HTTP request\n     * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n     * @param {json} init - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestClient.prototype.put = function (urlOrApiInfo, init) {\n        return this.ajax(urlOrApiInfo, 'PUT', init);\n    };\n    /**\n     * PATCH HTTP request\n     * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n     * @param {json} init - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestClient.prototype.patch = function (urlOrApiInfo, init) {\n        return this.ajax(urlOrApiInfo, 'PATCH', init);\n    };\n    /**\n     * POST HTTP request\n     * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n     * @param {json} init - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestClient.prototype.post = function (urlOrApiInfo, init) {\n        return this.ajax(urlOrApiInfo, 'POST', init);\n    };\n    /**\n     * DELETE HTTP request\n     * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n     * @param {json} init - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestClient.prototype.del = function (urlOrApiInfo, init) {\n        return this.ajax(urlOrApiInfo, 'DELETE', init);\n    };\n    /**\n     * HEAD HTTP request\n     * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\n     * @param {json} init - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestClient.prototype.head = function (urlOrApiInfo, init) {\n        return this.ajax(urlOrApiInfo, 'HEAD', init);\n    };\n    /**\n     * Cancel an inflight API request\n     * @param {Promise<any>} request - The request promise to cancel\n     * @param {string} [message] - A message to include in the cancelation exception\n     */\n    RestClient.prototype.cancel = function (request, message) {\n        var source = this._cancelTokenMap.get(request);\n        if (source) {\n            source.cancel(message);\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Check if the request has a corresponding cancel token in the WeakMap.\n     * @params request - The request promise\n     * @return if the request has a corresponding cancel token.\n     */\n    RestClient.prototype.hasCancelToken = function (request) {\n        return this._cancelTokenMap.has(request);\n    };\n    /**\n     * Checks to see if an error thrown is from an api request cancellation\n     * @param {any} error - Any error\n     * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n     */\n    RestClient.prototype.isCancel = function (error) {\n        return axios.isCancel(error);\n    };\n    /**\n     * Retrieves a new and unique cancel token which can be\n     * provided in an axios request to be cancelled later.\n     */\n    RestClient.prototype.getCancellableToken = function () {\n        return axios.CancelToken.source();\n    };\n    /**\n     * Updates the weakmap with a response promise and its\n     * cancel token such that the cancel token can be easily\n     * retrieved (and used for cancelling the request)\n     */\n    RestClient.prototype.updateRequestToBeCancellable = function (promise, cancelTokenSource) {\n        this._cancelTokenMap.set(promise, cancelTokenSource);\n    };\n    /**\n     * Getting endpoint for API\n     * @param {string} apiName - The name of the api\n     * @return {string} - The endpoint of the api\n     */\n    RestClient.prototype.endpoint = function (apiName) {\n        var _this = this;\n        var cloud_logic_array = this._options.endpoints;\n        var response = '';\n        if (!Array.isArray(cloud_logic_array)) {\n            return response;\n        }\n        cloud_logic_array.forEach(function (v) {\n            if (v.name === apiName) {\n                response = v.endpoint;\n                if (typeof v.region === 'string') {\n                    _this._region = v.region;\n                }\n                else if (typeof _this._options.region === 'string') {\n                    _this._region = _this._options.region;\n                }\n                if (typeof v.service === 'string') {\n                    _this._service = v.service || 'execute-api';\n                }\n                else {\n                    _this._service = 'execute-api';\n                }\n                if (typeof v.custom_header === 'function') {\n                    _this._custom_header = v.custom_header;\n                }\n                else {\n                    _this._custom_header = undefined;\n                }\n            }\n        });\n        return response;\n    };\n    /** private methods **/\n    RestClient.prototype._sign = function (params, credentials, _a) {\n        var service = _a.service, region = _a.region;\n        var signerServiceInfoParams = params.signerServiceInfo, otherParams = __rest(params, [\"signerServiceInfo\"]);\n        var endpoint_region = region || this._region || this._options.region;\n        var endpoint_service = service || this._service || this._options.service;\n        var creds = {\n            secret_key: credentials.secretAccessKey,\n            access_key: credentials.accessKeyId,\n            session_token: credentials.sessionToken,\n        };\n        var endpointInfo = {\n            region: endpoint_region,\n            service: endpoint_service,\n        };\n        var signerServiceInfo = Object.assign(endpointInfo, signerServiceInfoParams);\n        var signed_params = Signer.sign(otherParams, creds, signerServiceInfo);\n        if (signed_params.data) {\n            signed_params.body = signed_params.data;\n        }\n        logger.debug('Signed Request: ', signed_params);\n        delete signed_params.headers['host'];\n        return signed_params;\n    };\n    RestClient.prototype._request = function (params, isAllResponse) {\n        if (isAllResponse === void 0) { isAllResponse = false; }\n        return axios(params)\n            .then(function (response) { return (isAllResponse ? response : response.data); })\n            .catch(function (error) {\n            logger.debug(error);\n            throw error;\n        });\n    };\n    RestClient.prototype._parseUrl = function (url) {\n        var parts = url.split('/');\n        return {\n            host: parts[2],\n            path: '/' + parts.slice(3).join('/'),\n        };\n    };\n    return RestClient;\n}());\nexport { RestClient };\n","import { __assign, __awaiter, __generator, __read, __rest } from \"tslib\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { print, parse, GraphQLError, } from 'graphql';\nimport { Amplify, ConsoleLogger as Logger, Credentials, getAmplifyUserAgent, INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER, } from '@aws-amplify/core';\nimport { InternalPubSub } from '@aws-amplify/pubsub/internals';\nimport { Auth } from '@aws-amplify/auth';\nimport { Cache } from '@aws-amplify/cache';\nimport { GraphQLAuthError, } from '../types';\nimport { RestClient } from '@aws-amplify/api-rest';\nvar USER_AGENT_HEADER = 'x-amz-user-agent';\nvar logger = new Logger('GraphQLAPI');\nexport var graphqlOperation = function (query, variables, authToken) {\n    if (variables === void 0) { variables = {}; }\n    return ({\n        query: query,\n        variables: variables,\n        authToken: authToken,\n    });\n};\n/**\n * Export Cloud Logic APIs\n */\nvar InternalGraphQLAPIClass = /** @class */ (function () {\n    /**\n     * Initialize GraphQL API with AWS configuration\n     * @param {Object} options - Configuration object for API\n     */\n    function InternalGraphQLAPIClass(options) {\n        this._api = null;\n        this.Auth = Auth;\n        this.Cache = Cache;\n        this.Credentials = Credentials;\n        this._options = options;\n        logger.debug('API Options', this._options);\n    }\n    InternalGraphQLAPIClass.prototype.getModuleName = function () {\n        return 'InternalGraphQLAPI';\n    };\n    /**\n     * Configure API\n     * @param {Object} config - Configuration of the API\n     * @return {Object} - The current configuration\n     */\n    InternalGraphQLAPIClass.prototype.configure = function (options) {\n        var _a = options || {}, _b = _a.API, API = _b === void 0 ? {} : _b, otherOptions = __rest(_a, [\"API\"]);\n        var opt = __assign(__assign({}, otherOptions), API);\n        logger.debug('configure GraphQL API', { opt: opt });\n        if (opt['aws_project_region']) {\n            opt = Object.assign({}, opt, {\n                region: opt['aws_project_region'],\n                header: {},\n            });\n        }\n        if (typeof opt.graphql_headers !== 'undefined' &&\n            typeof opt.graphql_headers !== 'function') {\n            logger.warn('graphql_headers should be a function');\n            opt.graphql_headers = undefined;\n        }\n        this._options = Object.assign({}, this._options, opt);\n        this.createInstance();\n        return this._options;\n    };\n    /**\n     * Create an instance of API for the library\n     * @return - A promise of true if Success\n     */\n    InternalGraphQLAPIClass.prototype.createInstance = function () {\n        logger.debug('create Rest instance');\n        if (this._options) {\n            this._api = new RestClient(this._options);\n            // Share instance Credentials with client for SSR\n            this._api.Credentials = this.Credentials;\n            return true;\n        }\n        else {\n            return Promise.reject('API not configured');\n        }\n    };\n    InternalGraphQLAPIClass.prototype._headerBasedAuth = function (defaultAuthenticationType, additionalHeaders) {\n        if (additionalHeaders === void 0) { additionalHeaders = {}; }\n        return __awaiter(this, void 0, void 0, function () {\n            var _a, aws_appsync_authenticationType, apiKey, authenticationType, headers, _b, credentialsOK, token, federatedInfo, currentUser, e_1, session, e_2;\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        _a = this._options, aws_appsync_authenticationType = _a.aws_appsync_authenticationType, apiKey = _a.aws_appsync_apiKey;\n                        authenticationType = defaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\n                        headers = {};\n                        _b = authenticationType;\n                        switch (_b) {\n                            case 'API_KEY': return [3 /*break*/, 1];\n                            case 'AWS_IAM': return [3 /*break*/, 2];\n                            case 'OPENID_CONNECT': return [3 /*break*/, 4];\n                            case 'AMAZON_COGNITO_USER_POOLS': return [3 /*break*/, 11];\n                            case 'AWS_LAMBDA': return [3 /*break*/, 15];\n                        }\n                        return [3 /*break*/, 16];\n                    case 1:\n                        if (!apiKey) {\n                            throw new Error(GraphQLAuthError.NO_API_KEY);\n                        }\n                        headers = {\n                            Authorization: null,\n                            'X-Api-Key': apiKey,\n                        };\n                        return [3 /*break*/, 17];\n                    case 2: return [4 /*yield*/, this._ensureCredentials()];\n                    case 3:\n                        credentialsOK = _c.sent();\n                        if (!credentialsOK) {\n                            throw new Error(GraphQLAuthError.NO_CREDENTIALS);\n                        }\n                        return [3 /*break*/, 17];\n                    case 4:\n                        _c.trys.push([4, 9, , 10]);\n                        token = void 0;\n                        return [4 /*yield*/, Cache.getItem('federatedInfo')];\n                    case 5:\n                        federatedInfo = _c.sent();\n                        if (!federatedInfo) return [3 /*break*/, 6];\n                        token = federatedInfo.token;\n                        return [3 /*break*/, 8];\n                    case 6: return [4 /*yield*/, Auth.currentAuthenticatedUser()];\n                    case 7:\n                        currentUser = _c.sent();\n                        if (currentUser) {\n                            token = currentUser.token;\n                        }\n                        _c.label = 8;\n                    case 8:\n                        if (!token) {\n                            throw new Error(GraphQLAuthError.NO_FEDERATED_JWT);\n                        }\n                        headers = {\n                            Authorization: token,\n                        };\n                        return [3 /*break*/, 10];\n                    case 9:\n                        e_1 = _c.sent();\n                        throw new Error(GraphQLAuthError.NO_CURRENT_USER);\n                    case 10: return [3 /*break*/, 17];\n                    case 11:\n                        _c.trys.push([11, 13, , 14]);\n                        return [4 /*yield*/, this.Auth.currentSession()];\n                    case 12:\n                        session = _c.sent();\n                        headers = {\n                            Authorization: session.getAccessToken().getJwtToken(),\n                        };\n                        return [3 /*break*/, 14];\n                    case 13:\n                        e_2 = _c.sent();\n                        throw new Error(GraphQLAuthError.NO_CURRENT_USER);\n                    case 14: return [3 /*break*/, 17];\n                    case 15:\n                        if (!additionalHeaders.Authorization) {\n                            throw new Error(GraphQLAuthError.NO_AUTH_TOKEN);\n                        }\n                        headers = {\n                            Authorization: additionalHeaders.Authorization,\n                        };\n                        return [3 /*break*/, 17];\n                    case 16:\n                        headers = {\n                            Authorization: null,\n                        };\n                        return [3 /*break*/, 17];\n                    case 17: return [2 /*return*/, headers];\n                }\n            });\n        });\n    };\n    /**\n     * to get the operation type\n     * @param operation\n     */\n    InternalGraphQLAPIClass.prototype.getGraphqlOperationType = function (operation) {\n        var doc = parse(operation);\n        var definitions = doc.definitions;\n        var _a = __read(definitions, 1), operationType = _a[0].operation;\n        return operationType;\n    };\n    /**\n     * Executes a GraphQL operation\n     *\n     * @param options - GraphQL Options\n     * @param [additionalHeaders] - headers to merge in after any `graphql_headers` set in the config\n     * @returns An Observable if the query is a subscription query, else a promise of the graphql result.\n     */\n    InternalGraphQLAPIClass.prototype.graphql = function (_a, additionalHeaders, customUserAgentDetails) {\n        var paramQuery = _a.query, _b = _a.variables, variables = _b === void 0 ? {} : _b, authMode = _a.authMode, authToken = _a.authToken;\n        var query = typeof paramQuery === 'string'\n            ? parse(paramQuery)\n            : parse(print(paramQuery));\n        var _c = __read(query.definitions.filter(function (def) { return def.kind === 'OperationDefinition'; }), 1), _d = _c[0], operationDef = _d === void 0 ? {} : _d;\n        var operationType = operationDef.operation;\n        var headers = additionalHeaders || {};\n        // if an authorization header is set, have the explicit authToken take precedence\n        if (authToken) {\n            headers.Authorization = authToken;\n        }\n        switch (operationType) {\n            case 'query':\n            case 'mutation':\n                this.createInstanceIfNotCreated();\n                var cancellableToken = this._api.getCancellableToken();\n                var initParams = {\n                    cancellableToken: cancellableToken,\n                    withCredentials: this._options.withCredentials,\n                };\n                var responsePromise = this._graphql({ query: query, variables: variables, authMode: authMode }, headers, initParams, customUserAgentDetails);\n                this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n                return responsePromise;\n            case 'subscription':\n                return this._graphqlSubscribe({ query: query, variables: variables, authMode: authMode }, headers, customUserAgentDetails);\n            default:\n                throw new Error(\"invalid operation type: \".concat(operationType));\n        }\n    };\n    InternalGraphQLAPIClass.prototype._graphql = function (_a, additionalHeaders, initParams, customUserAgentDetails) {\n        var query = _a.query, variables = _a.variables, authMode = _a.authMode;\n        if (additionalHeaders === void 0) { additionalHeaders = {}; }\n        if (initParams === void 0) { initParams = {}; }\n        return __awaiter(this, void 0, void 0, function () {\n            var _b, region, appSyncGraphqlEndpoint, _c, graphql_headers, customGraphqlEndpoint, customEndpointRegion, headers, _d, _e, _f, _g, _h, _j, body, init, endpoint, error, response, err_1, errors;\n            var _k;\n            return __generator(this, function (_l) {\n                switch (_l.label) {\n                    case 0:\n                        this.createInstanceIfNotCreated();\n                        _b = this._options, region = _b.aws_appsync_region, appSyncGraphqlEndpoint = _b.aws_appsync_graphqlEndpoint, _c = _b.graphql_headers, graphql_headers = _c === void 0 ? function () { return ({}); } : _c, customGraphqlEndpoint = _b.graphql_endpoint, customEndpointRegion = _b.graphql_endpoint_iam_region;\n                        _d = [{}];\n                        _e = !customGraphqlEndpoint;\n                        if (!_e) return [3 /*break*/, 2];\n                        return [4 /*yield*/, this._headerBasedAuth(authMode, additionalHeaders)];\n                    case 1:\n                        _e = (_l.sent());\n                        _l.label = 2;\n                    case 2:\n                        _f = [__assign.apply(void 0, _d.concat([(_e)]))];\n                        _g = customGraphqlEndpoint;\n                        if (!_g) return [3 /*break*/, 6];\n                        if (!customEndpointRegion) return [3 /*break*/, 4];\n                        return [4 /*yield*/, this._headerBasedAuth(authMode, additionalHeaders)];\n                    case 3:\n                        _h = _l.sent();\n                        return [3 /*break*/, 5];\n                    case 4:\n                        _h = { Authorization: null };\n                        _l.label = 5;\n                    case 5:\n                        _g = (_h);\n                        _l.label = 6;\n                    case 6:\n                        _j = [__assign.apply(void 0, _f.concat([(_g)]))];\n                        return [4 /*yield*/, graphql_headers({ query: query, variables: variables })];\n                    case 7:\n                        headers = __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_l.sent())])), additionalHeaders]), (!customGraphqlEndpoint && (_k = {},\n                                _k[USER_AGENT_HEADER] = getAmplifyUserAgent(customUserAgentDetails),\n                                _k))]);\n                        body = {\n                            query: print(query),\n                            variables: variables,\n                        };\n                        init = Object.assign({\n                            headers: headers,\n                            body: body,\n                            signerServiceInfo: {\n                                service: !customGraphqlEndpoint ? 'appsync' : 'execute-api',\n                                region: !customGraphqlEndpoint ? region : customEndpointRegion,\n                            },\n                        }, initParams);\n                        endpoint = customGraphqlEndpoint || appSyncGraphqlEndpoint;\n                        if (!endpoint) {\n                            error = new GraphQLError('No graphql endpoint provided.');\n                            throw {\n                                data: {},\n                                errors: [error],\n                            };\n                        }\n                        _l.label = 8;\n                    case 8:\n                        _l.trys.push([8, 10, , 11]);\n                        return [4 /*yield*/, this._api.post(endpoint, init)];\n                    case 9:\n                        response = _l.sent();\n                        return [3 /*break*/, 11];\n                    case 10:\n                        err_1 = _l.sent();\n                        // If the exception is because user intentionally\n                        // cancelled the request, do not modify the exception\n                        // so that clients can identify the exception correctly.\n                        if (this._api.isCancel(err_1)) {\n                            throw err_1;\n                        }\n                        response = {\n                            data: {},\n                            errors: [new GraphQLError(err_1.message, null, null, null, null, err_1)],\n                        };\n                        return [3 /*break*/, 11];\n                    case 11:\n                        errors = response.errors;\n                        if (errors && errors.length) {\n                            throw response;\n                        }\n                        return [2 /*return*/, response];\n                }\n            });\n        });\n    };\n    InternalGraphQLAPIClass.prototype.createInstanceIfNotCreated = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!!this._api) return [3 /*break*/, 2];\n                        return [4 /*yield*/, this.createInstance()];\n                    case 1:\n                        _a.sent();\n                        _a.label = 2;\n                    case 2: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Checks to see if an error thrown is from an api request cancellation\n     * @param {any} error - Any error\n     * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n     */\n    InternalGraphQLAPIClass.prototype.isCancel = function (error) {\n        return this._api.isCancel(error);\n    };\n    /**\n     * Cancels an inflight request. Only applicable for graphql queries and mutations\n     * @param {any} request - request to cancel\n     * @return {boolean} - A boolean indicating if the request was cancelled\n     */\n    InternalGraphQLAPIClass.prototype.cancel = function (request, message) {\n        return this._api.cancel(request, message);\n    };\n    /**\n     * Check if the request has a corresponding cancel token in the WeakMap.\n     * @params request - The request promise\n     * @return if the request has a corresponding cancel token.\n     */\n    InternalGraphQLAPIClass.prototype.hasCancelToken = function (request) {\n        return this._api.hasCancelToken(request);\n    };\n    InternalGraphQLAPIClass.prototype._graphqlSubscribe = function (_a, additionalHeaders, customUserAgentDetails) {\n        var query = _a.query, variables = _a.variables, defaultAuthenticationType = _a.authMode, authToken = _a.authToken;\n        if (additionalHeaders === void 0) { additionalHeaders = {}; }\n        var _b = this._options, region = _b.aws_appsync_region, appSyncGraphqlEndpoint = _b.aws_appsync_graphqlEndpoint, aws_appsync_authenticationType = _b.aws_appsync_authenticationType, apiKey = _b.aws_appsync_apiKey, _c = _b.graphql_headers, graphql_headers = _c === void 0 ? function () { return ({}); } : _c;\n        var authenticationType = defaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\n        if (InternalPubSub && typeof InternalPubSub.subscribe === 'function') {\n            return InternalPubSub.subscribe('', {\n                provider: INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER,\n                appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n                authenticationType: authenticationType,\n                apiKey: apiKey,\n                query: print(query),\n                region: region,\n                variables: variables,\n                graphql_headers: graphql_headers,\n                additionalHeaders: additionalHeaders,\n                authToken: authToken,\n            }, customUserAgentDetails);\n        }\n        else {\n            logger.debug('No pubsub module applied for subscription');\n            throw new Error('No pubsub module applied for subscription');\n        }\n    };\n    /**\n     * @private\n     */\n    InternalGraphQLAPIClass.prototype._ensureCredentials = function () {\n        var _this = this;\n        return this.Credentials.get()\n            .then(function (credentials) {\n            if (!credentials)\n                return false;\n            var cred = _this.Credentials.shear(credentials);\n            logger.debug('set credentials for api', cred);\n            return true;\n        })\n            .catch(function (err) {\n            logger.warn('ensure credentials error', err);\n            return false;\n        });\n    };\n    return InternalGraphQLAPIClass;\n}());\nexport { InternalGraphQLAPIClass };\nexport var InternalGraphQLAPI = new InternalGraphQLAPIClass(null);\nAmplify.register(InternalGraphQLAPI);\n","import { __assign, __awaiter, __generator, __rest } from \"tslib\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { RestClient } from './RestClient';\nimport { Amplify, ConsoleLogger as Logger, Credentials, } from '@aws-amplify/core';\nvar logger = new Logger('RestAPI');\n/**\n * Export Cloud Logic APIs\n */\nvar RestAPIClass = /** @class */ (function () {\n    /**\n     * Initialize Rest API with AWS configuration\n     * @param {Object} options - Configuration object for API\n     */\n    function RestAPIClass(options) {\n        this._api = null;\n        this.Credentials = Credentials;\n        this._options = options;\n        logger.debug('API Options', this._options);\n    }\n    RestAPIClass.prototype.getModuleName = function () {\n        return 'RestAPI';\n    };\n    /**\n     * Configure API part with aws configurations\n     * @param {Object} config - Configuration of the API\n     * @return {Object} - The current configuration\n     */\n    RestAPIClass.prototype.configure = function (options) {\n        var _a = options || {}, _b = _a.API, API = _b === void 0 ? {} : _b, otherOptions = __rest(_a, [\"API\"]);\n        var opt = __assign(__assign({}, otherOptions), API);\n        logger.debug('configure Rest API', { opt: opt });\n        if (opt['aws_project_region']) {\n            if (opt['aws_cloud_logic_custom']) {\n                var custom = opt['aws_cloud_logic_custom'];\n                opt.endpoints =\n                    typeof custom === 'string' ? JSON.parse(custom) : custom;\n            }\n            opt = Object.assign({}, opt, {\n                region: opt['aws_project_region'],\n                header: {},\n            });\n        }\n        if (Array.isArray(opt.endpoints)) {\n            // Check if endpoints has custom_headers and validate if is a function\n            opt.endpoints.forEach(function (endpoint) {\n                if (typeof endpoint.custom_header !== 'undefined' &&\n                    typeof endpoint.custom_header !== 'function') {\n                    logger.warn('Rest API ' + endpoint.name + ', custom_header should be a function');\n                    endpoint.custom_header = undefined;\n                }\n            });\n        }\n        else if (this._options && Array.isArray(this._options.endpoints)) {\n            opt.endpoints = this._options.endpoints;\n        }\n        else {\n            opt.endpoints = [];\n        }\n        this._options = Object.assign({}, this._options, opt);\n        this.createInstance();\n        return this._options;\n    };\n    /**\n     * Create an instance of API for the library\n     * @return - A promise of true if Success\n     */\n    RestAPIClass.prototype.createInstance = function () {\n        logger.debug('create Rest API instance');\n        this._api = new RestClient(this._options);\n        // Share Amplify instance with client for SSR\n        this._api.Credentials = this.Credentials;\n        return true;\n    };\n    /**\n     * Make a GET request\n     * @param {string} apiName - The api name of the request\n     * @param {string} path - The path of the request\n     * @param {json} [init] - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestAPIClass.prototype.get = function (apiName, path, init) {\n        try {\n            var apiInfo = this.getEndpointInfo(apiName, path);\n            var cancellableToken = this._api.getCancellableToken();\n            var initParams = Object.assign({}, init);\n            initParams.cancellableToken = cancellableToken;\n            var responsePromise = this._api.get(apiInfo, initParams);\n            this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n            return responsePromise;\n        }\n        catch (err) {\n            return Promise.reject(err.message);\n        }\n    };\n    /**\n     * Make a POST request\n     * @param {string} apiName - The api name of the request\n     * @param {string} path - The path of the request\n     * @param {json} [init] - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestAPIClass.prototype.post = function (apiName, path, init) {\n        try {\n            var apiInfo = this.getEndpointInfo(apiName, path);\n            var cancellableToken = this._api.getCancellableToken();\n            var initParams = Object.assign({}, init);\n            initParams.cancellableToken = cancellableToken;\n            var responsePromise = this._api.post(apiInfo, initParams);\n            this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n            return responsePromise;\n        }\n        catch (err) {\n            return Promise.reject(err.message);\n        }\n    };\n    /**\n     * Make a PUT request\n     * @param {string} apiName - The api name of the request\n     * @param {string} path - The path of the request\n     * @param {json} [init] - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestAPIClass.prototype.put = function (apiName, path, init) {\n        try {\n            var apiInfo = this.getEndpointInfo(apiName, path);\n            var cancellableToken = this._api.getCancellableToken();\n            var initParams = Object.assign({}, init);\n            initParams.cancellableToken = cancellableToken;\n            var responsePromise = this._api.put(apiInfo, initParams);\n            this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n            return responsePromise;\n        }\n        catch (err) {\n            return Promise.reject(err.message);\n        }\n    };\n    /**\n     * Make a PATCH request\n     * @param {string} apiName - The api name of the request\n     * @param {string} path - The path of the request\n     * @param {json} [init] - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestAPIClass.prototype.patch = function (apiName, path, init) {\n        try {\n            var apiInfo = this.getEndpointInfo(apiName, path);\n            var cancellableToken = this._api.getCancellableToken();\n            var initParams = Object.assign({}, init);\n            initParams.cancellableToken = cancellableToken;\n            var responsePromise = this._api.patch(apiInfo, initParams);\n            this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n            return responsePromise;\n        }\n        catch (err) {\n            return Promise.reject(err.message);\n        }\n    };\n    /**\n     * Make a DEL request\n     * @param {string} apiName - The api name of the request\n     * @param {string} path - The path of the request\n     * @param {json} [init] - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestAPIClass.prototype.del = function (apiName, path, init) {\n        try {\n            var apiInfo = this.getEndpointInfo(apiName, path);\n            var cancellableToken = this._api.getCancellableToken();\n            var initParams = Object.assign({}, init);\n            initParams.cancellableToken = cancellableToken;\n            var responsePromise = this._api.del(apiInfo, initParams);\n            this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n            return responsePromise;\n        }\n        catch (err) {\n            return Promise.reject(err.message);\n        }\n    };\n    /**\n     * Make a HEAD request\n     * @param {string} apiName - The api name of the request\n     * @param {string} path - The path of the request\n     * @param {json} [init] - Request extra params\n     * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    RestAPIClass.prototype.head = function (apiName, path, init) {\n        try {\n            var apiInfo = this.getEndpointInfo(apiName, path);\n            var cancellableToken = this._api.getCancellableToken();\n            var initParams = Object.assign({}, init);\n            initParams.cancellableToken = cancellableToken;\n            var responsePromise = this._api.head(apiInfo, initParams);\n            this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n            return responsePromise;\n        }\n        catch (err) {\n            return Promise.reject(err.message);\n        }\n    };\n    /**\n     * Checks to see if an error thrown is from an api request cancellation\n     * @param {any} error - Any error\n     * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n     */\n    RestAPIClass.prototype.isCancel = function (error) {\n        return this._api.isCancel(error);\n    };\n    /**\n     * Cancels an inflight request\n     * @param {any} request - request to cancel\n     * @return {boolean} - A boolean indicating if the request was cancelled\n     */\n    RestAPIClass.prototype.cancel = function (request, message) {\n        return this._api.cancel(request, message);\n    };\n    /**\n     * Check if the request has a corresponding cancel token in the WeakMap.\n     * @params request - The request promise\n     * @return if the request has a corresponding cancel token.\n     */\n    RestAPIClass.prototype.hasCancelToken = function (request) {\n        return this._api.hasCancelToken(request);\n    };\n    /**\n     * Getting endpoint for API\n     * @param {string} apiName - The name of the api\n     * @return {string} - The endpoint of the api\n     */\n    RestAPIClass.prototype.endpoint = function (apiName) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, this._api.endpoint(apiName)];\n            });\n        });\n    };\n    /**\n     * Getting endpoint info for API\n     * @param {string} apiName - The name of the api\n     * @param {string} path - The path of the api that is going to accessed\n     * @return {ApiInfo} - The endpoint information for that api-name\n     */\n    RestAPIClass.prototype.getEndpointInfo = function (apiName, path) {\n        var cloud_logic_array = this._options.endpoints;\n        if (!Array.isArray(cloud_logic_array)) {\n            throw new Error(\"API category not configured\");\n        }\n        var apiConfig = cloud_logic_array.find(function (api) { return api.name === apiName; });\n        if (!apiConfig) {\n            throw new Error(\"API \".concat(apiName, \" does not exist\"));\n        }\n        var response = {\n            endpoint: apiConfig.endpoint + path,\n        };\n        if (typeof apiConfig.region === 'string') {\n            response.region = apiConfig.region;\n        }\n        else if (typeof this._options.region === 'string') {\n            response.region = this._options.region;\n        }\n        if (typeof apiConfig.service === 'string') {\n            response.service = apiConfig.service || 'execute-api';\n        }\n        else {\n            response.service = 'execute-api';\n        }\n        if (typeof apiConfig.custom_header === 'function') {\n            response.custom_header = apiConfig.custom_header;\n        }\n        else {\n            response.custom_header = undefined;\n        }\n        return response;\n    };\n    return RestAPIClass;\n}());\nexport { RestAPIClass };\nexport var RestAPI = new RestAPIClass(null);\nAmplify.register(RestAPI);\n","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { InternalGraphQLAPIClass } from '@aws-amplify/api-graphql/internals';\nimport { RestAPIClass } from '@aws-amplify/api-rest';\nimport { Auth } from '@aws-amplify/auth';\nimport { Cache } from '@aws-amplify/cache';\nimport { Amplify, ApiAction, Category, Credentials, ConsoleLogger as Logger, } from '@aws-amplify/core';\nvar logger = new Logger('API');\n/**\n * @deprecated\n * Use RestApi or GraphQLAPI to reduce your application bundle size\n * Export Cloud Logic APIs\n */\nvar InternalAPIClass = /** @class */ (function () {\n    /**\n     * Initialize API with AWS configuration\n     * @param {Object} options - Configuration object for API\n     */\n    function InternalAPIClass(options) {\n        this.Auth = Auth;\n        this.Cache = Cache;\n        this.Credentials = Credentials;\n        this._options = options;\n        this._restApi = new RestAPIClass(options);\n        this._graphqlApi = new InternalGraphQLAPIClass(options);\n        logger.debug('API Options', this._options);\n    }\n    InternalAPIClass.prototype.getModuleName = function () {\n        return 'InternalAPI';\n    };\n    /**\n     * Configure API part with aws configurations\n     * @param {Object} config - Configuration of the API\n     * @return {Object} - The current configuration\n     */\n    InternalAPIClass.prototype.configure = function (options) {\n        this._options = Object.assign({}, this._options, options);\n        // Share Amplify instance with client for SSR\n        this._restApi.Credentials = this.Credentials;\n        this._graphqlApi.Auth = this.Auth;\n        this._graphqlApi.Cache = this.Cache;\n        this._graphqlApi.Credentials = this.Credentials;\n        var restAPIConfig = this._restApi.configure(this._options);\n        var graphQLAPIConfig = this._graphqlApi.configure(this._options);\n        return __assign(__assign({}, restAPIConfig), graphQLAPIConfig);\n    };\n    /**\n     * Make a GET request\n     * @param apiName - The api name of the request\n     * @param path - The path of the request\n     * @param [init] - Request extra params\n     * @return A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    InternalAPIClass.prototype.get = function (apiName, path, init) {\n        return this._restApi.get(apiName, path, this.getInitWithCustomUserAgentDetails(init, ApiAction.Get));\n    };\n    /**\n     * Make a POST request\n     * @param apiName - The api name of the request\n     * @param path - The path of the request\n     * @param [init] - Request extra params\n     * @return A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    InternalAPIClass.prototype.post = function (apiName, path, init) {\n        return this._restApi.post(apiName, path, this.getInitWithCustomUserAgentDetails(init, ApiAction.Post));\n    };\n    /**\n     * Make a PUT request\n     * @param apiName - The api name of the request\n     * @param path - The path of the request\n     * @param [init] - Request extra params\n     * @return A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    InternalAPIClass.prototype.put = function (apiName, path, init) {\n        return this._restApi.put(apiName, path, this.getInitWithCustomUserAgentDetails(init, ApiAction.Put));\n    };\n    /**\n     * Make a PATCH request\n     * @param apiName - The api name of the request\n     * @param path - The path of the request\n     * @param [init] - Request extra params\n     * @return A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    InternalAPIClass.prototype.patch = function (apiName, path, init) {\n        return this._restApi.patch(apiName, path, this.getInitWithCustomUserAgentDetails(init, ApiAction.Patch));\n    };\n    /**\n     * Make a DEL request\n     * @param apiName - The api name of the request\n     * @param path - The path of the request\n     * @param [init] - Request extra params\n     * @return A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    InternalAPIClass.prototype.del = function (apiName, path, init) {\n        return this._restApi.del(apiName, path, this.getInitWithCustomUserAgentDetails(init, ApiAction.Del));\n    };\n    /**\n     * Make a HEAD request\n     * @param apiName - The api name of the request\n     * @param path - The path of the request\n     * @param [init] - Request extra params\n     * @return A promise that resolves to an object with response status and JSON data, if successful.\n     */\n    InternalAPIClass.prototype.head = function (apiName, path, init) {\n        return this._restApi.head(apiName, path, this.getInitWithCustomUserAgentDetails(init, ApiAction.Head));\n    };\n    /**\n     * Checks to see if an error thrown is from an api request cancellation\n     * @param error - Any error\n     * @return If the error was from an api request cancellation\n     */\n    InternalAPIClass.prototype.isCancel = function (error) {\n        return this._restApi.isCancel(error);\n    };\n    /**\n     * Cancels an inflight request for either a GraphQL request or a Rest API request.\n     * @param request - request to cancel\n     * @param [message] - custom error message\n     * @return If the request was cancelled\n     */\n    InternalAPIClass.prototype.cancel = function (request, message) {\n        if (this._restApi.hasCancelToken(request)) {\n            return this._restApi.cancel(request, message);\n        }\n        else if (this._graphqlApi.hasCancelToken(request)) {\n            return this._graphqlApi.cancel(request, message);\n        }\n        return false;\n    };\n    InternalAPIClass.prototype.getInitWithCustomUserAgentDetails = function (init, action) {\n        var customUserAgentDetails = {\n            category: Category.API,\n            action: action,\n        };\n        var initParams = __assign(__assign({}, init), { customUserAgentDetails: customUserAgentDetails });\n        return initParams;\n    };\n    /**\n     * Getting endpoint for API\n     * @param apiName - The name of the api\n     * @return The endpoint of the api\n     */\n    InternalAPIClass.prototype.endpoint = function (apiName) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, this._restApi.endpoint(apiName)];\n            });\n        });\n    };\n    /**\n     * to get the operation type\n     * @param operation\n     */\n    InternalAPIClass.prototype.getGraphqlOperationType = function (operation) {\n        return this._graphqlApi.getGraphqlOperationType(operation);\n    };\n    InternalAPIClass.prototype.graphql = function (options, additionalHeaders, customUserAgentDetails) {\n        var apiUserAgentDetails = __assign({ category: Category.API, action: ApiAction.GraphQl }, customUserAgentDetails);\n        return this._graphqlApi.graphql(options, additionalHeaders, apiUserAgentDetails);\n    };\n    return InternalAPIClass;\n}());\nexport { InternalAPIClass };\nexport var InternalAPI = new InternalAPIClass(null);\nAmplify.register(InternalAPI);\n","import { __extends } from \"tslib\";\nimport { Amplify, ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { InternalAPIClass } from './internals/InternalAPI';\nvar logger = new Logger('API');\n/**\n * @deprecated\n * Use RestApi or GraphQLAPI to reduce your application bundle size\n * Export Cloud Logic APIs\n */\nvar APIClass = /** @class */ (function (_super) {\n    __extends(APIClass, _super);\n    function APIClass() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    APIClass.prototype.getModuleName = function () {\n        return 'API';\n    };\n    APIClass.prototype.graphql = function (options, additionalHeaders) {\n        return _super.prototype.graphql.call(this, options, additionalHeaders);\n    };\n    return APIClass;\n}(InternalAPIClass));\nexport { APIClass };\nexport var API = new APIClass(null);\nAmplify.register(API);\n","import { __extends } from \"tslib\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { InternalGraphQLAPIClass } from './internals';\nexport var graphqlOperation = function (query, variables, authToken) {\n    if (variables === void 0) { variables = {}; }\n    return ({\n        query: query,\n        variables: variables,\n        authToken: authToken,\n    });\n};\n/**\n * Export Cloud Logic APIs\n */\nvar GraphQLAPIClass = /** @class */ (function (_super) {\n    __extends(GraphQLAPIClass, _super);\n    function GraphQLAPIClass() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    GraphQLAPIClass.prototype.getModuleName = function () {\n        return 'GraphQLAPI';\n    };\n    /**\n     * Executes a GraphQL operation\n     *\n     * @param options - GraphQL Options\n     * @param [additionalHeaders] - headers to merge in after any `graphql_headers` set in the config\n     * @returns An Observable if the query is a subscription query, else a promise of the graphql result.\n     */\n    GraphQLAPIClass.prototype.graphql = function (options, additionalHeaders) {\n        return _super.prototype.graphql.call(this, options, additionalHeaders);\n    };\n    return GraphQLAPIClass;\n}(InternalGraphQLAPIClass));\nexport { GraphQLAPIClass };\nexport var GraphQLAPI = new GraphQLAPIClass(null);\nAmplify.register(GraphQLAPI);\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const getRequests = /* GraphQL */ `\n  query GetRequests($id: ID!) {\n    getRequests(id: $id) {\n      id\n      email\n      accountId\n      accountName\n      role\n      roleId\n      startTime\n      duration\n      justification\n      status\n      comment\n      username\n      approver\n      approverId\n      approvers\n      approver_ids\n      revoker\n      revokerId\n      endTime\n      ticketNo\n      revokeComment\n      session_duration\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\nexport const listRequests = /* GraphQL */ `\n  query ListRequests(\n    $filter: ModelRequestsFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listRequests(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        email\n        accountId\n        accountName\n        role\n        roleId\n        startTime\n        duration\n        justification\n        status\n        comment\n        username\n        approver\n        approverId\n        approvers\n        approver_ids\n        revoker\n        revokerId\n        endTime\n        ticketNo\n        revokeComment\n        session_duration\n        createdAt\n        updatedAt\n        owner\n        __typename\n      }\n      nextToken\n      __typename\n    }\n  }\n`;\nexport const requestByEmailAndStatus = /* GraphQL */ `\n  query RequestByEmailAndStatus(\n    $email: String!\n    $status: ModelStringKeyConditionInput\n    $sortDirection: ModelSortDirection\n    $filter: ModelrequestsFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    requestByEmailAndStatus(\n      email: $email\n      status: $status\n      sortDirection: $sortDirection\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n    ) {\n      items {\n        id\n        email\n        accountId\n        accountName\n        role\n        roleId\n        startTime\n        duration\n        justification\n        status\n        comment\n        username\n        approver\n        approverId\n        approvers\n        approver_ids\n        revoker\n        revokerId\n        endTime\n        ticketNo\n        revokeComment\n        session_duration\n        createdAt\n        updatedAt\n        owner\n        __typename\n      }\n      nextToken\n      __typename\n    }\n  }\n`;\nexport const requestByApproverAndStatus = /* GraphQL */ `\n  query RequestByApproverAndStatus(\n    $approverId: String!\n    $status: ModelStringKeyConditionInput\n    $sortDirection: ModelSortDirection\n    $filter: ModelrequestsFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    requestByApproverAndStatus(\n      approverId: $approverId\n      status: $status\n      sortDirection: $sortDirection\n      filter: $filter\n      limit: $limit\n      nextToken: $nextToken\n    ) {\n      items {\n        id\n        email\n        accountId\n        accountName\n        role\n        roleId\n        startTime\n        duration\n        justification\n        status\n        comment\n        username\n        approver\n        approverId\n        approvers\n        approver_ids\n        revoker\n        revokerId\n        endTime\n        ticketNo\n        revokeComment\n        session_duration\n        createdAt\n        updatedAt\n        owner\n        __typename\n      }\n      nextToken\n      __typename\n    }\n  }\n`;\nexport const getSessions = /* GraphQL */ `\n  query GetSessions($id: ID!) {\n    getSessions(id: $id) {\n      id\n      startTime\n      endTime\n      username\n      accountId\n      role\n      approver_ids\n      queryId\n      expireAt\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\nexport const listSessions = /* GraphQL */ `\n  query ListSessions(\n    $filter: ModelSessionsFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listSessions(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        startTime\n        endTime\n        username\n        accountId\n        role\n        approver_ids\n        queryId\n        expireAt\n        createdAt\n        updatedAt\n        owner\n        __typename\n      }\n      nextToken\n      __typename\n    }\n  }\n`;\nexport const getApprovers = /* GraphQL */ `\n  query GetApprovers($id: ID!) {\n    getApprovers(id: $id) {\n      id\n      name\n      type\n      approvers\n      groupIds\n      ticketNo\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listApprovers = /* GraphQL */ `\n  query ListApprovers(\n    $filter: ModelApproversFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listApprovers(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        name\n        type\n        approvers\n        groupIds\n        ticketNo\n        modifiedBy\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      __typename\n    }\n  }\n`;\nexport const getSettings = /* GraphQL */ `\n  query GetSettings($id: ID!) {\n    getSettings(id: $id) {\n      id\n      duration\n      expiry\n      comments\n      ticketNo\n      approval\n      modifiedBy\n      sesNotificationsEnabled\n      snsNotificationsEnabled\n      slackNotificationsEnabled\n      sesSourceEmail\n      sesSourceArn\n      slackToken\n      teamAdminGroup\n      teamAuditorGroup\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listSettings = /* GraphQL */ `\n  query ListSettings(\n    $filter: ModelSettingsFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listSettings(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        duration\n        expiry\n        comments\n        ticketNo\n        approval\n        modifiedBy\n        sesNotificationsEnabled\n        snsNotificationsEnabled\n        slackNotificationsEnabled\n        sesSourceEmail\n        sesSourceArn\n        slackToken\n        teamAdminGroup\n        teamAuditorGroup\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      __typename\n    }\n  }\n`;\nexport const getEligibility = /* GraphQL */ `\n  query GetEligibility($id: ID!) {\n    getEligibility(id: $id) {\n      id\n      name\n      type\n      accounts {\n        name\n        id\n        __typename\n      }\n      ous {\n        name\n        id\n        __typename\n      }\n      permissions {\n        name\n        id\n        __typename\n      }\n      ticketNo\n      approvalRequired\n      duration\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const listEligibilities = /* GraphQL */ `\n  query ListEligibilities(\n    $filter: ModelEligibilityFilterInput\n    $limit: Int\n    $nextToken: String\n  ) {\n    listEligibilities(filter: $filter, limit: $limit, nextToken: $nextToken) {\n      items {\n        id\n        name\n        type\n        accounts {\n          name\n          id\n          __typename\n        }\n        ous {\n          name\n          id\n          __typename\n        }\n        permissions {\n          name\n          id\n          __typename\n        }\n        ticketNo\n        approvalRequired\n        duration\n        modifiedBy\n        createdAt\n        updatedAt\n        __typename\n      }\n      nextToken\n      __typename\n    }\n  }\n`;\nexport const getAccounts = /* GraphQL */ `\n  query GetAccounts {\n    getAccounts {\n      name\n      id\n      __typename\n    }\n  }\n`;\nexport const getOUs = /* GraphQL */ `\n  query GetOUs {\n    getOUs\n  }\n`;\nexport const getOU = /* GraphQL */ `\n  query GetOU($id: String) {\n    getOU(id: $id) {\n      Id\n      __typename\n    }\n  }\n`;\nexport const getPermissions = /* GraphQL */ `\n  query GetPermissions {\n    getPermissions {\n      id\n      permissions {\n        Name\n        Arn\n        Duration\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const getMgmtPermissions = /* GraphQL */ `\n  query GetMgmtPermissions {\n    getMgmtPermissions {\n      permissions\n      __typename\n    }\n  }\n`;\nexport const getGroups = /* GraphQL */ `\n  query GetGroups {\n    getGroups {\n      groups\n      userId\n      groupIds\n      __typename\n    }\n  }\n`;\nexport const getIdCGroups = /* GraphQL */ `\n  query GetIdCGroups {\n    getIdCGroups {\n      GroupId\n      DisplayName\n      __typename\n    }\n  }\n`;\nexport const getUsers = /* GraphQL */ `\n  query GetUsers {\n    getUsers {\n      UserName\n      UserId\n      __typename\n    }\n  }\n`;\nexport const getLogs = /* GraphQL */ `\n  query GetLogs($queryId: String) {\n    getLogs(queryId: $queryId) {\n      eventName\n      eventSource\n      eventID\n      eventTime\n      __typename\n    }\n  }\n`;\nexport const getUserPolicy = /* GraphQL */ `\n  query GetUserPolicy($userId: String, $groupIds: [String]) {\n    getUserPolicy(userId: $userId, groupIds: $groupIds) {\n      id\n      policy {\n        accounts {\n          name\n          id\n          __typename\n        }\n        permissions {\n          name\n          id\n          __typename\n        }\n        approvalRequired\n        duration\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const listGroups = /* GraphQL */ `\n  query ListGroups($groupIds: [String]) {\n    listGroups(groupIds: $groupIds) {\n      members\n      __typename\n    }\n  }\n`;\nexport const updateRequestData = /* GraphQL */ `\n  query UpdateRequestData {\n    updateRequestData {\n      id\n      email\n      accountId\n      accountName\n      role\n      roleId\n      startTime\n      duration\n      justification\n      status\n      comment\n      username\n      approver\n      approverId\n      approvers\n      approver_ids\n      revoker\n      revokerId\n      endTime\n      ticketNo\n      revokeComment\n      session_duration\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\nexport const validateRequest = /* GraphQL */ `\n  query ValidateRequest {\n    validateRequest {\n      id\n      email\n      accountId\n      accountName\n      role\n      roleId\n      startTime\n      duration\n      justification\n      status\n      comment\n      username\n      approver\n      approverId\n      approvers\n      approver_ids\n      revoker\n      revokerId\n      endTime\n      ticketNo\n      revokeComment\n      session_duration\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const createRequests = /* GraphQL */ `\n  mutation CreateRequests(\n    $input: CreateRequestsInput!\n    $condition: ModelRequestsConditionInput\n  ) {\n    createRequests(input: $input, condition: $condition) {\n      id\n      email\n      accountId\n      accountName\n      role\n      roleId\n      startTime\n      duration\n      justification\n      status\n      comment\n      username\n      approver\n      approverId\n      approvers\n      approver_ids\n      revoker\n      revokerId\n      endTime\n      ticketNo\n      revokeComment\n      session_duration\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\nexport const updateRequests = /* GraphQL */ `\n  mutation UpdateRequests(\n    $input: UpdateRequestsInput!\n    $condition: ModelRequestsConditionInput\n  ) {\n    updateRequests(input: $input, condition: $condition) {\n      id\n      email\n      accountId\n      accountName\n      role\n      roleId\n      startTime\n      duration\n      justification\n      status\n      comment\n      username\n      approver\n      approverId\n      approvers\n      approver_ids\n      revoker\n      revokerId\n      endTime\n      ticketNo\n      revokeComment\n      session_duration\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\nexport const deleteRequests = /* GraphQL */ `\n  mutation DeleteRequests(\n    $input: DeleteRequestsInput!\n    $condition: ModelRequestsConditionInput\n  ) {\n    deleteRequests(input: $input, condition: $condition) {\n      id\n      email\n      accountId\n      accountName\n      role\n      roleId\n      startTime\n      duration\n      justification\n      status\n      comment\n      username\n      approver\n      approverId\n      approvers\n      approver_ids\n      revoker\n      revokerId\n      endTime\n      ticketNo\n      revokeComment\n      session_duration\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\nexport const createSessions = /* GraphQL */ `\n  mutation CreateSessions(\n    $input: CreateSessionsInput!\n    $condition: ModelSessionsConditionInput\n  ) {\n    createSessions(input: $input, condition: $condition) {\n      id\n      startTime\n      endTime\n      username\n      accountId\n      role\n      approver_ids\n      queryId\n      expireAt\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\nexport const updateSessions = /* GraphQL */ `\n  mutation UpdateSessions(\n    $input: UpdateSessionsInput!\n    $condition: ModelSessionsConditionInput\n  ) {\n    updateSessions(input: $input, condition: $condition) {\n      id\n      startTime\n      endTime\n      username\n      accountId\n      role\n      approver_ids\n      queryId\n      expireAt\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\nexport const deleteSessions = /* GraphQL */ `\n  mutation DeleteSessions(\n    $input: DeleteSessionsInput!\n    $condition: ModelSessionsConditionInput\n  ) {\n    deleteSessions(input: $input, condition: $condition) {\n      id\n      startTime\n      endTime\n      username\n      accountId\n      role\n      approver_ids\n      queryId\n      expireAt\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\nexport const createApprovers = /* GraphQL */ `\n  mutation CreateApprovers(\n    $input: CreateApproversInput!\n    $condition: ModelApproversConditionInput\n  ) {\n    createApprovers(input: $input, condition: $condition) {\n      id\n      name\n      type\n      approvers\n      groupIds\n      ticketNo\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateApprovers = /* GraphQL */ `\n  mutation UpdateApprovers(\n    $input: UpdateApproversInput!\n    $condition: ModelApproversConditionInput\n  ) {\n    updateApprovers(input: $input, condition: $condition) {\n      id\n      name\n      type\n      approvers\n      groupIds\n      ticketNo\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteApprovers = /* GraphQL */ `\n  mutation DeleteApprovers(\n    $input: DeleteApproversInput!\n    $condition: ModelApproversConditionInput\n  ) {\n    deleteApprovers(input: $input, condition: $condition) {\n      id\n      name\n      type\n      approvers\n      groupIds\n      ticketNo\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createSettings = /* GraphQL */ `\n  mutation CreateSettings(\n    $input: CreateSettingsInput!\n    $condition: ModelSettingsConditionInput\n  ) {\n    createSettings(input: $input, condition: $condition) {\n      id\n      duration\n      expiry\n      comments\n      ticketNo\n      approval\n      modifiedBy\n      sesNotificationsEnabled\n      snsNotificationsEnabled\n      slackNotificationsEnabled\n      sesSourceEmail\n      sesSourceArn\n      slackToken\n      teamAdminGroup\n      teamAuditorGroup\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateSettings = /* GraphQL */ `\n  mutation UpdateSettings(\n    $input: UpdateSettingsInput!\n    $condition: ModelSettingsConditionInput\n  ) {\n    updateSettings(input: $input, condition: $condition) {\n      id\n      duration\n      expiry\n      comments\n      ticketNo\n      approval\n      modifiedBy\n      sesNotificationsEnabled\n      snsNotificationsEnabled\n      slackNotificationsEnabled\n      sesSourceEmail\n      sesSourceArn\n      slackToken\n      teamAdminGroup\n      teamAuditorGroup\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteSettings = /* GraphQL */ `\n  mutation DeleteSettings(\n    $input: DeleteSettingsInput!\n    $condition: ModelSettingsConditionInput\n  ) {\n    deleteSettings(input: $input, condition: $condition) {\n      id\n      duration\n      expiry\n      comments\n      ticketNo\n      approval\n      modifiedBy\n      sesNotificationsEnabled\n      snsNotificationsEnabled\n      slackNotificationsEnabled\n      sesSourceEmail\n      sesSourceArn\n      slackToken\n      teamAdminGroup\n      teamAuditorGroup\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const createEligibility = /* GraphQL */ `\n  mutation CreateEligibility(\n    $input: CreateEligibilityInput!\n    $condition: ModelEligibilityConditionInput\n  ) {\n    createEligibility(input: $input, condition: $condition) {\n      id\n      name\n      type\n      accounts {\n        name\n        id\n        __typename\n      }\n      ous {\n        name\n        id\n        __typename\n      }\n      permissions {\n        name\n        id\n        __typename\n      }\n      ticketNo\n      approvalRequired\n      duration\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const updateEligibility = /* GraphQL */ `\n  mutation UpdateEligibility(\n    $input: UpdateEligibilityInput!\n    $condition: ModelEligibilityConditionInput\n  ) {\n    updateEligibility(input: $input, condition: $condition) {\n      id\n      name\n      type\n      accounts {\n        name\n        id\n        __typename\n      }\n      ous {\n        name\n        id\n        __typename\n      }\n      permissions {\n        name\n        id\n        __typename\n      }\n      ticketNo\n      approvalRequired\n      duration\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const deleteEligibility = /* GraphQL */ `\n  mutation DeleteEligibility(\n    $input: DeleteEligibilityInput!\n    $condition: ModelEligibilityConditionInput\n  ) {\n    deleteEligibility(input: $input, condition: $condition) {\n      id\n      name\n      type\n      accounts {\n        name\n        id\n        __typename\n      }\n      ous {\n        name\n        id\n        __typename\n      }\n      permissions {\n        name\n        id\n        __typename\n      }\n      ticketNo\n      approvalRequired\n      duration\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const publishPolicy = /* GraphQL */ `\n  mutation PublishPolicy($result: PolicyInput) {\n    publishPolicy(result: $result) {\n      id\n      policy {\n        accounts {\n          name\n          id\n          __typename\n        }\n        permissions {\n          name\n          id\n          __typename\n        }\n        approvalRequired\n        duration\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const publishOUs = /* GraphQL */ `\n  mutation PublishOUs($result: OUsInput) {\n    publishOUs(result: $result) {\n      ous\n      __typename\n    }\n  }\n`;\nexport const publishPermissions = /* GraphQL */ `\n  mutation PublishPermissions($result: PermissionInput) {\n    publishPermissions(result: $result) {\n      id\n      permissions {\n        Name\n        Arn\n        Duration\n        __typename\n      }\n      __typename\n    }\n  }\n`;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport { API, graphqlOperation } from \"aws-amplify\";\nimport {\n  getAccounts,\n  getPermissions,\n  getApprovers,\n  listRequests,\n  getRequests,\n  getSessions,\n  listApprovers,\n  getLogs,\n  getOUs,\n  getOU,\n  requestByEmailAndStatus,\n  getGroups,\n  getIdCGroups,\n  getUsers,\n  listEligibilities,\n  getEligibility,\n  listGroups,\n  getSettings,\n  getMgmtPermissions,\n  getUserPolicy\n} from \"../../graphql/queries\";\nimport {\n  createRequests,\n  createSessions,\n  deleteSessions,\n  updateRequests,\n  createApprovers,\n  deleteApprovers,\n  updateApprovers,\n  createEligibility,\n  deleteEligibility,\n  updateEligibility,\n  createSettings,\n  updateSettings\n} from \"../../graphql/mutations\";\n\nexport async function fetchAccounts() {\n  try {\n    const accounts = await API.graphql(graphqlOperation(getAccounts));\n    const data = await accounts.data.getAccounts;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching accounts\");\n  }\n}\n\nexport async function fetchPermissions() {\n  try {\n    const permissions = await API.graphql(graphqlOperation(getPermissions));\n    const data = await permissions.data.getPermissions;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching permissions\", err);\n  }\n}\n\nexport async function getMgmtAccountPs() {\n  try {\n    const permissions = await API.graphql(graphqlOperation(getMgmtPermissions));\n    const data = await permissions.data.getMgmtPermissions;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching permissions\");\n  }\n}\n\nexport async function getUserRequests(email) {\n  let nextToken = null;\n  let data = [];\n  try {\n    do {\n    const requests = await API.graphql(\n      graphqlOperation(requestByEmailAndStatus, {\n        email: email,nextToken\n      })\n    );\n    data = data.concat(requests.data.requestByEmailAndStatus.items);\n    nextToken = requests.data.requestByEmailAndStatus.nextToken;\n  } while (nextToken);\n    return data;\n  } catch (err) {\n    console.log(\"error fetching requests\");\n    return {\"error\":err}\n  }\n}\n\nexport async function fetchOUs() {\n  try {\n    const OU = await API.graphql(graphqlOperation(getOUs));\n    const data = await OU.data.getOUs;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching OUs\");\n    return {\"error\":err}\n  }\n}\n\nexport async function fetchOU(id) {\n  try {\n    const OU = await API.graphql(\n      graphqlOperation(getOU, {\n        id: id,\n      })\n    );\n    const data = await OU.data.getOU;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching OU\");\n  }\n}\nexport async function getGroupMemberships(id) {\n  try {\n    const members = await API.graphql(\n      graphqlOperation(listGroups, {\n        groupIds: id,\n      })\n    );\n    const data = await members.data.listGroups;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching members\");\n  }\n}\n\nexport async function fetchGroups() {\n  try {\n    const groups = await API.graphql(graphqlOperation(getGroups));\n    const data = await groups.data.getGroups;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching Groups\");\n  }\n}\n\nexport async function fetchIdCGroups() {\n  try {\n    const groups = await API.graphql(graphqlOperation(getIdCGroups));\n    const data = await groups.data.getIdCGroups;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching IdC Groups\");\n  }\n}\n\nexport async function fetchUsers() {\n  try {\n    const groups = await API.graphql(graphqlOperation(getUsers));\n    const data = await groups.data.getUsers;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching IdC Groups\");\n  }\n}\n\nexport async function getSessionList() {\n  let nextToken = null;\n  let data = [];\n  try {\n    do {\n    const request = await API.graphql(graphqlOperation(listRequests, {\n      nextToken\n    }));\n    data = data.concat(request.data.listRequests.items);\n    nextToken = request.data.listRequests.nextToken;\n  } while (nextToken);\n    return data;\n  } catch (err) {\n    console.log(\"error fetching sessions\");\n    return {\"error\":err}\n  }\n}\n\nexport async function getRequest(id) {\n  try {\n    const request = await API.graphql(\n      graphqlOperation(getRequests, {\n        id: id,\n      })\n    );\n    const data = await request.data.getRequests;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching request\");\n  }\n}\n\nexport async function getAllApprovers() {\n  let nextToken = null;\n  let data = [];\n  try {\n    do{\n    const request = await API.graphql(graphqlOperation(listApprovers, {nextToken}));\n    data = data.concat(request.data.listApprovers.items);\n    nextToken = request.data.listApprovers.nextToken;\n    } while (nextToken);\n    return data;\n  } catch (err) {\n    console.log(\"error fetching approvers\");\n    return {\"error\":err}\n  }\n}\n\nexport async function sessions(filter) {\n  let nextToken = null;\n  let data = [];\n  try {\n    do {\n    const request = await API.graphql(\n      graphqlOperation(listRequests, { filter: filter, nextToken })\n    );\n    data = data.concat(request.data.listRequests.items);\n    nextToken = request.data.listRequests.nextToken;\n  } while (nextToken);\n    return data;\n  } catch (err) {\n    console.log(\"error fetching sessions\");\n    return {\"error\":err}\n  }\n}\n\nexport async function fetchLogs(args) {\n  try {\n    const logs = await API.graphql(graphqlOperation(getLogs, args));\n    const data = await logs.data.getLogs;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching logs\");\n  }\n}\n\nexport async function fetchPolicy(args) {\n  try {\n    const entitlement = await API.graphql(graphqlOperation(getUserPolicy, args));\n    const data = await entitlement.data.getUserPolicy;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching Entitlement\");\n  }\n}\n\n\n// Mutations\nexport async function updateStatus(data) {\n  try {\n    const req = await API.graphql(\n      graphqlOperation(updateRequests, { input: data })\n    );\n    return req.data.updateRequests;\n  } catch (err) {\n    console.log(\"error updating status\");\n  }\n}\n\nexport async function requestTeam(data) {\n  try {\n    const req = await API.graphql(\n      graphqlOperation(createRequests, { input: data })\n    );\n    return req.data.createRequests.id;\n  } catch (err) {\n    console.log(\"error creating request\");\n  }\n}\nexport async function getSessionLogs(data) {\n  try {\n    const req = await API.graphql(\n      graphqlOperation(createSessions, { input: data })\n    );\n    return req.data.createSessions.id;\n  } catch (err) {\n    console.log(\"error creating session Logs\");\n  }\n}\n\nexport async function deleteSessionLogs(data) {\n  try {\n    const req = await API.graphql(\n      graphqlOperation(deleteSessions, { input: data })\n    );\n    return req.data.deleteSessions;\n  } catch (err) {\n    console.log(\"error deleting session log\");\n  }\n}\n\nexport async function getSession(id) {\n  try {\n    const request = await API.graphql(\n      graphqlOperation(getSessions, {\n        id: id,\n      })\n    );\n    const data = await request.data.getSessions;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching session log\");\n  }\n}\n\nexport async function addApprovers(data) {\n  try {\n    const req = await API.graphql(\n      graphqlOperation(createApprovers, { input: data })\n    );\n    return req.data.createApprovers.Id;\n  } catch (err) {\n    console.log(\"error adding Approvers\");\n  }\n}\n\nexport async function delApprover(data) {\n  try {\n    const req = await API.graphql(\n      graphqlOperation(deleteApprovers, { input: data })\n    );\n    return req.data.deleteApprovers;\n  } catch (err) {\n    console.log(\"error deleting approver\");\n  }\n}\n\nexport async function editApprover(data) {\n  try {\n    const req = await API.graphql(\n      graphqlOperation(updateApprovers, { input: data })\n    );\n    return req.data.updateApprovers;\n  } catch (err) {\n    console.log(\"error updating approver\");\n  }\n}\n\nexport async function fetchApprovers(id, type) {\n  try {\n    const approver = await API.graphql(\n      graphqlOperation(getApprovers, {\n        id: id,\n        type: type,\n      })\n    );\n    const data = await approver.data.getApprovers;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching approvers\");\n  }\n}\n\nexport async function addPolicy(data) {\n  try {\n    const req = await API.graphql(\n      graphqlOperation(createEligibility, { input: data })\n    );\n    return req.data.createEligibility.id;\n  } catch (err) {\n    console.log(\"error creating policy\");\n  }\n}\n\nexport async function delPolicy(data) {\n  try {\n    const req = await API.graphql(\n      graphqlOperation(deleteEligibility, { input: data })\n    );\n    return req.data.deleteEligibility;\n  } catch (err) {\n    console.log(\"error deleting policy\");\n  }\n}\n\nexport async function editPolicy(data) {\n  try {\n    const req = await API.graphql(\n      graphqlOperation(updateEligibility, { input: data })\n    );\n    return req.data.updateEligibility;\n  } catch (err) {\n    console.log(\"error updating policy\");\n  }\n}\n\nexport async function fetchEligibility(id) {\n  try {\n    const approver = await API.graphql(\n      graphqlOperation(getEligibility, {\n        id: id,\n      })\n    );\n    const data = await approver.data.getEligibility;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching eligibility\");\n  }\n}\n\nexport async function getAllEligibility() {\n  let nextToken = null;\n  let data = [];\n  try {\n    do {\n    const request = await API.graphql(graphqlOperation(listEligibilities, {\n      nextToken\n    }));\n    data = data.concat(request.data.listEligibilities.items);\n    nextToken = request.data.listEligibilities.nextToken;\n  } while (nextToken);\n    return data;\n  } catch (err) {\n    console.log(\"error fetching eligibility\");\n    return {\"error\":err}\n  }\n}\n\nexport async function getSetting(id) {\n  try {\n    const request = await API.graphql(\n      graphqlOperation(getSettings, {\n        id: id,\n      })\n    );\n    let data = await request.data.getSettings;\n    return data;\n  } catch (err) {\n    console.log(\"error fetching settings\");\n  }\n}\n\nexport async function createSetting(data) {\n  try {\n    const req = await API.graphql(\n      graphqlOperation(createSettings, { input: data })\n    );\n    return req.data.createSettings.id;\n  } catch (err) {\n    console.log(\"error creating settings\");\n  }\n}\nexport async function updateSetting(data) {\n  try {\n    const req = await API.graphql(\n      graphqlOperation(updateSettings, { input: data })\n    );\n    return req.data.updateSettings;\n  } catch (err) {\n    console.log(\"error updating settings\");\n  }\n}\n\nexport async function revokePim(data) {\n  try {\n    updateRequests(data).then(() => {});\n  } catch (err) {\n    console.log(\"error revoking request\");\n  }\n}\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const onCreateApprovers = /* GraphQL */ `\n  subscription OnCreateApprovers(\n    $filter: ModelSubscriptionApproversFilterInput\n  ) {\n    onCreateApprovers(filter: $filter) {\n      id\n      name\n      type\n      approvers\n      groupIds\n      ticketNo\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateApprovers = /* GraphQL */ `\n  subscription OnUpdateApprovers(\n    $filter: ModelSubscriptionApproversFilterInput\n  ) {\n    onUpdateApprovers(filter: $filter) {\n      id\n      name\n      type\n      approvers\n      groupIds\n      ticketNo\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteApprovers = /* GraphQL */ `\n  subscription OnDeleteApprovers(\n    $filter: ModelSubscriptionApproversFilterInput\n  ) {\n    onDeleteApprovers(filter: $filter) {\n      id\n      name\n      type\n      approvers\n      groupIds\n      ticketNo\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateSettings = /* GraphQL */ `\n  subscription OnCreateSettings($filter: ModelSubscriptionSettingsFilterInput) {\n    onCreateSettings(filter: $filter) {\n      id\n      duration\n      expiry\n      comments\n      ticketNo\n      approval\n      modifiedBy\n      sesNotificationsEnabled\n      snsNotificationsEnabled\n      slackNotificationsEnabled\n      sesSourceEmail\n      sesSourceArn\n      slackToken\n      teamAdminGroup\n      teamAuditorGroup\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateSettings = /* GraphQL */ `\n  subscription OnUpdateSettings($filter: ModelSubscriptionSettingsFilterInput) {\n    onUpdateSettings(filter: $filter) {\n      id\n      duration\n      expiry\n      comments\n      ticketNo\n      approval\n      modifiedBy\n      sesNotificationsEnabled\n      snsNotificationsEnabled\n      slackNotificationsEnabled\n      sesSourceEmail\n      sesSourceArn\n      slackToken\n      teamAdminGroup\n      teamAuditorGroup\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteSettings = /* GraphQL */ `\n  subscription OnDeleteSettings($filter: ModelSubscriptionSettingsFilterInput) {\n    onDeleteSettings(filter: $filter) {\n      id\n      duration\n      expiry\n      comments\n      ticketNo\n      approval\n      modifiedBy\n      sesNotificationsEnabled\n      snsNotificationsEnabled\n      slackNotificationsEnabled\n      sesSourceEmail\n      sesSourceArn\n      slackToken\n      teamAdminGroup\n      teamAuditorGroup\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onCreateEligibility = /* GraphQL */ `\n  subscription OnCreateEligibility(\n    $filter: ModelSubscriptionEligibilityFilterInput\n  ) {\n    onCreateEligibility(filter: $filter) {\n      id\n      name\n      type\n      accounts {\n        name\n        id\n        __typename\n      }\n      ous {\n        name\n        id\n        __typename\n      }\n      permissions {\n        name\n        id\n        __typename\n      }\n      ticketNo\n      approvalRequired\n      duration\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateEligibility = /* GraphQL */ `\n  subscription OnUpdateEligibility(\n    $filter: ModelSubscriptionEligibilityFilterInput\n  ) {\n    onUpdateEligibility(filter: $filter) {\n      id\n      name\n      type\n      accounts {\n        name\n        id\n        __typename\n      }\n      ous {\n        name\n        id\n        __typename\n      }\n      permissions {\n        name\n        id\n        __typename\n      }\n      ticketNo\n      approvalRequired\n      duration\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onDeleteEligibility = /* GraphQL */ `\n  subscription OnDeleteEligibility(\n    $filter: ModelSubscriptionEligibilityFilterInput\n  ) {\n    onDeleteEligibility(filter: $filter) {\n      id\n      name\n      type\n      accounts {\n        name\n        id\n        __typename\n      }\n      ous {\n        name\n        id\n        __typename\n      }\n      permissions {\n        name\n        id\n        __typename\n      }\n      ticketNo\n      approvalRequired\n      duration\n      modifiedBy\n      createdAt\n      updatedAt\n      __typename\n    }\n  }\n`;\nexport const onUpdateRequests = /* GraphQL */ `\n  subscription OnUpdateRequests {\n    onUpdateRequests {\n      id\n      email\n      accountId\n      accountName\n      role\n      roleId\n      startTime\n      duration\n      justification\n      status\n      comment\n      username\n      approver\n      approverId\n      approvers\n      approver_ids\n      revoker\n      revokerId\n      endTime\n      ticketNo\n      revokeComment\n      session_duration\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\nexport const onCreateRequests = /* GraphQL */ `\n  subscription OnCreateRequests {\n    onCreateRequests {\n      id\n      email\n      accountId\n      accountName\n      role\n      roleId\n      startTime\n      duration\n      justification\n      status\n      comment\n      username\n      approver\n      approverId\n      approvers\n      approver_ids\n      revoker\n      revokerId\n      endTime\n      ticketNo\n      revokeComment\n      session_duration\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\nexport const onUpdateSessions = /* GraphQL */ `\n  subscription OnUpdateSessions($id: String) {\n    onUpdateSessions(id: $id) {\n      id\n      startTime\n      endTime\n      username\n      accountId\n      role\n      approver_ids\n      queryId\n      expireAt\n      createdAt\n      updatedAt\n      owner\n      __typename\n    }\n  }\n`;\nexport const onPublishPolicy = /* GraphQL */ `\n  subscription OnPublishPolicy {\n    onPublishPolicy {\n      id\n      policy {\n        accounts {\n          name\n          id\n          __typename\n        }\n        permissions {\n          name\n          id\n          __typename\n        }\n        approvalRequired\n        duration\n        __typename\n      }\n      __typename\n    }\n  }\n`;\nexport const onPublishOUs = /* GraphQL */ `\n  subscription OnPublishOUs {\n    onPublishOUs {\n      ous\n      __typename\n    }\n  }\n`;\nexport const onPublishPermissions = /* GraphQL */ `\n  subscription OnPublishPermissions {\n    onPublishPermissions {\n      id\n      permissions {\n        Name\n        Arn\n        Duration\n        __typename\n      }\n      __typename\n    }\n  }\n`;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport Form from \"@awsui/components-react/form\";\nimport FormField from \"@awsui/components-react/form-field\";\nimport Input from \"@awsui/components-react/input\";\nimport Select from \"@awsui/components-react/select\";\nimport Container from \"@awsui/components-react/container\";\nimport Header from \"@awsui/components-react/header\";\nimport SpaceBetween from \"@awsui/components-react/space-between\";\nimport Button from \"@awsui/components-react/button\";\nimport Textarea from \"@awsui/components-react/textarea\";\nimport moment from \"moment\";\nimport { DatePicker } from \"antd\";\nimport \"../../index.css\";\nimport React, { useState, useEffect } from \"react\";\nimport {\n  getGroupMemberships,\n  requestTeam,\n  fetchApprovers,\n  fetchOU,\n  getSetting,\n  getMgmtAccountPs,\n  fetchPolicy,\n} from \"../Shared/RequestService\";\nimport { useHistory } from \"react-router-dom\";\nimport { API, graphqlOperation } from \"aws-amplify\";\nimport { onPublishPolicy } from \"../../graphql/subscriptions\";\nimport params from \"../../parameters.json\";\n\nfunction Request(props) {\n  const [email, setEmail] = useState(\"\");\n\n  const [item, setItem] = useState([]);\n\n  const [duration, setDuration] = useState(\"\");\n  const [durationError, setDurationError] = useState(\"\");\n\n  const [justification, setJustification] = useState(\"\");\n  const [justificationError, setJustificationError] = useState(\"\");\n\n  const [role, setRole] = useState([]);\n  const [roleError, setRoleError] = useState(\"\");\n\n  const [account, setAccount] = useState([]);\n  const [accountError, setAccountError] = useState(\"\");\n\n  const [time, setTime] = useState(\"\");\n  const [timeError, setTimeError] = useState(\"\");\n\n  const [ticketNo, setTicketNo] = useState(\"\");\n  const [ticketError, setTicketError] = useState(\"\");\n\n  const [accounts, setAccounts] = useState([]);\n  const [accountStatus, setAccountStatus] = useState(\"loading\");\n\n  const [permissions, setPermissions] = useState([]);\n  const [permissionStatus, setPermissionStatus] = useState(\"loading\");\n\n  const [submitLoading, setSubmitLoading] = useState(false);\n\n  const [mgmtPs, setMgmtPs] = useState([]);\n\n  const [maxDuration, setMaxDuration] = useState(9);\n  const [ticketRequired, setTicketRequired] = useState(true);\n  const [approvalRequired, setApprovalRequired] = useState(true);\n\n  const history = useHistory();\n\n  function concatenateAccounts(data) {\n    let allAccounts = data.map((item) => item.accounts);\n    allAccounts = [].concat.apply([], allAccounts);\n\n    let uniqueAccounts = new Set();\n    allAccounts.forEach((account) => {\n      uniqueAccounts.add(JSON.stringify(account));\n    });\n\n    return Array.from(uniqueAccounts).map((account) => JSON.parse(account));\n  }\n\n  function concatenatePermissions(data) {\n    let uniquePermissions = new Set();\n    data.forEach((permission) => {\n      uniquePermissions.add(JSON.stringify(permission));\n    });\n\n    return Array.from(uniquePermissions).map((permission) =>\n      JSON.parse(permission)\n    );\n  }\n\n  async function getDuration(accountId) {\n    setDuration(\"\");\n    const duration = item.map((data) => {\n      data.accounts.map((account, index) => {\n        if (account.id == accountId) {\n          setMaxDuration(data.duration);\n        }\n      });\n    });\n  }\n\n  async function getPermissions(accountId) {\n    let permissionData = [];\n    setRole([]);\n    const permissions = item.map((data) => {\n      data.accounts.map((account) => {\n        if (account.id == accountId) {\n          permissionData = permissionData.concat(data.permissions);\n        }\n      });\n    });\n    setPermissions(concatenatePermissions(permissionData));\n    return permissionData;\n  }\n\n  const getPolicy = () => {\n    let args = {\n      userId: props.userId,\n      groupIds: props.groupIds,\n    };\n    fetchPolicy(args).then((data) => {\n      const subscription = API.graphql(\n        graphqlOperation(onPublishPolicy)\n      ).subscribe({\n        next: (result) => {\n          if (result.value.data.onPublishPolicy.id === data.id) {\n            const policy = result.value.data.onPublishPolicy.policy;\n            if (policy.length > 0) {\n              setItem(policy);\n              setAccounts(concatenateAccounts(policy));\n            }\n            setAccountStatus(\"finished\");\n            setPermissionStatus(\"finished\");\n            subscription.unsubscribe();\n          }\n        },\n      });\n    });\n  };\n\n  function getSettings() {\n    getSetting(\"settings\").then((data) => {\n      if (data !== null) {\n        setMaxDuration(parseInt(data.duration));\n        setTicketRequired(data.ticketNo);\n        setApprovalRequired(data.approval);\n      }\n    });\n  }\n\n  function getMgmtPs() {\n    getMgmtAccountPs().then((data) => {\n      setMgmtPs(data);\n    });\n  }\n\n  useEffect(() => {\n    setEmail(props.user);\n    getSettings();\n    // getEligibility();\n    getPolicy();\n    props.addNotification([]);\n    getMgmtPs();\n    setTime(moment().format());\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  function sendRequest() {\n    const data = {\n      accountId: account.value,\n      accountName: account.label,\n      role: role.label,\n      roleId: role.value,\n      duration: duration,\n      startTime: time,\n      justification: justification,\n      ticketNo: ticketNo,\n    };\n    requestTeam(data).then(() => {\n      setSubmitLoading(false);\n      props.addNotification([\n        {\n          type: \"success\",\n          content: \"Request created successfully\",\n          dismissible: true,\n          onDismiss: () => props.addNotification([]),\n        },\n      ]);\n      history.push(\"/requests/view\");\n      props.setActiveHref(\"/requests/view\");\n    });\n  }\n\n  function handleCancel() {\n    history.push(\"/\");\n    props.setActiveHref(\"/\");\n    props.addNotification([]);\n  }\n\n  function sendError() {\n    props.addNotification([\n      {\n        type: \"error\",\n        content: `No approver for Account - ${account.label}`,\n        dismissible: true,\n        onDismiss: () => props.addNotification([]),\n      },\n    ]);\n    setSubmitLoading(false);\n  }\n\n  async function validate() {\n    let error = false;\n    if (\n      !duration ||\n      isNaN(duration) ||\n      Number(duration) > Number(maxDuration) ||\n      Number(duration) < 1\n    ) {\n      setDurationError(`Enter number between 1-${maxDuration}`);\n      error = true;\n    }\n    if (role.length < 1) {\n      setRoleError(\"Select a role\");\n      error = true;\n    }\n    if (\n      params.DeploymentType == \"delegated\" &&\n      role &&\n      mgmtPs.permissions.includes(role.value)\n    ) {\n      setRoleError(\n        \"Permission set is assigned to management account and cannot be requested\"\n      );\n      error = true;\n    }\n    if (!account.label) {\n      setAccountError(\"Select an account\");\n      error = true;\n    }\n    if (!time) {\n      setTimeError(\"Select start date\");\n      error = true;\n    }\n    if (!justification || !/[\\p{L}\\p{N}]/u.test(justification[0])) {\n      setJustificationError(\"Enter valid business justification\");\n      error = true;\n    }\n    if ((!ticketNo && ticketRequired) || !/^[a-zA-Z0-9]+$/.test(ticketNo[0])) {\n      setTicketError(\"Enter valid change management ticket number\");\n      error = true;\n    }\n    return error;\n  }\n\n  async function handleSubmit(event) {\n    event.preventDefault();\n    setSubmitLoading(true);\n    const isValid = await validate();\n    if (!isValid) {\n      const shouldSendRequest =\n        !approvalRequired ||\n        (await checkApprovalAndApproverGroups(account.value, role.value));\n      shouldSendRequest ? sendRequest() : sendError();\n    } else {\n      setSubmitLoading(false);\n    }\n  }\n\n  async function checkApprovalNotRequired(account, role) {\n    let approvalNotRequired = false;\n    for (const eligibility of item) {\n      for (const acct of eligibility.accounts) {\n        if (acct.id === account) {\n          for (const perm of eligibility.permissions) {\n            if (perm.id === role) {\n              if (!eligibility.approvalRequired) {\n                approvalNotRequired = true;\n              }\n            }\n          }\n        }\n      }\n    }\n    return approvalNotRequired;\n  }\n\n  function checkGroupMembership(groupIds, groupsIds) {\n    for (const groupId of groupIds) {\n      if (groupsIds.includes(groupId)) {\n        return true;\n      }\n    }\n    return false;\n  }\n  async function checkApprovalAndApproverGroups(account, role) {\n    if (await checkApprovalNotRequired(account, role)) {\n      return true;\n    }\n    const account_approvers = await fetchApprovers(account, \"Account\");\n    if (account_approvers) {\n      const data = await getGroupMemberships(account_approvers.groupIds);\n      const requesterIsApprover = checkGroupMembership(props.groupIds, account_approvers.groupIds);\n      // If the requester is also an approver, then we need at least 2 approvers to exist (i.e. at\n      // least one person who didn't make the request). Otherwise we only need a single approver to exist.\n      const approverGroupMembersRequired = requesterIsApprover ? 2 : 1;\n\n      if (data.members.length >= approverGroupMembersRequired) {\n        return true;\n      }\n    }\n    const ou = await fetchOU(account);\n    const ou_approvers = await fetchApprovers(ou.Id, \"OU\");\n    if (ou_approvers) {\n      const data = await getGroupMemberships(ou_approvers.groupIds);\n      const requesterIsApprover = checkGroupMembership(props.groupIds, ou_approvers.groupIds);\n      // If the requester is also an approver, then we need at least 2 approvers to exist (i.e. at\n      // least one person who didn't make the request). Otherwise we only need a single approver to exist.\n      const approverGroupMembersRequired = requesterIsApprover ? 2 : 1;\n\n      if (data.members.length >= approverGroupMembersRequired) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  return (\n    <div className=\"container\">\n      <Form\n        actions={\n          <SpaceBetween direction=\"horizontal\" size=\"xs\">\n            <Button variant=\"link\" onClick={handleCancel}>\n              Cancel\n            </Button>\n            <Button\n              variant=\"primary\"\n              type=\"submit\"\n              onClick={handleSubmit}\n              className=\"buttons\"\n              loading={submitLoading}\n            >\n              Submit\n            </Button>\n          </SpaceBetween>\n        }\n      >\n        <Container\n          header={\n            <Header\n              variant=\"h2\"\n              description=\"Request temporary elevated access\"\n            >\n              Elevated access request\n            </Header>\n          }\n        >\n          <SpaceBetween direction=\"vertical\" size=\"l\">\n            <FormField\n              label=\"Email\"\n              stretch\n              description=\"Elevated access requester username\"\n            >\n              <Input value={email} type=\"email\" />\n            </FormField>\n            <FormField\n              label=\"Account\"\n              stretch\n              description=\"Target account for elevated access\"\n              errorText={accountError}\n            >\n              <Select\n                statusType={accountStatus}\n                placeholder=\"Select an account\"\n                loadingText=\"Loading accounts\"\n                filteringType=\"auto\"\n                empty=\"No eligible accounts found\"\n                options={accounts.map((account) => ({\n                  label: account.name,\n                  value: account.id,\n                  description: account.id,\n                }))}\n                selectedOption={account}\n                onChange={(event) => {\n                  setAccountError();\n                  setAccount(event.detail.selectedOption);\n                  getPermissions(event.detail.selectedOption.value);\n                  getDuration(event.detail.selectedOption.value);\n                }}\n                selectedAriaLabel=\"selected\"\n              />\n            </FormField>\n            <FormField\n              label=\"Role\"\n              stretch\n              description=\"Requested permission set and associated role\"\n              errorText={roleError}\n            >\n              <Select\n                statusType={permissionStatus}\n                placeholder=\"Select a role\"\n                loadingText=\"Loading permissions\"\n                filteringType=\"auto\"\n                empty=\"No eligible permissions found\"\n                options={permissions.map((permission) => ({\n                  label: permission.name,\n                  value: permission.id,\n                }))}\n                selectedOption={role}\n                onChange={(event) => {\n                  setRoleError();\n                  setRole(event.detail.selectedOption);\n                }}\n                selectedAriaLabel=\"selected\"\n              />\n            </FormField>\n            <FormField\n              label=\"Start time\"\n              stretch\n              description=\"Start date and time for elevated access\"\n              errorText={timeError}\n            >\n              <DatePicker\n                showTime\n                format=\"YYYY-MM-DD HH:mm\"\n                defaultValue={moment()}\n                // disabledDate={disabledDate}\n                onChange={(event) => {\n                  setTimeError();\n                  if (event) {\n                    setTime(event._d);\n                    console.log(event._d);\n                  }\n                }}\n              />\n            </FormField>\n            <FormField\n              label=\"Duration\"\n              stretch\n              description=\"Number of hours for which elevated access is required - Note: This is different from the session duration configured for requested permission set/role\"\n              errorText={durationError}\n              placeholder={`Enter number between 1-${maxDuration}`}\n            >\n              <Input\n                value={duration}\n                onChange={(event) => {\n                  setDurationError();\n                  Number(event.detail.value) > Number(maxDuration)\n                    ? setDurationError(\n                        `Enter a number between 1 and ${maxDuration}`\n                      )\n                    : setDuration(event.detail.value);\n                }}\n                type=\"number\"\n              />\n            </FormField>\n            <FormField\n              label=\"Ticket no\"\n              stretch\n              description=\"Elevated request ticket system number\"\n              errorText={ticketError}\n            >\n              <Input\n                value={ticketNo}\n                onChange={(event) => {\n                  setTicketError();\n                  setTicketNo(event.detail.value);\n                }}\n              />\n            </FormField>\n            <FormField\n              label=\"Justification\"\n              stretch\n              description=\"Business justification for requesting elevated access\"\n              errorText={justificationError}\n            >\n              <Textarea\n                onChange={({ detail }) => {\n                  setJustificationError();\n                  setJustification(detail.value);\n                }}\n                value={justification}\n                ariaRequired\n                placeholder=\"Business Justification for requesting elevated access\"\n              />\n            </FormField>\n          </SpaceBetween>\n        </Container>\n      </Form>\n    </div>\n  );\n}\n\nexport default Request;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useLayoutEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport interface PortalProps {\n  container?: Element;\n  children: React.ReactNode;\n}\n\n/**\n * A safe react portal component that renders to a provided node.\n * If a node isn't provided, it creates one under document.body.\n */\nexport default function Portal({ container, children }: PortalProps) {\n  const [activeContainer, setActiveContainer] = useState<Element | null>(container ?? null);\n\n  useLayoutEffect(() => {\n    if (container) {\n      setActiveContainer(container);\n      return;\n    }\n    const newContainer = document.createElement('div');\n    document.body.appendChild(newContainer);\n    setActiveContainer(newContainer);\n    return () => {\n      document.body.removeChild(newContainer);\n      setActiveContainer(null);\n    };\n  }, [container]);\n\n  return activeContainer && createPortal(children, activeContainer);\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"dialog\": \"awsui_dialog_1d2i7_1ktil_105\",\n  \"modal-slide-up\": \"awsui_modal-slide-up_1d2i7_1ktil_1\",\n  \"awsui-motion-fade-in-0\": \"awsui_awsui-motion-fade-in-0_1d2i7_1ktil_1\",\n  \"refresh\": \"awsui_refresh_1d2i7_1ktil_128\",\n  \"awsui-motion-scale-popup\": \"awsui_awsui-motion-scale-popup_1d2i7_1ktil_1\",\n  \"root\": \"awsui_root_1d2i7_1ktil_161\",\n  \"awsui-motion-fade-in\": \"awsui_awsui-motion-fade-in_1d2i7_1ktil_1\",\n  \"hidden\": \"awsui_hidden_1d2i7_1ktil_226\",\n  \"focus-lock\": \"awsui_focus-lock_1d2i7_1ktil_230\",\n  \"small\": \"awsui_small_1d2i7_1ktil_248\",\n  \"medium\": \"awsui_medium_1d2i7_1ktil_251\",\n  \"large\": \"awsui_large_1d2i7_1ktil_254\",\n  \"max\": \"awsui_max_1d2i7_1ktil_257\",\n  \"breakpoint-xs\": \"awsui_breakpoint-xs_1d2i7_1ktil_257\",\n  \"container\": \"awsui_container_1d2i7_1ktil_262\",\n  \"content\": \"awsui_content_1d2i7_1ktil_281\",\n  \"no-paddings\": \"awsui_no-paddings_1d2i7_1ktil_284\",\n  \"header\": \"awsui_header_1d2i7_1ktil_288\",\n  \"header--text\": \"awsui_header--text_1d2i7_1ktil_295\",\n  \"footer\": \"awsui_footer_1d2i7_1ktil_299\",\n  \"footer--stuck\": \"awsui_footer--stuck_1d2i7_1ktil_307\",\n  \"dismiss-control\": \"awsui_dismiss-control_1d2i7_1ktil_316\",\n  \"modal-open\": \"awsui_modal-open_1d2i7_1ktil_320\"\n};\n  ","/*\n * ** Detect scrollbar width (blog post); version N/A -- https://davidwalsh.name/detect-scrollbar-width\n *\n * MIT License\n *\n * Copyright (c) 2007-2021 David Walsh\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/* eslint-disable header/header */\nimport { calculateOnce } from './calculate-once';\n\nexport const browserScrollbarSize = calculateOnce(() => {\n  if (typeof document === 'undefined') {\n    return { width: 0, height: 0 };\n  }\n  const scrollDiv = document.createElement('div');\n  scrollDiv.style.overflow = 'scroll';\n  scrollDiv.style.height = '100px';\n  scrollDiv.style.width = '100px';\n  scrollDiv.style.position = 'absolute';\n  scrollDiv.style.top = '-9999px';\n  scrollDiv.style.left = '-9999px';\n  document.body.appendChild(scrollDiv);\n\n  const width = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n  const height = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n  document.body.removeChild(scrollDiv);\n  return { width, height };\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport styles from './styles.css.js';\nimport { browserScrollbarSize } from '../internal/utils/browser-scrollbar-size';\n\nlet initialBodyPaddingRightStyle: string | undefined = undefined;\n\nexport function disableBodyScrolling() {\n  setBodyScrollbarPadding();\n  document.body.classList.add(styles['modal-open']);\n}\n\nexport function enableBodyScrolling() {\n  document.body.classList.remove(styles['modal-open']);\n  restoreBodyScrollbarPadding();\n}\n\nfunction setBodyScrollbarPadding() {\n  if (bodyHasScrollbar()) {\n    initialBodyPaddingRightStyle = document.body.style.paddingRight;\n    const initialBodyPaddingRight = computedBodyPaddingRightPixels();\n    const scrollbarWidth = browserScrollbarSize().width;\n    const newBodyPaddingRight = initialBodyPaddingRight + scrollbarWidth;\n    document.body.style.paddingRight = newBodyPaddingRight + 'px';\n  }\n}\n\nfunction computedBodyPaddingRightPixels() {\n  return parseInt(window.getComputedStyle(document.body).paddingRight, 10);\n}\n\nfunction restoreBodyScrollbarPadding() {\n  if (initialBodyPaddingRightStyle) {\n    document.body.style.setProperty('padding-right', initialBodyPaddingRightStyle);\n  } else {\n    document.body.style.removeProperty('padding-right');\n  }\n  initialBodyPaddingRightStyle = undefined;\n}\n\nfunction bodyHasScrollbar() {\n  // Unfortunately this difference doesn't appear to match the scrollbar width during testing,\n  // otherwise we could remove browserScrollbarSize().  Bootstrap also doesn't use this difference\n  // directly.\n  return document.body.clientWidth < window.innerWidth;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { useMergeRefs } from '../../hooks/use-merge-refs';\n\nimport TabTrap from '../tab-trap/index';\nimport { getFirstFocusable, getLastFocusable } from './utils';\n\nexport interface FocusLockProps {\n  className?: string;\n  disabled?: boolean;\n  autoFocus?: boolean;\n  restoreFocus?: boolean;\n  children: React.ReactNode;\n}\n\nexport interface FocusLockRef {\n  /**\n   * Focuses the first element in the component.\n   */\n  focusFirst(): void;\n}\n\nfunction FocusLock(\n  { className, disabled, autoFocus, restoreFocus, children }: FocusLockProps,\n  ref: React.Ref<FocusLockRef>\n) {\n  useImperativeHandle(ref, () => {\n    return {\n      focusFirst,\n    };\n  });\n\n  const returnFocusToRef = useRef<HTMLOrSVGElement | null>(null);\n  const containerRef = useRef<HTMLDivElement | null>(null);\n\n  // Using a callback ref to detect component unmounts, which is safer than using useEffect.\n  const restoreFocusHandler = useCallback(\n    (elem: HTMLDivElement | null) => {\n      if (elem === null && restoreFocus) {\n        returnFocusToRef.current?.focus();\n      }\n    },\n    [restoreFocus]\n  );\n\n  const mergedRef = useMergeRefs(containerRef, restoreFocusHandler);\n\n  const focusFirst = () => {\n    if (containerRef.current) {\n      getFirstFocusable(containerRef.current)?.focus();\n    }\n  };\n\n  const focusLast = () => {\n    if (containerRef.current) {\n      getLastFocusable(containerRef.current)?.focus();\n    }\n  };\n\n  useEffect(() => {\n    if (autoFocus && !disabled) {\n      returnFocusToRef.current = document.activeElement as HTMLOrSVGElement | null;\n      focusFirst();\n    }\n  }, [autoFocus, disabled]);\n\n  // Returns focus when disabled changes from false to true.\n  const [prevDisabled, setPrevDisabled] = useState(!!disabled);\n  useEffect(() => {\n    if (prevDisabled !== !!disabled) {\n      setPrevDisabled(!!disabled);\n      if (disabled && restoreFocus) {\n        returnFocusToRef.current?.focus();\n        returnFocusToRef.current = null;\n      }\n    }\n  }, [prevDisabled, disabled, restoreFocus]);\n\n  return (\n    <>\n      <TabTrap disabled={disabled} focusNextCallback={focusLast} />\n      <div className={className} ref={mergedRef}>\n        {children}\n      </div>\n      <TabTrap disabled={disabled} focusNextCallback={focusFirst} />\n    </>\n  );\n}\n\nexport default React.forwardRef(FocusLock);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef } from 'react';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport clsx from 'clsx';\n\nimport { getBaseProps } from '../internal/base-component';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { KeyCode } from '../internal/keycode';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { InternalButton } from '../button/internal';\nimport InternalHeader from '../header/internal';\nimport Portal from '../internal/components/portal';\nimport { useContainerBreakpoints, useContainerQuery } from '../internal/hooks/container-queries';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { FormFieldContext } from '../internal/context/form-field-context';\n\nimport { disableBodyScrolling, enableBodyScrolling } from './body-scroll';\nimport { ModalProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { SomeRequired } from '../internal/types';\nimport FocusLock from '../internal/components/focus-lock';\nimport { useInternalI18n } from '../internal/i18n/context';\nimport { useIntersectionObserver } from '../internal/hooks/use-intersection-observer';\n\ntype InternalModalProps = SomeRequired<ModalProps, 'size'> & InternalBaseComponentProps;\n\nexport default function InternalModal({ modalRoot, ...rest }: InternalModalProps) {\n  return (\n    <Portal container={modalRoot}>\n      <InnerModal {...rest} />\n    </Portal>\n  );\n}\n\n// Separate component to prevent the Portal from getting in the way of refs, as it needs extra cycles to render the inner components.\n// useContainerQuery needs its targeted element to exist on the first render in order to work properly.\nfunction InnerModal({\n  size,\n  visible,\n  header,\n  children,\n  footer,\n  disableContentPaddings,\n  onDismiss,\n  __internalRootRef = null,\n  ...rest\n}: InternalModalProps) {\n  const instanceUniqueId = useUniqueId();\n  const headerId = `${rest.id || instanceUniqueId}-header`;\n  const lastMouseDownElementRef = useRef<HTMLElement | null>(null);\n  const [breakpoint, breakpointsRef] = useContainerBreakpoints(['xs']);\n\n  const i18n = useInternalI18n('modal');\n  const closeAriaLabel = i18n('closeAriaLabel', rest.closeAriaLabel);\n\n  const refObject = useRef<HTMLDivElement>(null);\n  const mergedRef = useMergeRefs(breakpointsRef, refObject, __internalRootRef);\n\n  const isRefresh = useVisualRefresh();\n\n  const baseProps = getBaseProps(rest);\n\n  // enable body scroll and restore focus if unmounting while visible\n  useEffect(() => {\n    return () => {\n      enableBodyScrolling();\n    };\n  }, []);\n\n  // enable / disable body scroll\n  useEffect(() => {\n    if (visible) {\n      disableBodyScrolling();\n    } else {\n      enableBodyScrolling();\n    }\n  }, [visible]);\n\n  // Because we hide the element with styles (and not actually detach it from DOM), we need to scroll to top\n  useEffect(() => {\n    if (visible && refObject.current) {\n      refObject.current.scrollTop = 0;\n    }\n  }, [visible]);\n\n  const dismiss = (reason: string) => fireNonCancelableEvent(onDismiss, { reason });\n\n  const onOverlayMouseDown = (event: React.MouseEvent) => {\n    lastMouseDownElementRef.current = event.target as HTMLElement;\n  };\n  const onOverlayClick = (event: React.MouseEvent) => {\n    const overlay = refObject.current;\n    const lastClicked = lastMouseDownElementRef.current;\n\n    if (event.target === overlay && lastClicked === overlay) {\n      dismiss('overlay');\n    }\n  };\n  const onCloseButtonClick = () => dismiss('closeButton');\n  const escKeyHandler = (event: React.KeyboardEvent) => {\n    if (event.keyCode === KeyCode.escape) {\n      dismiss('keyboard');\n    }\n  };\n\n  // We use an empty div element at the end of the content slot as a sentinel\n  // to detect when the user has scrolled to the bottom.\n  const { ref: stickySentinelRef, isIntersecting: footerStuck } = useIntersectionObserver();\n\n  // Add extra scroll padding to account for the height of the sticky footer,\n  // to prevent it from covering focused elements.\n  const [footerHeight, footerRef] = useContainerQuery(rect => rect.borderBoxHeight);\n\n  return (\n    <FormFieldContext.Provider value={{}}>\n      <div\n        {...baseProps}\n        className={clsx(styles.root, { [styles.hidden]: !visible }, baseProps.className, isRefresh && styles.refresh)}\n        role=\"dialog\"\n        aria-modal={true}\n        aria-labelledby={headerId}\n        onMouseDown={onOverlayMouseDown}\n        onClick={onOverlayClick}\n        ref={mergedRef}\n        style={footerHeight ? { scrollPaddingBottom: footerHeight } : undefined}\n      >\n        <FocusLock disabled={!visible} autoFocus={true} restoreFocus={true} className={styles['focus-lock']}>\n          <div\n            className={clsx(\n              styles.dialog,\n              styles[size],\n              styles[`breakpoint-${breakpoint}`],\n              isRefresh && styles.refresh\n            )}\n            onKeyDown={escKeyHandler}\n          >\n            <div className={styles.container}>\n              <div className={styles.header}>\n                <InternalHeader\n                  variant=\"h2\"\n                  __disableActionsWrapping={true}\n                  actions={\n                    <InternalButton\n                      ariaLabel={closeAriaLabel}\n                      className={styles['dismiss-control']}\n                      variant=\"modal-dismiss\"\n                      iconName=\"close\"\n                      formAction=\"none\"\n                      onClick={onCloseButtonClick}\n                    />\n                  }\n                >\n                  <span id={headerId} className={styles['header--text']}>\n                    {header}\n                  </span>\n                </InternalHeader>\n              </div>\n              <div className={clsx(styles.content, { [styles['no-paddings']]: disableContentPaddings })}>\n                {children}\n                <div ref={stickySentinelRef} />\n              </div>\n              {footer && (\n                <div ref={footerRef} className={clsx(styles.footer, footerStuck && styles['footer--stuck'])}>\n                  {footer}\n                </div>\n              )}\n            </div>\n          </div>\n        </FocusLock>\n      </div>\n    </FormFieldContext.Provider>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { RefCallback, useCallback, useRef, useState } from 'react';\n\n/**\n * A hook that uses an Intersection Observer on the target element ref\n * and detects if the element is intersecting with its parent.\n */\nexport function useIntersectionObserver<T extends HTMLElement>() {\n  const observerRef = useRef<IntersectionObserver | null>(null);\n  const [isIntersecting, setIsIntersecting] = useState(false);\n\n  const ref = useCallback<RefCallback<T>>(targetElement => {\n    if (typeof IntersectionObserver === 'undefined') {\n      // Do nothing in environments like JSDOM\n      return;\n    }\n\n    if (observerRef.current) {\n      // Dismiss previous observer because the target changed\n      observerRef.current.disconnect();\n    }\n\n    // Create a new observer with the target element\n    if (targetElement) {\n      observerRef.current = new IntersectionObserver(([entry]) => setIsIntersecting(entry.isIntersecting));\n      observerRef.current.observe(targetElement);\n    }\n  }, []);\n\n  return { ref, isIntersecting };\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"content\": \"awsui_content_1wepg_1sa3t_93\",\n  \"description\": \"awsui_description_1wepg_1sa3t_94\",\n  \"label\": \"awsui_label_1wepg_1sa3t_95\",\n  \"outline\": \"awsui_outline_1wepg_1sa3t_99\",\n  \"show-outline\": \"awsui_show-outline_1wepg_1sa3t_102\",\n  \"native-input\": \"awsui_native-input_1wepg_1sa3t_106\",\n  \"wrapper\": \"awsui_wrapper_1wepg_1sa3t_110\",\n  \"label-wrapper\": \"awsui_label-wrapper_1wepg_1sa3t_117\",\n  \"empty-content\": \"awsui_empty-content_1wepg_1sa3t_129\",\n  \"description-bottom-padding\": \"awsui_description-bottom-padding_1wepg_1sa3t_139\",\n  \"label-disabled\": \"awsui_label-disabled_1wepg_1sa3t_147\",\n  \"description-disabled\": \"awsui_description-disabled_1wepg_1sa3t_148\",\n  \"control\": \"awsui_control_1wepg_1sa3t_153\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { useUniqueId } from '../../hooks/use-unique-id';\nimport { InternalBaseComponentProps } from '../../hooks/use-base-component/index.js';\n\nexport interface AbstractSwitchProps extends React.HTMLAttributes<HTMLElement>, InternalBaseComponentProps {\n  controlId?: string;\n  controlClassName: string;\n  outlineClassName: string;\n  showOutline?: boolean;\n  disabled?: boolean;\n  nativeControl: (props: React.InputHTMLAttributes<HTMLInputElement>) => React.ReactElement;\n  styledControl: React.ReactElement;\n  label?: React.ReactNode;\n  description?: React.ReactNode;\n  descriptionBottomPadding?: boolean;\n  ariaLabel?: string;\n  ariaLabelledby?: string;\n  ariaDescribedby?: string;\n  ariaControls?: string;\n  onClick: () => void;\n}\n\nfunction joinString(values: (string | undefined)[]) {\n  return values.filter((value): value is string => !!value).join(' ');\n}\n\nexport default function AbstractSwitch({\n  controlId,\n  controlClassName,\n  outlineClassName,\n  showOutline,\n  disabled,\n  nativeControl,\n  styledControl,\n  label,\n  description,\n  descriptionBottomPadding,\n  ariaLabel,\n  ariaLabelledby,\n  ariaDescribedby,\n  ariaControls,\n  onClick,\n  __internalRootRef,\n  ...rest\n}: AbstractSwitchProps) {\n  const uniqueId = useUniqueId();\n  const id = controlId || uniqueId;\n\n  const labelId = `${id}-label`;\n  const descriptionId = `${id}-description`;\n\n  const ariaLabelledByIds = [];\n  if (label) {\n    ariaLabelledByIds.push(labelId);\n  }\n  if (ariaLabelledby) {\n    ariaLabelledByIds.push(ariaLabelledby);\n  }\n\n  const ariaDescriptions = [];\n  if (ariaDescribedby) {\n    ariaDescriptions.push(ariaDescribedby);\n  }\n  if (description) {\n    ariaDescriptions.push(descriptionId);\n  }\n\n  return (\n    <span {...rest} className={clsx(styles.wrapper, rest.className)} ref={__internalRootRef}>\n      <span\n        className={styles['label-wrapper']}\n        aria-disabled={disabled ? 'true' : undefined}\n        onClick={disabled ? undefined : onClick}\n      >\n        <span className={clsx(styles.control, controlClassName)}>\n          {styledControl}\n          {nativeControl({\n            id,\n            disabled,\n            className: styles['native-input'],\n            'aria-describedby': ariaDescriptions.length ? joinString(ariaDescriptions) : undefined,\n            'aria-labelledby': ariaLabelledByIds.length ? joinString(ariaLabelledByIds) : undefined,\n            'aria-label': ariaLabel,\n            'aria-controls': ariaControls,\n          })}\n          <span className={clsx(styles.outline, outlineClassName, showOutline && styles['show-outline'])} />\n        </span>\n        <span className={clsx(styles.content, !label && !description && styles['empty-content'])}>\n          {label && (\n            <span id={labelId} className={clsx(styles.label, { [styles['label-disabled']]: disabled })}>\n              {label}\n            </span>\n          )}\n          {description && (\n            <span\n              id={descriptionId}\n              className={clsx(styles.description, {\n                [styles['description-disabled']]: disabled,\n                [styles['description-bottom-padding']]: descriptionBottomPadding,\n              })}\n            >\n              {description}\n            </span>\n          )}\n        </span>\n      </span>\n    </span>\n  );\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_k2y2q_1slhg_93\",\n  \"checkbox-control\": \"awsui_checkbox-control_k2y2q_1slhg_107\",\n  \"outline\": \"awsui_outline_k2y2q_1slhg_115\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useEffect, useRef } from 'react';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { getBaseProps } from '../internal/base-component';\nimport AbstractSwitch from '../internal/components/abstract-switch';\nimport { CheckboxProps } from './interfaces';\nimport styles from './styles.css.js';\nimport CheckboxIcon from '../internal/components/checkbox-icon';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\n\ninterface InternalProps extends CheckboxProps, InternalBaseComponentProps {\n  tabIndex?: -1;\n  showOutline?: boolean;\n}\n\nconst InternalCheckbox = React.forwardRef<CheckboxProps.Ref, InternalProps>(\n  (\n    {\n      controlId,\n      name,\n      checked,\n      disabled,\n      ariaRequired,\n      indeterminate,\n      children,\n      description,\n      ariaLabel,\n      onFocus,\n      onBlur,\n      onChange,\n      tabIndex,\n      showOutline,\n      ariaControls,\n      __internalRootRef,\n      ...rest\n    },\n    ref\n  ) => {\n    const { ariaDescribedby, ariaLabelledby } = useFormFieldContext(rest);\n    const baseProps = getBaseProps(rest);\n    const checkboxRef = useRef<HTMLInputElement>(null);\n    useForwardFocus(ref, checkboxRef);\n    useEffect(() => {\n      if (checkboxRef.current) {\n        checkboxRef.current.indeterminate = Boolean(indeterminate);\n      }\n    });\n\n    return (\n      <AbstractSwitch\n        {...baseProps}\n        className={clsx(styles.root, baseProps.className)}\n        controlClassName={styles['checkbox-control']}\n        outlineClassName={styles.outline}\n        controlId={controlId}\n        disabled={disabled}\n        label={children}\n        description={description}\n        descriptionBottomPadding={true}\n        ariaLabel={ariaLabel}\n        ariaLabelledby={ariaLabelledby}\n        ariaDescribedby={ariaDescribedby}\n        ariaControls={ariaControls}\n        showOutline={showOutline}\n        nativeControl={nativeControlProps => (\n          <input\n            {...nativeControlProps}\n            ref={checkboxRef}\n            type=\"checkbox\"\n            checked={checked}\n            name={name}\n            aria-required={ariaRequired ? 'true' : undefined}\n            tabIndex={tabIndex}\n            onFocus={() => fireNonCancelableEvent(onFocus)}\n            onBlur={() => fireNonCancelableEvent(onBlur)}\n            // empty handler to suppress React controllability warning\n            onChange={() => {}}\n          />\n        )}\n        onClick={() => {\n          checkboxRef.current?.focus();\n          fireNonCancelableEvent(\n            onChange,\n            // for deterministic transitions \"indeterminate\" -> \"checked\" -> \"unchecked\"\n            indeterminate ? { checked: true, indeterminate: false } : { checked: !checked, indeterminate: false }\n          );\n        }}\n        styledControl={<CheckboxIcon checked={checked} indeterminate={indeterminate} disabled={disabled} />}\n        __internalRootRef={__internalRootRef}\n      />\n    );\n  }\n);\n\nexport default InternalCheckbox;\n","\n    import './styles.scoped.css';\n    export default {\n  \"css-grid\": \"awsui_css-grid_zqq3x_jcrks_9\",\n  \"grid-no-gutters\": \"awsui_grid-no-gutters_zqq3x_jcrks_13\",\n  \"grid-variant-text-grid\": \"awsui_grid-variant-text-grid_zqq3x_jcrks_16\",\n  \"item\": \"awsui_item_zqq3x_jcrks_16\",\n  \"first-column\": \"awsui_first-column_zqq3x_jcrks_21\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport flattenChildren from 'react-keyed-flatten-children';\nimport { useContainerQuery } from '../../internal/hooks/container-queries';\nimport { InternalColumnLayoutProps } from '../interfaces';\nimport styles from './styles.css.js';\n\nconst isOdd = (value: number): boolean => value % 2 !== 0;\n\nexport function calculcateCssColumnCount(\n  columns: number,\n  minColumnWidth: number,\n  containerWidth: number | null\n): number {\n  if (!containerWidth) {\n    return columns;\n  }\n\n  // First, calculate how many columns we can have based on the current container width and minColumnWidth.\n  const targetColumnCount = Math.min(columns, Math.floor(containerWidth / minColumnWidth));\n\n  // When we start wrapping into fewer columns than desired, we want to keep the number of columns even.\n  return Math.max(\n    1,\n    targetColumnCount < columns && isOdd(targetColumnCount) ? targetColumnCount - 1 : targetColumnCount\n  );\n}\n\ninterface FlexibleColumnLayoutProps\n  extends Pick<InternalColumnLayoutProps, 'minColumnWidth' | 'columns' | 'variant' | 'borders' | 'disableGutters'> {\n  children: React.ReactNode;\n}\n\nexport default function FlexibleColumnLayout({\n  columns = 1,\n  minColumnWidth = 0,\n  disableGutters,\n  variant,\n  children,\n}: FlexibleColumnLayoutProps) {\n  const [containerWidth, containerRef] = useContainerQuery(rect => rect.width);\n\n  const columnCount = calculcateCssColumnCount(columns, minColumnWidth, containerWidth);\n  const shouldDisableGutters = variant !== 'text-grid' && disableGutters;\n\n  // Flattening the children allows us to \"see through\" React Fragments and nested arrays.\n  const flattenedChildren = flattenChildren(children);\n\n  return (\n    <div\n      ref={containerRef}\n      className={clsx(\n        styles['css-grid'],\n        styles[`grid-variant-${variant}`],\n        shouldDisableGutters && [styles['grid-no-gutters']]\n      )}\n      style={{ gridTemplateColumns: `repeat(${columnCount}, 1fr)` }}\n    >\n      {flattenedChildren.map((child, i) => {\n        // If this react child is a primitive value, the key will be undefined\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const key = (child as any).key;\n\n        return (\n          <div\n            key={key}\n            className={clsx(styles.item, {\n              [styles['first-column']]: i % columnCount === 0,\n            })}\n          >\n            {child}\n          </div>\n        );\n      })}\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function repeat<T>(value: T, times: number): T[] {\n  const array = [];\n  for (let i = 0; i < times; i++) {\n    array[i] = value;\n  }\n  return array;\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"column-layout\": \"awsui_column-layout_vvxn7_uybot_93\",\n  \"grid\": \"awsui_grid_vvxn7_uybot_106\",\n  \"grid-no-gutters\": \"awsui_grid-no-gutters_vvxn7_uybot_111\",\n  \"grid-variant-text-grid\": \"awsui_grid-variant-text-grid_vvxn7_uybot_114\",\n  \"grid-breakpoint-default\": \"awsui_grid-breakpoint-default_vvxn7_uybot_121\",\n  \"grid-columns-1\": \"awsui_grid-columns-1_vvxn7_uybot_124\",\n  \"grid-breakpoint-xxs\": \"awsui_grid-breakpoint-xxs_vvxn7_uybot_124\",\n  \"grid-breakpoint-xs\": \"awsui_grid-breakpoint-xs_vvxn7_uybot_127\",\n  \"grid-columns-2\": \"awsui_grid-columns-2_vvxn7_uybot_130\",\n  \"grid-columns-3\": \"awsui_grid-columns-3_vvxn7_uybot_136\",\n  \"grid-columns-4\": \"awsui_grid-columns-4_vvxn7_uybot_142\",\n  \"grid-vertical-borders\": \"awsui_grid-vertical-borders_vvxn7_uybot_155\",\n  \"grid-horizontal-borders\": \"awsui_grid-horizontal-borders_vvxn7_uybot_188\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport flattenChildren from 'react-keyed-flatten-children';\nimport InternalGrid from '../grid/internal';\nimport { GridProps } from '../grid/interfaces';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { repeat } from './util';\nimport { InternalColumnLayoutProps } from './interfaces';\nimport { COLUMN_TRIGGERS, ColumnLayoutBreakpoint } from './internal';\nimport styles from './styles.css.js';\n\nconst COLUMN_DEFS: Record<number, GridProps.ElementDefinition | undefined> = {\n  1: { colspan: { default: 12, xxs: 12, xs: 12 } },\n  2: { colspan: { default: 12, xxs: 6, xs: 6 } },\n  3: { colspan: { default: 12, xxs: 6, xs: 4 } },\n  4: { colspan: { default: 12, xxs: 6, xs: 3 } },\n};\n\ninterface GridColumnLayoutProps\n  extends Required<Pick<InternalColumnLayoutProps, 'columns' | 'variant' | 'borders' | 'disableGutters'>> {\n  children: React.ReactNode;\n  __breakpoint?: ColumnLayoutBreakpoint;\n}\n\nexport default function GridColumnLayout({\n  columns,\n  variant,\n  borders,\n  disableGutters,\n  __breakpoint,\n  children,\n}: GridColumnLayoutProps) {\n  const isTextGridVariant = variant === 'text-grid';\n  const shouldDisableGutters = !isTextGridVariant && disableGutters;\n  const shouldHaveHorizontalBorders = !isTextGridVariant && (borders === 'horizontal' || borders === 'all');\n  const shouldHaveVerticalBorders = !isTextGridVariant && (borders === 'vertical' || borders === 'all');\n\n  // Flattening the children allows us to \"see through\" React Fragments and nested arrays.\n  const flattenedChildren = flattenChildren(children);\n\n  const [breakpoint, ref] = useContainerBreakpoints(COLUMN_TRIGGERS);\n\n  return (\n    <InternalGrid\n      ref={ref}\n      disableGutters={true}\n      gridDefinition={repeat(COLUMN_DEFS[columns] ?? {}, flattenedChildren.length)}\n      className={clsx(styles.grid, styles[`grid-columns-${columns}`], styles[`grid-variant-${variant}`], {\n        [styles['grid-horizontal-borders']]: shouldHaveHorizontalBorders,\n        [styles['grid-vertical-borders']]: shouldHaveVerticalBorders,\n        [styles['grid-no-gutters']]: shouldDisableGutters,\n      })}\n      __breakpoint={__breakpoint || breakpoint}\n      __responsiveClassName={breakpoint => breakpoint && styles[`grid-breakpoint-${breakpoint}`]}\n    >\n      {children}\n    </InternalGrid>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { getBaseProps } from '../internal/base-component';\nimport { InternalColumnLayoutProps } from './interfaces';\nimport FlexibleColumnLayout from './flexible-column-layout';\nimport GridColumnLayout from './grid-column-layout';\nimport styles from './styles.css.js';\n\nexport const COLUMN_TRIGGERS = ['default', 'xxs', 'xs'] as const;\nexport type ColumnLayoutBreakpoint = typeof COLUMN_TRIGGERS[number] | null;\n\n/**\n * A responsive grid layout.\n */\nexport default function ColumnLayout({\n  columns = 1,\n  variant = 'default',\n  borders = 'none',\n  disableGutters = false,\n  minColumnWidth,\n  children,\n  __breakpoint,\n  __internalRootRef,\n  ...restProps\n}: InternalColumnLayoutProps) {\n  const baseProps = getBaseProps(restProps);\n\n  return (\n    <div {...baseProps} className={clsx(baseProps.className, styles['column-layout'])} ref={__internalRootRef}>\n      {minColumnWidth ? (\n        <FlexibleColumnLayout\n          columns={columns}\n          borders={borders}\n          variant={variant}\n          minColumnWidth={minColumnWidth}\n          disableGutters={disableGutters}\n        >\n          {children}\n        </FlexibleColumnLayout>\n      ) : (\n        <GridColumnLayout\n          columns={columns}\n          variant={variant}\n          borders={borders}\n          disableGutters={disableGutters}\n          __breakpoint={__breakpoint}\n        >\n          {children}\n        </GridColumnLayout>\n      )}\n    </div>\n  );\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_1mabk_6s6bf_93\",\n  \"radio\": \"awsui_radio_1mabk_6s6bf_107\",\n  \"radio--has-description\": \"awsui_radio--has-description_1mabk_6s6bf_115\",\n  \"radio-control\": \"awsui_radio-control_1mabk_6s6bf_119\",\n  \"outline\": \"awsui_outline_1mabk_6s6bf_127\",\n  \"styled-circle-border\": \"awsui_styled-circle-border_1mabk_6s6bf_146\",\n  \"styled-circle-disabled\": \"awsui_styled-circle-disabled_1mabk_6s6bf_150\",\n  \"styled-circle-fill\": \"awsui_styled-circle-fill_1mabk_6s6bf_155\",\n  \"styled-circle-checked\": \"awsui_styled-circle-checked_1mabk_6s6bf_161\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useRef } from 'react';\nimport AbstractSwitch from '../internal/components/abstract-switch';\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from '../internal/events';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { RadioGroupProps } from './interfaces';\nimport styles from './styles.css.js';\n\ninterface RadioButtonProps extends RadioGroupProps.RadioButtonDefinition {\n  name: string;\n  checked: boolean;\n  onChange?: NonCancelableEventHandler<RadioGroupProps.ChangeDetail>;\n}\n\nexport default React.forwardRef(function RadioButton(\n  { name, label, value, checked, description, disabled, controlId, onChange }: RadioButtonProps,\n  ref: React.Ref<HTMLInputElement>\n) {\n  const isVisualRefresh = useVisualRefresh();\n  const radioButtonRef = useRef<HTMLInputElement>(null);\n  const mergedRefs = useMergeRefs(radioButtonRef, ref);\n\n  return (\n    <AbstractSwitch\n      className={clsx(styles.radio, description && styles['radio--has-description'])}\n      controlClassName={styles['radio-control']}\n      outlineClassName={styles.outline}\n      label={label}\n      description={description}\n      disabled={disabled}\n      controlId={controlId}\n      nativeControl={nativeControlProps => (\n        <input\n          {...nativeControlProps}\n          type=\"radio\"\n          ref={mergedRefs}\n          name={name}\n          value={value}\n          checked={checked}\n          // empty handler to suppress React controllability warning\n          onChange={() => {}}\n        />\n      )}\n      onClick={() => {\n        radioButtonRef.current?.focus();\n        if (checked) {\n          return;\n        }\n        fireNonCancelableEvent(onChange, { value });\n      }}\n      styledControl={\n        <svg viewBox=\"0 0 100 100\" focusable=\"false\" aria-hidden=\"true\">\n          <circle\n            className={clsx(styles['styled-circle-border'], { [styles['styled-circle-disabled']]: disabled })}\n            strokeWidth={isVisualRefresh ? 12 : 8}\n            cx={50}\n            cy={50}\n            r={isVisualRefresh ? 44 : 46}\n          />\n          <circle\n            className={clsx(styles['styled-circle-fill'], {\n              [styles['styled-circle-disabled']]: disabled,\n              [styles['styled-circle-checked']]: checked,\n            })}\n            strokeWidth={30}\n            cx={50}\n            cy={50}\n            r={35}\n          />\n        </svg>\n      }\n    />\n  );\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport { RadioGroupProps } from './interfaces';\nimport RadioButton from './radio-button';\nimport styles from './styles.css.js';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport useRadioGroupForwardFocus from '../internal/hooks/forward-focus/radio-group';\n\ntype InternalRadioGroupProps = RadioGroupProps & InternalBaseComponentProps;\n\nconst InternalRadioGroup = React.forwardRef(\n  (\n    {\n      name,\n      value,\n      items,\n      ariaLabel,\n      ariaRequired,\n      ariaControls,\n      onChange,\n      __internalRootRef = null,\n      ...props\n    }: InternalRadioGroupProps,\n    ref: React.Ref<RadioGroupProps.Ref>\n  ) => {\n    const { ariaDescribedby, ariaLabelledby } = useFormFieldContext(props);\n    const baseProps = getBaseProps(props);\n    const generatedName = useUniqueId('awsui-radio-');\n\n    const [radioButtonRef, radioButtonRefIndex] = useRadioGroupForwardFocus(ref, items, value);\n\n    return (\n      <div\n        role=\"radiogroup\"\n        aria-labelledby={ariaLabelledby}\n        aria-label={ariaLabel}\n        aria-describedby={ariaDescribedby}\n        aria-required={ariaRequired}\n        aria-controls={ariaControls}\n        {...baseProps}\n        className={clsx(baseProps.className, styles.root)}\n        ref={__internalRootRef}\n      >\n        {items &&\n          items.map((item, index) => (\n            <RadioButton\n              key={item.value}\n              ref={index === radioButtonRefIndex ? radioButtonRef : undefined}\n              checked={item.value === value}\n              name={name || generatedName}\n              value={item.value}\n              label={item.label}\n              description={item.description}\n              disabled={item.disabled}\n              onChange={onChange}\n              controlId={item.controlId}\n            />\n          ))}\n      </div>\n    );\n  }\n);\n\nexport default InternalRadioGroup;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useImperativeHandle, useRef } from 'react';\n\nexport interface ForwardFocusRef {\n  focus(): void;\n}\n\n/**\n * Focus forwarding helper for radio groups where only the first selected\n * child element should be focused.\n */\nexport default function useRadioGroupForwardFocus(\n  forwardedRef: React.Ref<ForwardFocusRef>,\n  items: ReadonlyArray<{ value: string }> | undefined,\n  value: string | null\n): [React.Ref<HTMLInputElement>, number] {\n  const itemRef = useRef<HTMLInputElement | null>(null);\n  const itemIndex = items && findIndex(items, item => item.value === value);\n  useImperativeHandle(forwardedRef, () => ({\n    focus() {\n      itemRef.current?.focus();\n    },\n  }));\n\n  return [itemRef, itemIndex !== undefined && itemIndex !== -1 ? itemIndex : 0];\n}\n\nfunction findIndex<T>(items: ReadonlyArray<T>, predicate: (t: T) => any): number {\n  for (let i = 0; i < items.length; i++) {\n    if (predicate(items[i])) {\n      return i;\n    }\n  }\n  return -1;\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"visible-content\": \"awsui_visible-content_tc96w_lfh66_185\",\n  \"visible-content-toggle\": \"awsui_visible-content-toggle_tc96w_lfh66_186\",\n  \"visible-content-groups\": \"awsui_visible-content-groups_tc96w_lfh66_187\",\n  \"visible-content-group\": \"awsui_visible-content-group_tc96w_lfh66_187\",\n  \"visible-content-title\": \"awsui_visible-content-title_tc96w_lfh66_192\",\n  \"visible-content-group-label\": \"awsui_visible-content-group-label_tc96w_lfh66_201\",\n  \"visible-content-option\": \"awsui_visible-content-option_tc96w_lfh66_207\",\n  \"visible-content-option-label\": \"awsui_visible-content-option-label_tc96w_lfh66_218\",\n  \"content-display-option-toggle\": \"awsui_content-display-option-toggle_tc96w_lfh66_409\",\n  \"content-display-option-content\": \"awsui_content-display-option-content_tc96w_lfh66_413\",\n  \"content-display-option\": \"awsui_content-display-option_tc96w_lfh66_409\",\n  \"placeholder\": \"awsui_placeholder_tc96w_lfh66_436\",\n  \"sorting\": \"awsui_sorting_tc96w_lfh66_436\",\n  \"content-display-option-label\": \"awsui_content-display-option-label_tc96w_lfh66_463\",\n  \"drag-overlay\": \"awsui_drag-overlay_tc96w_lfh66_471\",\n  \"content-display\": \"awsui_content-display_tc96w_lfh66_409\",\n  \"content-display-title\": \"awsui_content-display-title_tc96w_lfh66_498\",\n  \"content-display-description\": \"awsui_content-display-description_tc96w_lfh66_506\",\n  \"content-display-option-list\": \"awsui_content-display-option-list_tc96w_lfh66_514\",\n  \"root\": \"awsui_root_tc96w_lfh66_520\",\n  \"modal-root\": \"awsui_modal-root_tc96w_lfh66_521\",\n  \"trigger-button\": \"awsui_trigger-button_tc96w_lfh66_522\",\n  \"cancel-button\": \"awsui_cancel-button_tc96w_lfh66_523\",\n  \"confirm-button\": \"awsui_confirm-button_tc96w_lfh66_524\",\n  \"custom\": \"awsui_custom_tc96w_lfh66_525\",\n  \"second-column-small\": \"awsui_second-column-small_tc96w_lfh66_529\",\n  \"wrap-lines\": \"awsui_wrap-lines_tc96w_lfh66_533\",\n  \"striped-rows\": \"awsui_striped-rows_tc96w_lfh66_534\",\n  \"content-density\": \"awsui_content-density_tc96w_lfh66_535\",\n  \"page-size\": \"awsui_page-size_tc96w_lfh66_536\",\n  \"page-size-form-field\": \"awsui_page-size-form-field_tc96w_lfh66_537\",\n  \"page-size-radio-group\": \"awsui_page-size-radio-group_tc96w_lfh66_538\",\n  \"sticky-columns\": \"awsui_sticky-columns_tc96w_lfh66_539\",\n  \"sticky-columns-form-field\": \"awsui_sticky-columns-form-field_tc96w_lfh66_540\",\n  \"sticky-columns-radio-group\": \"awsui_sticky-columns-radio-group_tc96w_lfh66_541\",\n  \"sticky-columns-first\": \"awsui_sticky-columns-first_tc96w_lfh66_542\",\n  \"sticky-columns-last\": \"awsui_sticky-columns-last_tc96w_lfh66_543\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useState } from 'react';\nimport clsx from 'clsx';\nimport InternalCheckbox from '../checkbox/internal';\nimport InternalColumnLayout from '../column-layout/internal';\nimport InternalFormField from '../form-field/internal';\nimport InternalRadioGroup from '../radio-group/internal';\nimport InternalSpaceBetween from '../space-between/internal';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { CollectionPreferencesProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { useInternalI18n } from '../internal/i18n/context';\n\nexport const copyPreferences = ({\n  pageSize,\n  wrapLines,\n  stripedRows,\n  contentDensity,\n  visibleContent,\n  contentDisplay,\n  stickyColumns,\n  custom,\n}: CollectionPreferencesProps.Preferences): CollectionPreferencesProps.Preferences => ({\n  pageSize,\n  wrapLines,\n  stripedRows,\n  contentDensity,\n  visibleContent,\n  contentDisplay,\n  stickyColumns,\n  custom,\n});\n\ntype CopyPreferenceName = keyof CollectionPreferencesProps.Preferences;\n\nexport const mergePreferences = (\n  newPref: CollectionPreferencesProps.Preferences,\n  oldPref: CollectionPreferencesProps.Preferences\n): CollectionPreferencesProps.Preferences => {\n  const newObj = { ...oldPref };\n  const prefNames: CopyPreferenceName[] = [\n    'pageSize',\n    'wrapLines',\n    'stripedRows',\n    'contentDensity',\n    'visibleContent',\n    'custom',\n    'contentDisplay',\n    'stickyColumns',\n  ];\n  for (const prefName of prefNames) {\n    if (newPref[prefName] !== undefined) {\n      newObj[prefName] = newPref[prefName];\n    }\n  }\n  return newObj;\n};\n\ninterface ModalContentLayoutProps {\n  left: React.ReactNode;\n  right: React.ReactNode;\n}\n\nexport const ModalContentLayout = ({ left, right }: ModalContentLayoutProps) => {\n  const [breakpoint, ref] = useContainerBreakpoints(['xs']);\n  const smallContainer = breakpoint === 'default';\n\n  if (smallContainer) {\n    return (\n      <div ref={ref}>\n        {left && <div>{left}</div>}\n        {right && <div className={clsx(left && styles['second-column-small'])}>{right}</div>}\n      </div>\n    );\n  }\n\n  const columns = left && right ? 2 : 1;\n  return (\n    <div ref={ref}>\n      <InternalColumnLayout columns={columns} variant=\"text-grid\">\n        {left && <div>{left}</div>}\n        {right && <div>{right}</div>}\n      </InternalColumnLayout>\n    </div>\n  );\n};\n\ninterface PageSizePreferenceProps extends CollectionPreferencesProps.PageSizePreference {\n  onChange: (value: number) => void;\n  value?: number;\n}\n\nexport const PageSizePreference = ({ title, options, value, onChange }: PageSizePreferenceProps) => {\n  const i18n = useInternalI18n('collection-preferences');\n  return (\n    <div className={styles['page-size']}>\n      <InternalFormField\n        label={i18n('pageSizePreference.title', title)}\n        stretch={true}\n        className={styles['page-size-form-field']}\n      >\n        <InternalRadioGroup\n          className={styles['page-size-radio-group']}\n          value={`${value}`}\n          items={options.map(({ label, value }) => ({ label, value: `${value}` }))}\n          onChange={({ detail }) => onChange(parseInt(detail.value, 10))}\n        />\n      </InternalFormField>\n    </div>\n  );\n};\n\ninterface WrapLinesPreferenceProps extends CollectionPreferencesProps.WrapLinesPreference {\n  onChange: (value: boolean) => void;\n  value?: boolean;\n}\n\nexport const WrapLinesPreference = ({ label, description, value, onChange }: WrapLinesPreferenceProps) => {\n  const i18n = useInternalI18n('collection-preferences');\n  return (\n    <InternalCheckbox\n      checked={!!value}\n      description={i18n('wrapLinesPreference.description', description)}\n      onChange={({ detail }) => onChange(detail.checked)}\n      className={styles['wrap-lines']}\n    >\n      {i18n('wrapLinesPreference.label', label)}\n    </InternalCheckbox>\n  );\n};\n\ninterface StripedRowsPreferenceProps extends CollectionPreferencesProps.StripedRowsPreference {\n  onChange: (value: boolean) => void;\n  value?: boolean;\n}\n\nexport function StripedRowsPreference({ label, description, value, onChange }: StripedRowsPreferenceProps) {\n  const i18n = useInternalI18n('collection-preferences');\n  return (\n    <InternalCheckbox\n      checked={!!value}\n      description={i18n('stripedRowsPreference.description', description)}\n      onChange={({ detail }) => onChange(detail.checked)}\n      className={styles['striped-rows']}\n    >\n      {i18n('stripedRowsPreference.label', label)}\n    </InternalCheckbox>\n  );\n}\n\ninterface ContentDensityPreferenceProps extends CollectionPreferencesProps.ContentDensityPreference {\n  onChange: (value: 'comfortable' | 'compact') => void;\n  value?: 'comfortable' | 'compact';\n}\n\nexport const ContentDensityPreference = ({ label, description, value, onChange }: ContentDensityPreferenceProps) => {\n  const i18n = useInternalI18n('collection-preferences');\n  return (\n    <InternalCheckbox\n      checked={value === 'compact'}\n      description={i18n('contentDensityPreference.description', description)}\n      onChange={({ detail }) => onChange(detail.checked ? 'compact' : 'comfortable')}\n      className={styles['content-density']}\n    >\n      {i18n('contentDensityPreference.label', label)}\n    </InternalCheckbox>\n  );\n};\n\ninterface StickyColumnsPreferenceProps extends CollectionPreferencesProps.StickyColumnsPreference {\n  onChange: (value?: { first?: number; last?: number }) => void;\n  value?: { first?: number; last?: number };\n}\ninterface StickyPreference extends CollectionPreferencesProps.StickyColumnsPreference {\n  onChange: (value: number) => void;\n  preference: {\n    title: string;\n    description: string;\n    options: ReadonlyArray<{\n      label: string;\n      value: number;\n    }>;\n  };\n  value?: number;\n  firstOrLast: 'first' | 'last';\n}\n\nconst StickyPreference = ({ firstOrLast, preference, value, onChange }: StickyPreference) => {\n  const { title, description, options } = preference;\n  return (\n    <div className={styles[`sticky-columns-${firstOrLast}`]}>\n      <InternalFormField className={styles['sticky-columns-form-field']} label={title} description={description}>\n        <InternalRadioGroup\n          className={styles['sticky-columns-radio-group']}\n          value={typeof value !== 'undefined' ? `${value}` : null}\n          items={options.map(({ label, value }) => ({ label, value: `${value}` }))}\n          onChange={({ detail }) => onChange(Number(detail.value))}\n        />\n      </InternalFormField>\n    </div>\n  );\n};\n\nexport const StickyColumnsPreference = ({\n  firstColumns,\n  lastColumns,\n  onChange,\n  value,\n}: StickyColumnsPreferenceProps) => {\n  return (\n    <InternalSpaceBetween className={styles['sticky-columns']} size=\"l\">\n      {firstColumns && (\n        <StickyPreference\n          firstOrLast=\"first\"\n          preference={firstColumns}\n          value={value?.first}\n          onChange={newValue => onChange({ ...value, first: newValue })}\n        />\n      )}\n      {lastColumns && (\n        <StickyPreference\n          firstOrLast=\"last\"\n          preference={lastColumns}\n          value={value?.last}\n          onChange={newValue => onChange({ ...value, last: newValue })}\n        />\n      )}\n    </InternalSpaceBetween>\n  );\n};\n\ninterface CustomPreferenceProps<T = any> extends Pick<CollectionPreferencesProps<T>, 'customPreference'> {\n  onChange: (value: T) => void;\n  value: T;\n}\nexport const CustomPreference = ({ value, customPreference, onChange }: CustomPreferenceProps) => {\n  const [customState, setCustomState] = useState(value);\n  if (customPreference) {\n    return (\n      <div className={styles.custom}>\n        {customPreference(customState, value => {\n          // prevent value to be treated as a functional callback\n          setCustomState(() => value);\n          onChange(value);\n        })}\n      </div>\n    );\n  }\n  return null;\n};\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_4yi2u_dadbh_93\",\n  \"outline\": \"awsui_outline_4yi2u_dadbh_107\",\n  \"toggle-control\": \"awsui_toggle-control_4yi2u_dadbh_126\",\n  \"toggle-control-checked\": \"awsui_toggle-control-checked_4yi2u_dadbh_135\",\n  \"toggle-control-disabled\": \"awsui_toggle-control-disabled_4yi2u_dadbh_138\",\n  \"toggle-handle\": \"awsui_toggle-handle_4yi2u_dadbh_145\",\n  \"toggle-handle-checked\": \"awsui_toggle-handle-checked_4yi2u_dadbh_157\",\n  \"toggle-handle-disabled\": \"awsui_toggle-handle-disabled_4yi2u_dadbh_160\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useRef } from 'react';\nimport AbstractSwitch from '../internal/components/abstract-switch';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { getBaseProps } from '../internal/base-component';\nimport styles from './styles.css.js';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { ToggleProps } from './interfaces';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\n\ntype InternalToggleProps = ToggleProps & InternalBaseComponentProps;\n\nconst InternalToggle = React.forwardRef<ToggleProps.Ref, InternalToggleProps>(\n  (\n    {\n      controlId,\n      checked,\n      name,\n      disabled,\n      children,\n      description,\n      ariaLabel,\n      ariaControls,\n      onFocus,\n      onBlur,\n      onChange,\n      __internalRootRef = null,\n      ...rest\n    },\n    ref\n  ) => {\n    const { ariaDescribedby, ariaLabelledby } = useFormFieldContext(rest);\n    const baseProps = getBaseProps(rest);\n    const checkboxRef = useRef<HTMLInputElement>(null);\n    useForwardFocus(ref, checkboxRef);\n\n    return (\n      <AbstractSwitch\n        {...baseProps}\n        className={clsx(styles.root, baseProps.className)}\n        controlClassName={clsx(styles['toggle-control'], {\n          [styles['toggle-control-checked']]: checked,\n          [styles['toggle-control-disabled']]: disabled,\n        })}\n        outlineClassName={styles.outline}\n        controlId={controlId}\n        disabled={disabled}\n        label={children}\n        description={description}\n        descriptionBottomPadding={true}\n        ariaLabel={ariaLabel}\n        ariaLabelledby={ariaLabelledby}\n        ariaDescribedby={ariaDescribedby}\n        ariaControls={ariaControls}\n        nativeControl={nativeControlProps => (\n          <input\n            {...nativeControlProps}\n            ref={checkboxRef}\n            type=\"checkbox\"\n            checked={checked}\n            name={name}\n            onFocus={() => fireNonCancelableEvent(onFocus)}\n            onBlur={() => fireNonCancelableEvent(onBlur)}\n            // empty handler to suppress React controllability warning\n            onChange={() => {}}\n          />\n        )}\n        onClick={() => {\n          checkboxRef.current?.focus();\n          fireNonCancelableEvent(onChange, { checked: !checked });\n        }}\n        styledControl={\n          /*Using span, not div for HTML validity*/\n          <span\n            className={clsx(styles['toggle-handle'], {\n              [styles['toggle-handle-checked']]: checked,\n              [styles['toggle-handle-disabled']]: disabled,\n            })}\n          />\n        }\n        __internalRootRef={__internalRootRef}\n      />\n    );\n  }\n);\n\nexport default InternalToggle;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport InternalSpaceBetween from '../space-between/internal';\nimport InternalToggle from '../toggle/internal';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\n\nimport { CollectionPreferencesProps } from './interfaces';\nimport styles from './styles.css.js';\n\nconst isVisible = (id: string, visibleIds: ReadonlyArray<string>) => visibleIds.indexOf(id) !== -1;\n\ninterface ClassNameProps {\n  className: string;\n}\nconst className = (suffix: string): ClassNameProps => ({\n  className: styles[`visible-content-${suffix}`],\n});\n\ninterface VisibleContentPreferenceProps extends CollectionPreferencesProps.VisibleContentPreference {\n  onChange: (value: ReadonlyArray<string>) => void;\n  value?: ReadonlyArray<string>;\n}\n\nexport default function VisibleContentPreference({\n  title,\n  options,\n  value = [],\n  onChange,\n}: VisibleContentPreferenceProps) {\n  const idPrefix = useUniqueId('visible-content');\n\n  const flatOptionsIds = options.reduce<string[]>(\n    (ids, group) => [...ids, ...group.options.reduce<string[]>((groupIds, option) => [...groupIds, option.id], [])],\n    []\n  );\n\n  const onToggle = (id: string) => {\n    if (!isVisible(id, value)) {\n      onChange(\n        [...value, id].sort((firstId, secondId) => flatOptionsIds.indexOf(firstId) - flatOptionsIds.indexOf(secondId))\n      );\n    } else {\n      onChange(value.filter(currentId => currentId !== id));\n    }\n  };\n\n  const selectionOption = (\n    option: CollectionPreferencesProps.VisibleContentOption,\n    optionGroupIndex: number,\n    optionIndex: number\n  ) => {\n    const labelId = `${idPrefix}-${optionGroupIndex}-${optionIndex}`;\n    return (\n      <div key={optionIndex} {...className('option')}>\n        <label {...className('option-label')} htmlFor={labelId}>\n          {option.label}\n        </label>\n        <div {...className('toggle')}>\n          <InternalToggle\n            checked={isVisible(option.id, value)}\n            onChange={() => onToggle(option.id)}\n            disabled={option.editable === false}\n            controlId={labelId}\n          />\n        </div>\n      </div>\n    );\n  };\n\n  const outerGroupLabelId = `${idPrefix}-outer`;\n  return (\n    <div className={styles['visible-content']}>\n      <h3 {...className('title')} id={outerGroupLabelId}>\n        {title}\n      </h3>\n      <InternalSpaceBetween {...className('groups')} size=\"xs\">\n        {options.map((optionGroup, optionGroupIndex) => {\n          const groupLabelId = `${idPrefix}-${optionGroupIndex}`;\n          return (\n            <div\n              key={optionGroupIndex}\n              {...className('group')}\n              role=\"group\"\n              aria-labelledby={`${outerGroupLabelId} ${groupLabelId}`}\n            >\n              <div {...className('group-label')} id={groupLabelId}>\n                {optionGroup.label}\n              </div>\n              <div>\n                {optionGroup.options.map((option, optionIndex) =>\n                  selectionOption(option, optionGroupIndex, optionIndex)\n                )}\n              </div>\n            </div>\n          );\n        })}\n      </InternalSpaceBetween>\n    </div>\n  );\n}\n","// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nexport const canUseDOM =\n  typeof window !== 'undefined' &&\n  typeof window.document !== 'undefined' &&\n  typeof window.document.createElement !== 'undefined';\n","export function isWindow(element: Object): element is typeof window {\n  const elementString = Object.prototype.toString.call(element);\n  return (\n    elementString === '[object Window]' ||\n    // In Electron context the Window object serializes to [object global]\n    elementString === '[object global]'\n  );\n}\n","export function isNode(node: Object): node is Node {\n  return 'nodeType' in node;\n}\n","import {isWindow} from '../type-guards/isWindow';\nimport {isNode} from '../type-guards/isNode';\n\nexport function getWindow(target: Event['target']): typeof window {\n  if (!target) {\n    return window;\n  }\n\n  if (isWindow(target)) {\n    return target;\n  }\n\n  if (!isNode(target)) {\n    return window;\n  }\n\n  return target.ownerDocument?.defaultView ?? window;\n}\n","import {getWindow} from '../execution-context/getWindow';\n\nexport function isDocument(node: Node): node is Document {\n  const {Document} = getWindow(node);\n\n  return node instanceof Document;\n}\n","import {getWindow} from '../execution-context/getWindow';\n\nimport {isWindow} from './isWindow';\n\nexport function isHTMLElement(node: Node | Window): node is HTMLElement {\n  if (isWindow(node)) {\n    return false;\n  }\n\n  return node instanceof getWindow(node).HTMLElement;\n}\n","import {isWindow, isHTMLElement, isDocument, isNode} from '../type-guards';\n\nexport function getOwnerDocument(target: Event['target']): Document {\n  if (!target) {\n    return document;\n  }\n\n  if (isWindow(target)) {\n    return target.document;\n  }\n\n  if (!isNode(target)) {\n    return document;\n  }\n\n  if (isDocument(target)) {\n    return target;\n  }\n\n  if (isHTMLElement(target)) {\n    return target.ownerDocument;\n  }\n\n  return document;\n}\n","import {useEffect, useLayoutEffect} from 'react';\n\nimport {canUseDOM} from '../execution-context';\n\n/**\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\n */\nexport const useIsomorphicLayoutEffect = canUseDOM\n  ? useLayoutEffect\n  : useEffect;\n","import {useCallback, useRef} from 'react';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect';\n\nexport function useEvent<T extends Function>(handler: T | undefined) {\n  const handlerRef = useRef<T | undefined>(handler);\n\n  useIsomorphicLayoutEffect(() => {\n    handlerRef.current = handler;\n  });\n\n  return useCallback(function (...args: any) {\n    return handlerRef.current?.(...args);\n  }, []);\n}\n","import {useRef} from 'react';\nimport type {DependencyList} from 'react';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect';\n\nexport function useLatestValue<T extends any>(\n  value: T,\n  dependencies: DependencyList = [value]\n) {\n  const valueRef = useRef<T>(value);\n\n  useIsomorphicLayoutEffect(() => {\n    if (valueRef.current !== value) {\n      valueRef.current = value;\n    }\n  }, dependencies);\n\n  return valueRef;\n}\n","import {useMemo, useRef} from 'react';\n\nexport function useLazyMemo<T>(\n  callback: (prevValue: T | undefined) => T,\n  dependencies: any[]\n) {\n  const valueRef = useRef<T>();\n\n  return useMemo(\n    () => {\n      const newValue = callback(valueRef.current);\n      valueRef.current = newValue;\n\n      return newValue;\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [...dependencies]\n  );\n}\n","import {useRef, useCallback} from 'react';\n\nimport {useEvent} from './useEvent';\n\nexport function useNodeRef(\n  onChange?: (\n    newElement: HTMLElement | null,\n    previousElement: HTMLElement | null\n  ) => void\n) {\n  const onChangeHandler = useEvent(onChange);\n  const node = useRef<HTMLElement | null>(null);\n  const setNodeRef = useCallback(\n    (element: HTMLElement | null) => {\n      if (element !== node.current) {\n        onChangeHandler?.(element, node.current);\n      }\n\n      node.current = element;\n    },\n    //eslint-disable-next-line\n    []\n  );\n\n  return [node, setNodeRef] as const;\n}\n","import {useRef, useEffect} from 'react';\n\nexport function usePrevious<T>(value: T) {\n  const ref = useRef<T>();\n\n  useEffect(() => {\n    ref.current = value;\n  }, [value]);\n\n  return ref.current;\n}\n","import {useMemo} from 'react';\n\nlet ids: Record<string, number> = {};\n\nexport function useUniqueId(prefix: string, value?: string) {\n  return useMemo(() => {\n    if (value) {\n      return value;\n    }\n\n    const id = ids[prefix] == null ? 0 : ids[prefix] + 1;\n    ids[prefix] = id;\n\n    return `${prefix}-${id}`;\n  }, [prefix, value]);\n}\n","function createAdjustmentFn(modifier: number) {\n  return <T extends Record<U, number>, U extends string>(\n    object: T,\n    ...adjustments: Partial<T>[]\n  ): T => {\n    return adjustments.reduce<T>(\n      (accumulator, adjustment) => {\n        const entries = Object.entries(adjustment) as [U, number][];\n\n        for (const [key, valueAdjustment] of entries) {\n          const value = accumulator[key];\n\n          if (value != null) {\n            accumulator[key] = (value + modifier * valueAdjustment) as T[U];\n          }\n        }\n\n        return accumulator;\n      },\n      {\n        ...object,\n      }\n    );\n  };\n}\n\nexport const add = createAdjustmentFn(1);\nexport const subtract = createAdjustmentFn(-1);\n","import {getWindow} from '../execution-context';\n\nexport function isKeyboardEvent(\n  event: Event | undefined | null\n): event is KeyboardEvent {\n  if (!event) {\n    return false;\n  }\n\n  const {KeyboardEvent} = getWindow(event.target);\n\n  return KeyboardEvent && event instanceof KeyboardEvent;\n}\n","import type {Coordinates} from './types';\nimport {isTouchEvent, hasViewportRelativeCoordinates} from '../event';\n\n/**\n * Returns the normalized x and y coordinates for mouse and touch events.\n */\nexport function getEventCoordinates(event: Event): Coordinates | null {\n  if (isTouchEvent(event)) {\n    if (event.touches && event.touches.length) {\n      const {clientX: x, clientY: y} = event.touches[0];\n\n      return {\n        x,\n        y,\n      };\n    } else if (event.changedTouches && event.changedTouches.length) {\n      const {clientX: x, clientY: y} = event.changedTouches[0];\n\n      return {\n        x,\n        y,\n      };\n    }\n  }\n\n  if (hasViewportRelativeCoordinates(event)) {\n    return {\n      x: event.clientX,\n      y: event.clientY,\n    };\n  }\n\n  return null;\n}\n","import {getWindow} from '../execution-context';\n\nexport function isTouchEvent(\n  event: Event | undefined | null\n): event is TouchEvent {\n  if (!event) {\n    return false;\n  }\n\n  const {TouchEvent} = getWindow(event.target);\n\n  return TouchEvent && event instanceof TouchEvent;\n}\n","export function hasViewportRelativeCoordinates(\n  event: Event\n): event is Event & Pick<PointerEvent, 'clientX' | 'clientY'> {\n  return 'clientX' in event && 'clientY' in event;\n}\n","export type Transform = {\n  x: number;\n  y: number;\n  scaleX: number;\n  scaleY: number;\n};\n\nexport interface Transition {\n  property: string;\n  easing: string;\n  duration: number;\n}\n\nexport const CSS = Object.freeze({\n  Translate: {\n    toString(transform: Transform | null) {\n      if (!transform) {\n        return;\n      }\n\n      const {x, y} = transform;\n\n      return `translate3d(${x ? Math.round(x) : 0}px, ${\n        y ? Math.round(y) : 0\n      }px, 0)`;\n    },\n  },\n  Scale: {\n    toString(transform: Transform | null) {\n      if (!transform) {\n        return;\n      }\n\n      const {scaleX, scaleY} = transform;\n\n      return `scaleX(${scaleX}) scaleY(${scaleY})`;\n    },\n  },\n  Transform: {\n    toString(transform: Transform | null) {\n      if (!transform) {\n        return;\n      }\n\n      return [\n        CSS.Translate.toString(transform),\n        CSS.Scale.toString(transform),\n      ].join(' ');\n    },\n  },\n  Transition: {\n    toString({property, duration, easing}: Transition) {\n      return `${property} ${duration}ms ${easing}`;\n    },\n  },\n});\n","const SELECTOR =\n  'a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]';\n\nexport function findFirstFocusableNode(\n  element: HTMLElement\n): HTMLElement | null {\n  if (element.matches(SELECTOR)) {\n    return element;\n  }\n\n  return element.querySelector(SELECTOR);\n}\n","import React from 'react';\n\ninterface Props {\n  id: string;\n  value: string;\n}\n\nconst hiddenStyles: React.CSSProperties = {\n  display: 'none',\n};\n\nexport function HiddenText({id, value}: Props) {\n  return (\n    <div id={id} style={hiddenStyles}>\n      {value}\n    </div>\n  );\n}\n","import React from 'react';\n\nexport interface Props {\n  id: string;\n  announcement: string;\n}\n\n// Hide element visually but keep it readable by screen readers\nconst visuallyHidden: React.CSSProperties = {\n  position: 'fixed',\n  width: 1,\n  height: 1,\n  margin: -1,\n  border: 0,\n  padding: 0,\n  overflow: 'hidden',\n  clip: 'rect(0 0 0 0)',\n  clipPath: 'inset(100%)',\n  whiteSpace: 'nowrap',\n};\n\nexport function LiveRegion({id, announcement}: Props) {\n  return (\n    <div\n      id={id}\n      style={visuallyHidden}\n      role=\"status\"\n      aria-live=\"assertive\"\n      aria-atomic\n    >\n      {announcement}\n    </div>\n  );\n}\n","import {createContext} from 'react';\n\nimport type {RegisterListener} from './types';\n\nexport const DndMonitorContext = createContext<RegisterListener | null>(null);\n","import type {Announcements, ScreenReaderInstructions} from './types';\n\nexport const defaultScreenReaderInstructions: ScreenReaderInstructions = {\n  draggable: `\n    To pick up a draggable item, press the space bar.\n    While dragging, use the arrow keys to move the item.\n    Press space again to drop the item in its new position, or press escape to cancel.\n  `,\n};\n\nexport const defaultAnnouncements: Announcements = {\n  onDragStart({active}) {\n    return `Picked up draggable item ${active.id}.`;\n  },\n  onDragOver({active, over}) {\n    if (over) {\n      return `Draggable item ${active.id} was moved over droppable area ${over.id}.`;\n    }\n\n    return `Draggable item ${active.id} is no longer over a droppable area.`;\n  },\n  onDragEnd({active, over}) {\n    if (over) {\n      return `Draggable item ${active.id} was dropped over droppable area ${over.id}`;\n    }\n\n    return `Draggable item ${active.id} was dropped.`;\n  },\n  onDragCancel({active}) {\n    return `Dragging was cancelled. Draggable item ${active.id} was dropped.`;\n  },\n};\n","import React, {useEffect, useMemo, useState} from 'react';\nimport {createPortal} from 'react-dom';\nimport {useUniqueId} from '@dnd-kit/utilities';\nimport {HiddenText, LiveRegion, useAnnouncement} from '@dnd-kit/accessibility';\n\nimport {DndMonitorListener, useDndMonitor} from '../DndMonitor';\n\nimport type {Announcements, ScreenReaderInstructions} from './types';\nimport {\n  defaultAnnouncements,\n  defaultScreenReaderInstructions,\n} from './defaults';\n\ninterface Props {\n  announcements?: Announcements;\n  container?: Element;\n  screenReaderInstructions?: ScreenReaderInstructions;\n  hiddenTextDescribedById: string;\n}\n\nexport function Accessibility({\n  announcements = defaultAnnouncements,\n  container,\n  hiddenTextDescribedById,\n  screenReaderInstructions = defaultScreenReaderInstructions,\n}: Props) {\n  const {announce, announcement} = useAnnouncement();\n  const liveRegionId = useUniqueId(`DndLiveRegion`);\n  const [mounted, setMounted] = useState(false);\n\n  useEffect(() => {\n    setMounted(true);\n  }, []);\n\n  useDndMonitor(\n    useMemo<DndMonitorListener>(\n      () => ({\n        onDragStart({active}) {\n          announce(announcements.onDragStart({active}));\n        },\n        onDragMove({active, over}) {\n          if (announcements.onDragMove) {\n            announce(announcements.onDragMove({active, over}));\n          }\n        },\n        onDragOver({active, over}) {\n          announce(announcements.onDragOver({active, over}));\n        },\n        onDragEnd({active, over}) {\n          announce(announcements.onDragEnd({active, over}));\n        },\n        onDragCancel({active, over}) {\n          announce(announcements.onDragCancel({active, over}));\n        },\n      }),\n      [announce, announcements]\n    )\n  );\n\n  if (!mounted) {\n    return null;\n  }\n\n  const markup = (\n    <>\n      <HiddenText\n        id={hiddenTextDescribedById}\n        value={screenReaderInstructions.draggable}\n      />\n      <LiveRegion id={liveRegionId} announcement={announcement} />\n    </>\n  );\n\n  return container ? createPortal(markup, container) : markup;\n}\n","import {useCallback, useState} from 'react';\n\nexport function useAnnouncement() {\n  const [announcement, setAnnouncement] = useState('');\n  const announce = useCallback((value: string | undefined) => {\n    if (value != null) {\n      setAnnouncement(value);\n    }\n  }, []);\n\n  return {announce, announcement} as const;\n}\n","import {useContext, useEffect} from 'react';\n\nimport {DndMonitorContext} from './context';\nimport type {DndMonitorListener} from './types';\n\nexport function useDndMonitor(listener: DndMonitorListener) {\n  const registerListener = useContext(DndMonitorContext);\n\n  useEffect(() => {\n    if (!registerListener) {\n      throw new Error(\n        'useDndMonitor must be used within a children of <DndContext>'\n      );\n    }\n\n    const unsubscribe = registerListener(listener);\n\n    return unsubscribe;\n  }, [listener, registerListener]);\n}\n","import type {Coordinates, UniqueIdentifier} from '../types';\nimport type {DroppableContainer} from './types';\n\nexport enum Action {\n  DragStart = 'dragStart',\n  DragMove = 'dragMove',\n  DragEnd = 'dragEnd',\n  DragCancel = 'dragCancel',\n  DragOver = 'dragOver',\n  RegisterDroppable = 'registerDroppable',\n  SetDroppableDisabled = 'setDroppableDisabled',\n  UnregisterDroppable = 'unregisterDroppable',\n}\n\nexport type Actions =\n  | {\n      type: Action.DragStart;\n      active: UniqueIdentifier;\n      initialCoordinates: Coordinates;\n    }\n  | {type: Action.DragMove; coordinates: Coordinates}\n  | {type: Action.DragEnd}\n  | {type: Action.DragCancel}\n  | {\n      type: Action.RegisterDroppable;\n      element: DroppableContainer;\n    }\n  | {\n      type: Action.SetDroppableDisabled;\n      id: UniqueIdentifier;\n      key: UniqueIdentifier;\n      disabled: boolean;\n    }\n  | {\n      type: Action.UnregisterDroppable;\n      id: UniqueIdentifier;\n      key: UniqueIdentifier;\n    };\n","export function noop(..._args: any) {}\n","import {useMemo} from 'react';\n\nimport type {Sensor, SensorDescriptor, SensorOptions} from './types';\n\nexport function useSensor<T extends SensorOptions>(\n  sensor: Sensor<T>,\n  options?: T\n): SensorDescriptor<T> {\n  return useMemo(\n    () => ({\n      sensor,\n      options: options ?? ({} as T),\n    }),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [sensor, options]\n  );\n}\n","import type {Coordinates} from '../../types';\n\nexport const defaultCoordinates: Coordinates = Object.freeze({\n  x: 0,\n  y: 0,\n});\n","import type {Coordinates} from '../../types';\n\n/**\n * Returns the distance between two points\n */\nexport function distanceBetween(p1: Coordinates, p2: Coordinates) {\n  return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));\n}\n","import {getEventCoordinates} from '@dnd-kit/utilities';\nimport type {ClientRect} from '../../types';\n\nexport function getRelativeTransformOrigin(\n  event: MouseEvent | TouchEvent | KeyboardEvent,\n  rect: ClientRect\n) {\n  const eventCoordinates = getEventCoordinates(event);\n\n  if (!eventCoordinates) {\n    return '0 0';\n  }\n\n  const transformOrigin = {\n    x: ((eventCoordinates.x - rect.left) / rect.width) * 100,\n    y: ((eventCoordinates.y - rect.top) / rect.height) * 100,\n  };\n\n  return `${transformOrigin.x}% ${transformOrigin.y}%`;\n}\n","/* eslint-disable no-redeclare */\nimport type {ClientRect} from '../../types';\n\nimport type {Collision, CollisionDescriptor} from './types';\n\n/**\n * Sort collisions from smallest to greatest value\n */\nexport function sortCollisionsAsc(\n  {data: {value: a}}: CollisionDescriptor,\n  {data: {value: b}}: CollisionDescriptor\n) {\n  return a - b;\n}\n\n/**\n * Sort collisions from greatest to smallest value\n */\nexport function sortCollisionsDesc(\n  {data: {value: a}}: CollisionDescriptor,\n  {data: {value: b}}: CollisionDescriptor\n) {\n  return b - a;\n}\n\n/**\n * Returns the coordinates of the corners of a given rectangle:\n * [TopLeft {x, y}, TopRight {x, y}, BottomLeft {x, y}, BottomRight {x, y}]\n */\nexport function cornersOfRectangle({left, top, height, width}: ClientRect) {\n  return [\n    {\n      x: left,\n      y: top,\n    },\n    {\n      x: left + width,\n      y: top,\n    },\n    {\n      x: left,\n      y: top + height,\n    },\n    {\n      x: left + width,\n      y: top + height,\n    },\n  ];\n}\n\n/**\n * Returns the first collision, or null if there isn't one.\n * If a property is specified, returns the specified property of the first collision.\n */\nexport function getFirstCollision(\n  collisions: Collision[] | null | undefined\n): Collision | null;\nexport function getFirstCollision<T extends keyof Collision>(\n  collisions: Collision[] | null | undefined,\n  property: T\n): Collision[T] | null;\nexport function getFirstCollision(\n  collisions: Collision[] | null | undefined,\n  property?: keyof Collision\n) {\n  if (!collisions || collisions.length === 0) {\n    return null;\n  }\n\n  const [firstCollision] = collisions;\n\n  return property ? firstCollision[property] : firstCollision;\n}\n","import {distanceBetween} from '../coordinates';\nimport type {Coordinates, ClientRect} from '../../types';\n\nimport type {CollisionDescriptor, CollisionDetection} from './types';\nimport {sortCollisionsAsc} from './helpers';\n\n/**\n * Returns the coordinates of the center of a given ClientRect\n */\nfunction centerOfRectangle(\n  rect: ClientRect,\n  left = rect.left,\n  top = rect.top\n): Coordinates {\n  return {\n    x: left + rect.width * 0.5,\n    y: top + rect.height * 0.5,\n  };\n}\n\n/**\n * Returns the closest rectangles from an array of rectangles to the center of a given\n * rectangle.\n */\nexport const closestCenter: CollisionDetection = ({\n  collisionRect,\n  droppableRects,\n  droppableContainers,\n}) => {\n  const centerRect = centerOfRectangle(\n    collisionRect,\n    collisionRect.left,\n    collisionRect.top\n  );\n  const collisions: CollisionDescriptor[] = [];\n\n  for (const droppableContainer of droppableContainers) {\n    const {id} = droppableContainer;\n    const rect = droppableRects.get(id);\n\n    if (rect) {\n      const distBetween = distanceBetween(centerOfRectangle(rect), centerRect);\n\n      collisions.push({id, data: {droppableContainer, value: distBetween}});\n    }\n  }\n\n  return collisions.sort(sortCollisionsAsc);\n};\n","import type {ClientRect} from '../../types';\n\nimport type {CollisionDescriptor, CollisionDetection} from './types';\nimport {sortCollisionsDesc} from './helpers';\n\n/**\n * Returns the intersecting rectangle area between two rectangles\n */\nexport function getIntersectionRatio(\n  entry: ClientRect,\n  target: ClientRect\n): number {\n  const top = Math.max(target.top, entry.top);\n  const left = Math.max(target.left, entry.left);\n  const right = Math.min(target.left + target.width, entry.left + entry.width);\n  const bottom = Math.min(target.top + target.height, entry.top + entry.height);\n  const width = right - left;\n  const height = bottom - top;\n\n  if (left < right && top < bottom) {\n    const targetArea = target.width * target.height;\n    const entryArea = entry.width * entry.height;\n    const intersectionArea = width * height;\n    const intersectionRatio =\n      intersectionArea / (targetArea + entryArea - intersectionArea);\n\n    return Number(intersectionRatio.toFixed(4));\n  }\n\n  // Rectangles do not overlap, or overlap has an area of zero (edge/corner overlap)\n  return 0;\n}\n\n/**\n * Returns the rectangles that has the greatest intersection area with a given\n * rectangle in an array of rectangles.\n */\nexport const rectIntersection: CollisionDetection = ({\n  collisionRect,\n  droppableRects,\n  droppableContainers,\n}) => {\n  const collisions: CollisionDescriptor[] = [];\n\n  for (const droppableContainer of droppableContainers) {\n    const {id} = droppableContainer;\n    const rect = droppableRects.get(id);\n\n    if (rect) {\n      const intersectionRatio = getIntersectionRatio(rect, collisionRect);\n\n      if (intersectionRatio > 0) {\n        collisions.push({\n          id,\n          data: {droppableContainer, value: intersectionRatio},\n        });\n      }\n    }\n  }\n\n  return collisions.sort(sortCollisionsDesc);\n};\n","import type {Coordinates, ClientRect} from '../../types';\nimport {defaultCoordinates} from '../coordinates';\n\nexport function getRectDelta(\n  rect1: ClientRect | null,\n  rect2: ClientRect | null\n): Coordinates {\n  return rect1 && rect2\n    ? {\n        x: rect1.left - rect2.left,\n        y: rect1.top - rect2.top,\n      }\n    : defaultCoordinates;\n}\n","import type {Coordinates, ClientRect} from '../../types';\n\nexport function createRectAdjustmentFn(modifier: number) {\n  return function adjustClientRect(\n    rect: ClientRect,\n    ...adjustments: Coordinates[]\n  ): ClientRect {\n    return adjustments.reduce<ClientRect>(\n      (acc, adjustment) => ({\n        ...acc,\n        top: acc.top + modifier * adjustment.y,\n        bottom: acc.bottom + modifier * adjustment.y,\n        left: acc.left + modifier * adjustment.x,\n        right: acc.right + modifier * adjustment.x,\n      }),\n      {...rect}\n    );\n  };\n}\n\nexport const getAdjustedRect = createRectAdjustmentFn(1);\n","import type {Transform} from '@dnd-kit/utilities';\n\nexport function parseTransform(transform: string): Transform | null {\n  if (transform.startsWith('matrix3d(')) {\n    const transformArray = transform.slice(9, -1).split(/, /);\n\n    return {\n      x: +transformArray[12],\n      y: +transformArray[13],\n      scaleX: +transformArray[0],\n      scaleY: +transformArray[5],\n    };\n  } else if (transform.startsWith('matrix(')) {\n    const transformArray = transform.slice(7, -1).split(/, /);\n\n    return {\n      x: +transformArray[4],\n      y: +transformArray[5],\n      scaleX: +transformArray[0],\n      scaleY: +transformArray[3],\n    };\n  }\n\n  return null;\n}\n","import {getWindow} from '@dnd-kit/utilities';\n\nimport type {ClientRect} from '../../types';\nimport {inverseTransform} from '../transform';\n\ninterface Options {\n  ignoreTransform?: boolean;\n}\n\nconst defaultOptions: Options = {ignoreTransform: false};\n\n/**\n * Returns the bounding client rect of an element relative to the viewport.\n */\nexport function getClientRect(\n  element: Element,\n  options: Options = defaultOptions\n) {\n  let rect: ClientRect = element.getBoundingClientRect();\n\n  if (options.ignoreTransform) {\n    const {transform, transformOrigin} =\n      getWindow(element).getComputedStyle(element);\n\n    if (transform) {\n      rect = inverseTransform(rect, transform, transformOrigin);\n    }\n  }\n\n  const {top, left, width, height, bottom, right} = rect;\n\n  return {\n    top,\n    left,\n    width,\n    height,\n    bottom,\n    right,\n  };\n}\n\n/**\n * Returns the bounding client rect of an element relative to the viewport.\n *\n * @remarks\n * The ClientRect returned by this method does not take into account transforms\n * applied to the element it measures.\n *\n */\nexport function getTransformAgnosticClientRect(element: Element): ClientRect {\n  return getClientRect(element, {ignoreTransform: true});\n}\n","import type {ClientRect} from '../../types';\n\nimport {parseTransform} from './parseTransform';\n\nexport function inverseTransform(\n  rect: ClientRect,\n  transform: string,\n  transformOrigin: string\n): ClientRect {\n  const parsedTransform = parseTransform(transform);\n\n  if (!parsedTransform) {\n    return rect;\n  }\n\n  const {scaleX, scaleY, x: translateX, y: translateY} = parsedTransform;\n\n  const x = rect.left - translateX - (1 - scaleX) * parseFloat(transformOrigin);\n  const y =\n    rect.top -\n    translateY -\n    (1 - scaleY) *\n      parseFloat(transformOrigin.slice(transformOrigin.indexOf(' ') + 1));\n  const w = scaleX ? rect.width / scaleX : rect.width;\n  const h = scaleY ? rect.height / scaleY : rect.height;\n\n  return {\n    width: w,\n    height: h,\n    top: y,\n    right: x + w,\n    bottom: y + h,\n    left: x,\n  };\n}\n","import {\n  getWindow,\n  isDocument,\n  isHTMLElement,\n  isSVGElement,\n} from '@dnd-kit/utilities';\n\nimport {isFixed} from './isFixed';\nimport {isScrollable} from './isScrollable';\n\nexport function getScrollableAncestors(\n  element: Node | null,\n  limit?: number\n): Element[] {\n  const scrollParents: Element[] = [];\n\n  function findScrollableAncestors(node: Node | null): Element[] {\n    if (limit != null && scrollParents.length >= limit) {\n      return scrollParents;\n    }\n\n    if (!node) {\n      return scrollParents;\n    }\n\n    if (\n      isDocument(node) &&\n      node.scrollingElement != null &&\n      !scrollParents.includes(node.scrollingElement)\n    ) {\n      scrollParents.push(node.scrollingElement);\n\n      return scrollParents;\n    }\n\n    if (!isHTMLElement(node) || isSVGElement(node)) {\n      return scrollParents;\n    }\n\n    if (scrollParents.includes(node)) {\n      return scrollParents;\n    }\n\n    const computedStyle = getWindow(element).getComputedStyle(node);\n\n    if (node !== element) {\n      if (isScrollable(node, computedStyle)) {\n        scrollParents.push(node);\n      }\n    }\n\n    if (isFixed(node, computedStyle)) {\n      return scrollParents;\n    }\n\n    return findScrollableAncestors(node.parentNode);\n  }\n\n  if (!element) {\n    return scrollParents;\n  }\n\n  return findScrollableAncestors(element);\n}\n\nexport function getFirstScrollableAncestor(node: Node | null): Element | null {\n  const [firstScrollableAncestor] = getScrollableAncestors(node, 1);\n\n  return firstScrollableAncestor ?? null;\n}\n","import {getWindow} from '../execution-context/getWindow';\n\nexport function isSVGElement(node: Node): node is SVGElement {\n  return node instanceof getWindow(node).SVGElement;\n}\n","import {getWindow} from '@dnd-kit/utilities';\n\nexport function isScrollable(\n  element: HTMLElement,\n  computedStyle: CSSStyleDeclaration = getWindow(element).getComputedStyle(\n    element\n  )\n): boolean {\n  const overflowRegex = /(auto|scroll|overlay)/;\n  const properties = ['overflow', 'overflowX', 'overflowY'];\n\n  return properties.some((property) => {\n    const value = computedStyle[property as keyof CSSStyleDeclaration];\n\n    return typeof value === 'string' ? overflowRegex.test(value) : false;\n  });\n}\n","import {getWindow} from '@dnd-kit/utilities';\n\nexport function isFixed(\n  node: HTMLElement,\n  computedStyle: CSSStyleDeclaration = getWindow(node).getComputedStyle(node)\n): boolean {\n  return computedStyle.position === 'fixed';\n}\n","import {\n  canUseDOM,\n  isHTMLElement,\n  isDocument,\n  getOwnerDocument,\n  isNode,\n  isWindow,\n} from '@dnd-kit/utilities';\n\nexport function getScrollableElement(element: EventTarget | null) {\n  if (!canUseDOM || !element) {\n    return null;\n  }\n\n  if (isWindow(element)) {\n    return element;\n  }\n\n  if (!isNode(element)) {\n    return null;\n  }\n\n  if (\n    isDocument(element) ||\n    element === getOwnerDocument(element).scrollingElement\n  ) {\n    return window;\n  }\n\n  if (isHTMLElement(element)) {\n    return element;\n  }\n\n  return null;\n}\n","import {isWindow} from '@dnd-kit/utilities';\n\nimport type {Coordinates} from '../../types';\n\nexport function getScrollXCoordinate(element: Element | typeof window): number {\n  if (isWindow(element)) {\n    return element.scrollX;\n  }\n\n  return element.scrollLeft;\n}\n\nexport function getScrollYCoordinate(element: Element | typeof window): number {\n  if (isWindow(element)) {\n    return element.scrollY;\n  }\n\n  return element.scrollTop;\n}\n\nexport function getScrollCoordinates(\n  element: Element | typeof window\n): Coordinates {\n  return {\n    x: getScrollXCoordinate(element),\n    y: getScrollYCoordinate(element),\n  };\n}\n","export enum Direction {\n  Forward = 1,\n  Backward = -1,\n}\n","import {canUseDOM} from '@dnd-kit/utilities';\n\nexport function isDocumentScrollingElement(element: Element | null) {\n  if (!canUseDOM || !element) {\n    return false;\n  }\n\n  return element === document.scrollingElement;\n}\n","import {isDocumentScrollingElement} from './documentScrollingElement';\n\nexport function getScrollPosition(scrollingContainer: Element) {\n  const minScroll = {\n    x: 0,\n    y: 0,\n  };\n  const dimensions = isDocumentScrollingElement(scrollingContainer)\n    ? {\n        height: window.innerHeight,\n        width: window.innerWidth,\n      }\n    : {\n        height: scrollingContainer.clientHeight,\n        width: scrollingContainer.clientWidth,\n      };\n  const maxScroll = {\n    x: scrollingContainer.scrollWidth - dimensions.width,\n    y: scrollingContainer.scrollHeight - dimensions.height,\n  };\n\n  const isTop = scrollingContainer.scrollTop <= minScroll.y;\n  const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n  const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n  const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n\n  return {\n    isTop,\n    isLeft,\n    isBottom,\n    isRight,\n    maxScroll,\n    minScroll,\n  };\n}\n","import {Direction, ClientRect} from '../../types';\nimport {getScrollPosition} from './getScrollPosition';\n\ninterface PositionalCoordinates\n  extends Pick<ClientRect, 'top' | 'left' | 'right' | 'bottom'> {}\n\nconst defaultThreshold = {\n  x: 0.2,\n  y: 0.2,\n};\n\nexport function getScrollDirectionAndSpeed(\n  scrollContainer: Element,\n  scrollContainerRect: ClientRect,\n  {top, left, right, bottom}: PositionalCoordinates,\n  acceleration = 10,\n  thresholdPercentage = defaultThreshold\n) {\n  const {isTop, isBottom, isLeft, isRight} = getScrollPosition(scrollContainer);\n\n  const direction = {\n    x: 0,\n    y: 0,\n  };\n  const speed = {\n    x: 0,\n    y: 0,\n  };\n  const threshold = {\n    height: scrollContainerRect.height * thresholdPercentage.y,\n    width: scrollContainerRect.width * thresholdPercentage.x,\n  };\n\n  if (!isTop && top <= scrollContainerRect.top + threshold.height) {\n    // Scroll Up\n    direction.y = Direction.Backward;\n    speed.y =\n      acceleration *\n      Math.abs(\n        (scrollContainerRect.top + threshold.height - top) / threshold.height\n      );\n  } else if (\n    !isBottom &&\n    bottom >= scrollContainerRect.bottom - threshold.height\n  ) {\n    // Scroll Down\n    direction.y = Direction.Forward;\n    speed.y =\n      acceleration *\n      Math.abs(\n        (scrollContainerRect.bottom - threshold.height - bottom) /\n          threshold.height\n      );\n  }\n\n  if (!isRight && right >= scrollContainerRect.right - threshold.width) {\n    // Scroll Right\n    direction.x = Direction.Forward;\n    speed.x =\n      acceleration *\n      Math.abs(\n        (scrollContainerRect.right - threshold.width - right) / threshold.width\n      );\n  } else if (!isLeft && left <= scrollContainerRect.left + threshold.width) {\n    // Scroll Left\n    direction.x = Direction.Backward;\n    speed.x =\n      acceleration *\n      Math.abs(\n        (scrollContainerRect.left + threshold.width - left) / threshold.width\n      );\n  }\n\n  return {\n    direction,\n    speed,\n  };\n}\n","export function getScrollElementRect(element: Element) {\n  if (element === document.scrollingElement) {\n    const {innerWidth, innerHeight} = window;\n\n    return {\n      top: 0,\n      left: 0,\n      right: innerWidth,\n      bottom: innerHeight,\n      width: innerWidth,\n      height: innerHeight,\n    };\n  }\n\n  const {top, left, right, bottom} = element.getBoundingClientRect();\n\n  return {\n    top,\n    left,\n    right,\n    bottom,\n    width: element.clientWidth,\n    height: element.clientHeight,\n  };\n}\n","import {add} from '@dnd-kit/utilities';\n\nimport type {Coordinates} from '../../types';\nimport {\n  getScrollCoordinates,\n  getScrollXCoordinate,\n  getScrollYCoordinate,\n} from './getScrollCoordinates';\nimport {defaultCoordinates} from '../coordinates';\n\nexport function getScrollOffsets(scrollableAncestors: Element[]): Coordinates {\n  return scrollableAncestors.reduce<Coordinates>((acc, node) => {\n    return add(acc, getScrollCoordinates(node));\n  }, defaultCoordinates);\n}\n\nexport function getScrollXOffset(scrollableAncestors: Element[]): number {\n  return scrollableAncestors.reduce<number>((acc, node) => {\n    return acc + getScrollXCoordinate(node);\n  }, 0);\n}\n\nexport function getScrollYOffset(scrollableAncestors: Element[]): number {\n  return scrollableAncestors.reduce<number>((acc, node) => {\n    return acc + getScrollYCoordinate(node);\n  }, 0);\n}\n","import type {ClientRect} from '../../types';\nimport {getClientRect} from '../rect/getRect';\nimport {getFirstScrollableAncestor} from './getScrollableAncestors';\n\nexport function scrollIntoViewIfNeeded(\n  element: HTMLElement | null | undefined,\n  measure: (node: HTMLElement) => ClientRect = getClientRect\n) {\n  if (!element) {\n    return;\n  }\n\n  const {top, left, bottom, right} = measure(element);\n  const firstScrollableAncestor = getFirstScrollableAncestor(element);\n\n  if (!firstScrollableAncestor) {\n    return;\n  }\n\n  if (\n    bottom <= 0 ||\n    right <= 0 ||\n    top >= window.innerHeight ||\n    left >= window.innerWidth\n  ) {\n    element.scrollIntoView({\n      block: 'center',\n      inline: 'center',\n    });\n  }\n}\n","import type {ClientRect} from '../../types/rect';\nimport {\n  getScrollableAncestors,\n  getScrollOffsets,\n  getScrollXOffset,\n  getScrollYOffset,\n} from '../scroll';\n\nconst properties = [\n  ['x', ['left', 'right'], getScrollXOffset],\n  ['y', ['top', 'bottom'], getScrollYOffset],\n] as const;\n\nexport class Rect {\n  constructor(rect: ClientRect, element: Element) {\n    const scrollableAncestors = getScrollableAncestors(element);\n    const scrollOffsets = getScrollOffsets(scrollableAncestors);\n\n    this.rect = {...rect};\n    this.width = rect.width;\n    this.height = rect.height;\n\n    for (const [axis, keys, getScrollOffset] of properties) {\n      for (const key of keys) {\n        Object.defineProperty(this, key, {\n          get: () => {\n            const currentOffsets = getScrollOffset(scrollableAncestors);\n            const scrollOffsetsDeltla = scrollOffsets[axis] - currentOffsets;\n\n            return this.rect[key] + scrollOffsetsDeltla;\n          },\n          enumerable: true,\n        });\n      }\n    }\n\n    Object.defineProperty(this, 'rect', {enumerable: false});\n  }\n\n  private rect: ClientRect;\n\n  public width: number;\n\n  public height: number;\n\n  // The below properties are set by the `Object.defineProperty` calls in the constructor\n  // @ts-ignore\n  public top: number;\n  // @ts-ignore\n  public bottom: number;\n  // @ts-ignore\n  public right: number;\n  // @ts-ignore\n  public left: number;\n}\n","export class Listeners {\n  private listeners: [\n    string,\n    EventListenerOrEventListenerObject,\n    AddEventListenerOptions | boolean | undefined\n  ][] = [];\n\n  constructor(private target: EventTarget | null) {}\n\n  public add<T extends Event>(\n    eventName: string,\n    handler: (event: T) => void,\n    options?: AddEventListenerOptions | boolean\n  ) {\n    this.target?.addEventListener(eventName, handler as EventListener, options);\n    this.listeners.push([eventName, handler as EventListener, options]);\n  }\n\n  public removeAll = () => {\n    this.listeners.forEach((listener) =>\n      this.target?.removeEventListener(...listener)\n    );\n  };\n}\n","import type {Coordinates, DistanceMeasurement} from '../../types';\n\nexport function hasExceededDistance(\n  delta: Coordinates,\n  measurement: DistanceMeasurement\n): boolean {\n  const dx = Math.abs(delta.x);\n  const dy = Math.abs(delta.y);\n\n  if (typeof measurement === 'number') {\n    return Math.sqrt(dx ** 2 + dy ** 2) > measurement;\n  }\n\n  if ('x' in measurement && 'y' in measurement) {\n    return dx > measurement.x && dy > measurement.y;\n  }\n\n  if ('x' in measurement) {\n    return dx > measurement.x;\n  }\n\n  if ('y' in measurement) {\n    return dy > measurement.y;\n  }\n\n  return false;\n}\n","export enum EventName {\n  Click = 'click',\n  DragStart = 'dragstart',\n  Keydown = 'keydown',\n  ContextMenu = 'contextmenu',\n  Resize = 'resize',\n  SelectionChange = 'selectionchange',\n  VisibilityChange = 'visibilitychange',\n}\n\nexport function preventDefault(event: Event) {\n  event.preventDefault();\n}\n\nexport function stopPropagation(event: Event) {\n  event.stopPropagation();\n}\n","import type {Coordinates, UniqueIdentifier} from '../../types';\nimport type {SensorContext} from '../types';\n\nexport enum KeyboardCode {\n  Space = 'Space',\n  Down = 'ArrowDown',\n  Right = 'ArrowRight',\n  Left = 'ArrowLeft',\n  Up = 'ArrowUp',\n  Esc = 'Escape',\n  Enter = 'Enter',\n}\n\nexport type KeyboardCodes = {\n  start: KeyboardEvent['code'][];\n  cancel: KeyboardEvent['code'][];\n  end: KeyboardEvent['code'][];\n};\n\nexport type KeyboardCoordinateGetter = (\n  event: KeyboardEvent,\n  args: {\n    active: UniqueIdentifier;\n    currentCoordinates: Coordinates;\n    context: SensorContext;\n  }\n) => Coordinates | void;\n","import {KeyboardCoordinateGetter, KeyboardCode, KeyboardCodes} from './types';\n\nexport const defaultKeyboardCodes: KeyboardCodes = {\n  start: [KeyboardCode.Space, KeyboardCode.Enter],\n  cancel: [KeyboardCode.Esc],\n  end: [KeyboardCode.Space, KeyboardCode.Enter],\n};\n\nexport const defaultKeyboardCoordinateGetter: KeyboardCoordinateGetter = (\n  event,\n  {currentCoordinates}\n) => {\n  switch (event.code) {\n    case KeyboardCode.Right:\n      return {\n        ...currentCoordinates,\n        x: currentCoordinates.x + 25,\n      };\n    case KeyboardCode.Left:\n      return {\n        ...currentCoordinates,\n        x: currentCoordinates.x - 25,\n      };\n    case KeyboardCode.Down:\n      return {\n        ...currentCoordinates,\n        y: currentCoordinates.y + 25,\n      };\n    case KeyboardCode.Up:\n      return {\n        ...currentCoordinates,\n        y: currentCoordinates.y - 25,\n      };\n  }\n\n  return undefined;\n};\n","import {\n  add as getAdjustedCoordinates,\n  subtract as getCoordinatesDelta,\n  getOwnerDocument,\n  getWindow,\n  isKeyboardEvent,\n} from '@dnd-kit/utilities';\n\nimport type {Coordinates} from '../../types';\nimport {\n  defaultCoordinates,\n  getScrollPosition,\n  getScrollElementRect,\n} from '../../utilities';\nimport {scrollIntoViewIfNeeded} from '../../utilities/scroll';\nimport {EventName} from '../events';\nimport {Listeners} from '../utilities';\nimport type {\n  Activators,\n  SensorInstance,\n  SensorProps,\n  SensorOptions,\n} from '../types';\n\nimport {KeyboardCoordinateGetter, KeyboardCode, KeyboardCodes} from './types';\nimport {\n  defaultKeyboardCodes,\n  defaultKeyboardCoordinateGetter,\n} from './defaults';\n\nexport interface KeyboardSensorOptions extends SensorOptions {\n  keyboardCodes?: KeyboardCodes;\n  coordinateGetter?: KeyboardCoordinateGetter;\n  scrollBehavior?: ScrollBehavior;\n  onActivation?({event}: {event: KeyboardEvent}): void;\n}\n\nexport type KeyboardSensorProps = SensorProps<KeyboardSensorOptions>;\n\nexport class KeyboardSensor implements SensorInstance {\n  public autoScrollEnabled = false;\n  private referenceCoordinates: Coordinates | undefined;\n  private listeners: Listeners;\n  private windowListeners: Listeners;\n\n  constructor(private props: KeyboardSensorProps) {\n    const {\n      event: {target},\n    } = props;\n\n    this.props = props;\n    this.listeners = new Listeners(getOwnerDocument(target));\n    this.windowListeners = new Listeners(getWindow(target));\n    this.handleKeyDown = this.handleKeyDown.bind(this);\n    this.handleCancel = this.handleCancel.bind(this);\n\n    this.attach();\n  }\n\n  private attach() {\n    this.handleStart();\n\n    this.windowListeners.add(EventName.Resize, this.handleCancel);\n    this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n\n    setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));\n  }\n\n  private handleStart() {\n    const {activeNode, onStart} = this.props;\n    const node = activeNode.node.current;\n\n    if (node) {\n      scrollIntoViewIfNeeded(node);\n    }\n\n    onStart(defaultCoordinates);\n  }\n\n  private handleKeyDown(event: Event) {\n    if (isKeyboardEvent(event)) {\n      const {active, context, options} = this.props;\n      const {\n        keyboardCodes = defaultKeyboardCodes,\n        coordinateGetter = defaultKeyboardCoordinateGetter,\n        scrollBehavior = 'smooth',\n      } = options;\n      const {code} = event;\n\n      if (keyboardCodes.end.includes(code)) {\n        this.handleEnd(event);\n        return;\n      }\n\n      if (keyboardCodes.cancel.includes(code)) {\n        this.handleCancel(event);\n        return;\n      }\n\n      const {collisionRect} = context.current;\n      const currentCoordinates = collisionRect\n        ? {x: collisionRect.left, y: collisionRect.top}\n        : defaultCoordinates;\n\n      if (!this.referenceCoordinates) {\n        this.referenceCoordinates = currentCoordinates;\n      }\n\n      const newCoordinates = coordinateGetter(event, {\n        active,\n        context: context.current,\n        currentCoordinates,\n      });\n\n      if (newCoordinates) {\n        const coordinatesDelta = getCoordinatesDelta(\n          newCoordinates,\n          currentCoordinates\n        );\n        const scrollDelta = {\n          x: 0,\n          y: 0,\n        };\n        const {scrollableAncestors} = context.current;\n\n        for (const scrollContainer of scrollableAncestors) {\n          const direction = event.code;\n          const {isTop, isRight, isLeft, isBottom, maxScroll, minScroll} =\n            getScrollPosition(scrollContainer);\n          const scrollElementRect = getScrollElementRect(scrollContainer);\n\n          const clampedCoordinates = {\n            x: Math.min(\n              direction === KeyboardCode.Right\n                ? scrollElementRect.right - scrollElementRect.width / 2\n                : scrollElementRect.right,\n              Math.max(\n                direction === KeyboardCode.Right\n                  ? scrollElementRect.left\n                  : scrollElementRect.left + scrollElementRect.width / 2,\n                newCoordinates.x\n              )\n            ),\n            y: Math.min(\n              direction === KeyboardCode.Down\n                ? scrollElementRect.bottom - scrollElementRect.height / 2\n                : scrollElementRect.bottom,\n              Math.max(\n                direction === KeyboardCode.Down\n                  ? scrollElementRect.top\n                  : scrollElementRect.top + scrollElementRect.height / 2,\n                newCoordinates.y\n              )\n            ),\n          };\n\n          const canScrollX =\n            (direction === KeyboardCode.Right && !isRight) ||\n            (direction === KeyboardCode.Left && !isLeft);\n          const canScrollY =\n            (direction === KeyboardCode.Down && !isBottom) ||\n            (direction === KeyboardCode.Up && !isTop);\n\n          if (canScrollX && clampedCoordinates.x !== newCoordinates.x) {\n            const newScrollCoordinates =\n              scrollContainer.scrollLeft + coordinatesDelta.x;\n            const canScrollToNewCoordinates =\n              (direction === KeyboardCode.Right &&\n                newScrollCoordinates <= maxScroll.x) ||\n              (direction === KeyboardCode.Left &&\n                newScrollCoordinates >= minScroll.x);\n\n            if (canScrollToNewCoordinates && !coordinatesDelta.y) {\n              // We don't need to update coordinates, the scroll adjustment alone will trigger\n              // logic to auto-detect the new container we are over\n              scrollContainer.scrollTo({\n                left: newScrollCoordinates,\n                behavior: scrollBehavior,\n              });\n              return;\n            }\n\n            if (canScrollToNewCoordinates) {\n              scrollDelta.x = scrollContainer.scrollLeft - newScrollCoordinates;\n            } else {\n              scrollDelta.x =\n                direction === KeyboardCode.Right\n                  ? scrollContainer.scrollLeft - maxScroll.x\n                  : scrollContainer.scrollLeft - minScroll.x;\n            }\n\n            if (scrollDelta.x) {\n              scrollContainer.scrollBy({\n                left: -scrollDelta.x,\n                behavior: scrollBehavior,\n              });\n            }\n            break;\n          } else if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n            const newScrollCoordinates =\n              scrollContainer.scrollTop + coordinatesDelta.y;\n            const canScrollToNewCoordinates =\n              (direction === KeyboardCode.Down &&\n                newScrollCoordinates <= maxScroll.y) ||\n              (direction === KeyboardCode.Up &&\n                newScrollCoordinates >= minScroll.y);\n\n            if (canScrollToNewCoordinates && !coordinatesDelta.x) {\n              // We don't need to update coordinates, the scroll adjustment alone will trigger\n              // logic to auto-detect the new container we are over\n              scrollContainer.scrollTo({\n                top: newScrollCoordinates,\n                behavior: scrollBehavior,\n              });\n              return;\n            }\n\n            if (canScrollToNewCoordinates) {\n              scrollDelta.y = scrollContainer.scrollTop - newScrollCoordinates;\n            } else {\n              scrollDelta.y =\n                direction === KeyboardCode.Down\n                  ? scrollContainer.scrollTop - maxScroll.y\n                  : scrollContainer.scrollTop - minScroll.y;\n            }\n\n            if (scrollDelta.y) {\n              scrollContainer.scrollBy({\n                top: -scrollDelta.y,\n                behavior: scrollBehavior,\n              });\n            }\n\n            break;\n          }\n        }\n\n        this.handleMove(\n          event,\n          getAdjustedCoordinates(\n            getCoordinatesDelta(newCoordinates, this.referenceCoordinates),\n            scrollDelta\n          )\n        );\n      }\n    }\n  }\n\n  private handleMove(event: Event, coordinates: Coordinates) {\n    const {onMove} = this.props;\n\n    event.preventDefault();\n    onMove(coordinates);\n  }\n\n  private handleEnd(event: Event) {\n    const {onEnd} = this.props;\n\n    event.preventDefault();\n    this.detach();\n    onEnd();\n  }\n\n  private handleCancel(event: Event) {\n    const {onCancel} = this.props;\n\n    event.preventDefault();\n    this.detach();\n    onCancel();\n  }\n\n  private detach() {\n    this.listeners.removeAll();\n    this.windowListeners.removeAll();\n  }\n\n  static activators: Activators<KeyboardSensorOptions> = [\n    {\n      eventName: 'onKeyDown' as const,\n      handler: (\n        event: React.KeyboardEvent,\n        {keyboardCodes = defaultKeyboardCodes, onActivation},\n        {active}\n      ) => {\n        const {code} = event.nativeEvent;\n\n        if (keyboardCodes.start.includes(code)) {\n          const activator = active.activatorNode.current;\n\n          if (activator && event.target !== activator) {\n            return false;\n          }\n\n          event.preventDefault();\n\n          onActivation?.({event: event.nativeEvent});\n\n          return true;\n        }\n\n        return false;\n      },\n    },\n  ];\n}\n","import {\n  subtract as getCoordinatesDelta,\n  getEventCoordinates,\n  getOwnerDocument,\n  getWindow,\n} from '@dnd-kit/utilities';\n\nimport {defaultCoordinates} from '../../utilities';\nimport {\n  getEventListenerTarget,\n  hasExceededDistance,\n  Listeners,\n} from '../utilities';\nimport {EventName, preventDefault, stopPropagation} from '../events';\nimport {KeyboardCode} from '../keyboard';\nimport type {SensorInstance, SensorProps, SensorOptions} from '../types';\nimport type {Coordinates, DistanceMeasurement} from '../../types';\n\ninterface DistanceConstraint {\n  distance: DistanceMeasurement;\n  tolerance?: DistanceMeasurement;\n}\n\ninterface DelayConstraint {\n  delay: number;\n  tolerance: DistanceMeasurement;\n}\n\ninterface EventDescriptor {\n  name: keyof DocumentEventMap;\n  passive?: boolean;\n}\n\nexport interface PointerEventHandlers {\n  move: EventDescriptor;\n  end: EventDescriptor;\n}\n\nexport type PointerActivationConstraint = DistanceConstraint | DelayConstraint;\n\nfunction isDistanceConstraint(\n  constraint: PointerActivationConstraint\n): constraint is DistanceConstraint {\n  return Boolean(constraint && 'distance' in constraint);\n}\n\nfunction isDelayConstraint(\n  constraint: PointerActivationConstraint\n): constraint is DelayConstraint {\n  return Boolean(constraint && 'delay' in constraint);\n}\n\nexport interface AbstractPointerSensorOptions extends SensorOptions {\n  activationConstraint?: PointerActivationConstraint;\n  onActivation?({event}: {event: Event}): void;\n}\n\nexport type AbstractPointerSensorProps = SensorProps<AbstractPointerSensorOptions>;\n\nexport class AbstractPointerSensor implements SensorInstance {\n  public autoScrollEnabled = true;\n  private document: Document;\n  private activated: boolean = false;\n  private initialCoordinates: Coordinates;\n  private timeoutId: NodeJS.Timeout | null = null;\n  private listeners: Listeners;\n  private documentListeners: Listeners;\n  private windowListeners: Listeners;\n\n  constructor(\n    private props: AbstractPointerSensorProps,\n    private events: PointerEventHandlers,\n    listenerTarget = getEventListenerTarget(props.event.target)\n  ) {\n    const {event} = props;\n    const {target} = event;\n\n    this.props = props;\n    this.events = events;\n    this.document = getOwnerDocument(target);\n    this.documentListeners = new Listeners(this.document);\n    this.listeners = new Listeners(listenerTarget);\n    this.windowListeners = new Listeners(getWindow(target));\n    this.initialCoordinates = getEventCoordinates(event) ?? defaultCoordinates;\n    this.handleStart = this.handleStart.bind(this);\n    this.handleMove = this.handleMove.bind(this);\n    this.handleEnd = this.handleEnd.bind(this);\n    this.handleCancel = this.handleCancel.bind(this);\n    this.handleKeydown = this.handleKeydown.bind(this);\n    this.removeTextSelection = this.removeTextSelection.bind(this);\n\n    this.attach();\n  }\n\n  private attach() {\n    const {\n      events,\n      props: {\n        options: {activationConstraint},\n      },\n    } = this;\n\n    this.listeners.add(events.move.name, this.handleMove, {passive: false});\n    this.listeners.add(events.end.name, this.handleEnd);\n    this.windowListeners.add(EventName.Resize, this.handleCancel);\n    this.windowListeners.add(EventName.DragStart, preventDefault);\n    this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n    this.windowListeners.add(EventName.ContextMenu, preventDefault);\n    this.documentListeners.add(EventName.Keydown, this.handleKeydown);\n\n    if (activationConstraint) {\n      if (isDistanceConstraint(activationConstraint)) {\n        return;\n      }\n\n      if (isDelayConstraint(activationConstraint)) {\n        this.timeoutId = setTimeout(\n          this.handleStart,\n          activationConstraint.delay\n        );\n        return;\n      }\n    }\n\n    this.handleStart();\n  }\n\n  private detach() {\n    this.listeners.removeAll();\n    this.windowListeners.removeAll();\n\n    // Wait until the next event loop before removing document listeners\n    // This is necessary because we listen for `click` and `selection` events on the document\n    setTimeout(this.documentListeners.removeAll, 50);\n\n    if (this.timeoutId !== null) {\n      clearTimeout(this.timeoutId);\n      this.timeoutId = null;\n    }\n  }\n\n  private handleStart() {\n    const {initialCoordinates} = this;\n    const {onStart} = this.props;\n\n    if (initialCoordinates) {\n      this.activated = true;\n\n      // Stop propagation of click events once activation constraints are met\n      this.documentListeners.add(EventName.Click, stopPropagation, {\n        capture: true,\n      });\n\n      // Remove any text selection from the document\n      this.removeTextSelection();\n\n      // Prevent further text selection while dragging\n      this.documentListeners.add(\n        EventName.SelectionChange,\n        this.removeTextSelection\n      );\n\n      onStart(initialCoordinates);\n    }\n  }\n\n  private handleMove(event: Event) {\n    const {activated, initialCoordinates, props} = this;\n    const {\n      onMove,\n      options: {activationConstraint},\n    } = props;\n\n    if (!initialCoordinates) {\n      return;\n    }\n\n    const coordinates = getEventCoordinates(event) ?? defaultCoordinates;\n    const delta = getCoordinatesDelta(initialCoordinates, coordinates);\n\n    if (!activated && activationConstraint) {\n      // Constraint validation\n      if (isDelayConstraint(activationConstraint)) {\n        if (hasExceededDistance(delta, activationConstraint.tolerance)) {\n          return this.handleCancel();\n        }\n\n        return;\n      }\n\n      if (isDistanceConstraint(activationConstraint)) {\n        if (\n          activationConstraint.tolerance != null &&\n          hasExceededDistance(delta, activationConstraint.tolerance)\n        ) {\n          return this.handleCancel();\n        }\n        if (hasExceededDistance(delta, activationConstraint.distance)) {\n          return this.handleStart();\n        }\n\n        return;\n      }\n    }\n\n    if (event.cancelable) {\n      event.preventDefault();\n    }\n\n    onMove(coordinates);\n  }\n\n  private handleEnd() {\n    const {onEnd} = this.props;\n\n    this.detach();\n    onEnd();\n  }\n\n  private handleCancel() {\n    const {onCancel} = this.props;\n\n    this.detach();\n    onCancel();\n  }\n\n  private handleKeydown(event: KeyboardEvent) {\n    if (event.code === KeyboardCode.Esc) {\n      this.handleCancel();\n    }\n  }\n\n  private removeTextSelection() {\n    this.document.getSelection()?.removeAllRanges();\n  }\n}\n","import {getOwnerDocument, getWindow} from '@dnd-kit/utilities';\n\nexport function getEventListenerTarget(\n  target: EventTarget | null\n): EventTarget | Document {\n  // If the `event.target` element is removed from the document events will still be targeted\n  // at it, and hence won't always bubble up to the window or document anymore.\n  // If there is any risk of an element being removed while it is being dragged,\n  // the best practice is to attach the event listeners directly to the target.\n  // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget\n\n  const {EventTarget} = getWindow(target);\n\n  return target instanceof EventTarget ? target : getOwnerDocument(target);\n}\n","import type {PointerEvent} from 'react';\nimport {getOwnerDocument} from '@dnd-kit/utilities';\n\nimport type {SensorProps} from '../types';\nimport {\n  AbstractPointerSensor,\n  AbstractPointerSensorOptions,\n  PointerEventHandlers,\n} from './AbstractPointerSensor';\n\nconst events: PointerEventHandlers = {\n  move: {name: 'pointermove'},\n  end: {name: 'pointerup'},\n};\n\nexport interface PointerSensorOptions extends AbstractPointerSensorOptions {}\n\nexport type PointerSensorProps = SensorProps<PointerSensorOptions>;\n\nexport class PointerSensor extends AbstractPointerSensor {\n  constructor(props: PointerSensorProps) {\n    const {event} = props;\n    // Pointer events stop firing if the target is unmounted while dragging\n    // Therefore we attach listeners to the owner document instead\n    const listenerTarget = getOwnerDocument(event.target);\n\n    super(props, events, listenerTarget);\n  }\n\n  static activators = [\n    {\n      eventName: 'onPointerDown' as const,\n      handler: (\n        {nativeEvent: event}: PointerEvent,\n        {onActivation}: PointerSensorOptions\n      ) => {\n        if (!event.isPrimary || event.button !== 0) {\n          return false;\n        }\n\n        onActivation?.({event});\n\n        return true;\n      },\n    },\n  ];\n}\n","import type {MouseEvent} from 'react';\nimport {getOwnerDocument} from '@dnd-kit/utilities';\n\nimport type {SensorProps} from '../types';\nimport {\n  AbstractPointerSensor,\n  PointerEventHandlers,\n  AbstractPointerSensorOptions,\n} from '../pointer';\n\nconst events: PointerEventHandlers = {\n  move: {name: 'mousemove'},\n  end: {name: 'mouseup'},\n};\n\nenum MouseButton {\n  RightClick = 2,\n}\n\nexport interface MouseSensorOptions extends AbstractPointerSensorOptions {}\n\nexport type MouseSensorProps = SensorProps<MouseSensorOptions>;\n\nexport class MouseSensor extends AbstractPointerSensor {\n  constructor(props: MouseSensorProps) {\n    super(props, events, getOwnerDocument(props.event.target));\n  }\n\n  static activators = [\n    {\n      eventName: 'onMouseDown' as const,\n      handler: (\n        {nativeEvent: event}: MouseEvent,\n        {onActivation}: MouseSensorOptions\n      ) => {\n        if (event.button === MouseButton.RightClick) {\n          return false;\n        }\n\n        onActivation?.({event});\n\n        return true;\n      },\n    },\n  ];\n}\n","import type {TouchEvent} from 'react';\n\nimport {\n  AbstractPointerSensor,\n  PointerSensorProps,\n  PointerEventHandlers,\n  PointerSensorOptions,\n} from '../pointer';\nimport type {SensorProps} from '../types';\n\nconst events: PointerEventHandlers = {\n  move: {name: 'touchmove'},\n  end: {name: 'touchend'},\n};\n\nexport interface TouchSensorOptions extends PointerSensorOptions {}\n\nexport type TouchSensorProps = SensorProps<TouchSensorOptions>;\n\nexport class TouchSensor extends AbstractPointerSensor {\n  constructor(props: PointerSensorProps) {\n    super(props, events);\n  }\n\n  static activators = [\n    {\n      eventName: 'onTouchStart' as const,\n      handler: (\n        {nativeEvent: event}: TouchEvent,\n        {onActivation}: TouchSensorOptions\n      ) => {\n        const {touches} = event;\n\n        if (touches.length > 1) {\n          return false;\n        }\n\n        onActivation?.({event});\n\n        return true;\n      },\n    },\n  ];\n\n  static setup() {\n    // Adding a non-capture and non-passive `touchmove` listener in order\n    // to force `event.preventDefault()` calls to work in dynamically added\n    // touchmove event handlers. This is required for iOS Safari.\n    window.addEventListener(events.move.name, noop, {\n      capture: false,\n      passive: false,\n    });\n\n    return function teardown() {\n      window.removeEventListener(events.move.name, noop);\n    };\n\n    // We create a new handler because the teardown function of another sensor\n    // could remove our event listener if we use a referentially equal listener.\n    function noop() {}\n  }\n}\n","import {useCallback, useEffect, useMemo, useRef} from 'react';\nimport {useInterval, useLazyMemo, usePrevious} from '@dnd-kit/utilities';\n\nimport {getScrollDirectionAndSpeed} from '../../utilities';\nimport {Direction} from '../../types';\nimport type {Coordinates, ClientRect} from '../../types';\n\nexport type ScrollAncestorSortingFn = (ancestors: Element[]) => Element[];\n\nexport enum AutoScrollActivator {\n  Pointer,\n  DraggableRect,\n}\n\nexport interface Options {\n  acceleration?: number;\n  activator?: AutoScrollActivator;\n  canScroll?: CanScroll;\n  enabled?: boolean;\n  interval?: number;\n  layoutShiftCompensation?:\n    | boolean\n    | {\n        x: boolean;\n        y: boolean;\n      };\n  order?: TraversalOrder;\n  threshold?: {\n    x: number;\n    y: number;\n  };\n}\n\ninterface Arguments extends Options {\n  draggingRect: ClientRect | null;\n  enabled: boolean;\n  pointerCoordinates: Coordinates | null;\n  scrollableAncestors: Element[];\n  scrollableAncestorRects: ClientRect[];\n  delta: Coordinates;\n}\n\nexport type CanScroll = (element: Element) => boolean;\n\nexport enum TraversalOrder {\n  TreeOrder,\n  ReversedTreeOrder,\n}\n\ninterface ScrollDirection {\n  x: 0 | Direction;\n  y: 0 | Direction;\n}\n\nexport function useAutoScroller({\n  acceleration,\n  activator = AutoScrollActivator.Pointer,\n  canScroll,\n  draggingRect,\n  enabled,\n  interval = 5,\n  order = TraversalOrder.TreeOrder,\n  pointerCoordinates,\n  scrollableAncestors,\n  scrollableAncestorRects,\n  delta,\n  threshold,\n}: Arguments) {\n  const scrollIntent = useScrollIntent({delta, disabled: !enabled});\n  const [setAutoScrollInterval, clearAutoScrollInterval] = useInterval();\n  const scrollSpeed = useRef<Coordinates>({x: 0, y: 0});\n  const scrollDirection = useRef<ScrollDirection>({x: 0, y: 0});\n  const rect = useMemo(() => {\n    switch (activator) {\n      case AutoScrollActivator.Pointer:\n        return pointerCoordinates\n          ? {\n              top: pointerCoordinates.y,\n              bottom: pointerCoordinates.y,\n              left: pointerCoordinates.x,\n              right: pointerCoordinates.x,\n            }\n          : null;\n      case AutoScrollActivator.DraggableRect:\n        return draggingRect;\n    }\n  }, [activator, draggingRect, pointerCoordinates]);\n  const scrollContainerRef = useRef<Element | null>(null);\n  const autoScroll = useCallback(() => {\n    const scrollContainer = scrollContainerRef.current;\n\n    if (!scrollContainer) {\n      return;\n    }\n\n    const scrollLeft = scrollSpeed.current.x * scrollDirection.current.x;\n    const scrollTop = scrollSpeed.current.y * scrollDirection.current.y;\n\n    scrollContainer.scrollBy(scrollLeft, scrollTop);\n  }, []);\n  const sortedScrollableAncestors = useMemo(\n    () =>\n      order === TraversalOrder.TreeOrder\n        ? [...scrollableAncestors].reverse()\n        : scrollableAncestors,\n    [order, scrollableAncestors]\n  );\n\n  useEffect(\n    () => {\n      if (!enabled || !scrollableAncestors.length || !rect) {\n        clearAutoScrollInterval();\n        return;\n      }\n\n      for (const scrollContainer of sortedScrollableAncestors) {\n        if (canScroll?.(scrollContainer) === false) {\n          continue;\n        }\n\n        const index = scrollableAncestors.indexOf(scrollContainer);\n        const scrollContainerRect = scrollableAncestorRects[index];\n\n        if (!scrollContainerRect) {\n          continue;\n        }\n\n        const {direction, speed} = getScrollDirectionAndSpeed(\n          scrollContainer,\n          scrollContainerRect,\n          rect,\n          acceleration,\n          threshold\n        );\n\n        for (const axis of ['x', 'y'] as const) {\n          if (!scrollIntent[axis][direction[axis] as Direction]) {\n            speed[axis] = 0;\n            direction[axis] = 0;\n          }\n        }\n\n        if (speed.x > 0 || speed.y > 0) {\n          clearAutoScrollInterval();\n\n          scrollContainerRef.current = scrollContainer;\n          setAutoScrollInterval(autoScroll, interval);\n\n          scrollSpeed.current = speed;\n          scrollDirection.current = direction;\n\n          return;\n        }\n      }\n\n      scrollSpeed.current = {x: 0, y: 0};\n      scrollDirection.current = {x: 0, y: 0};\n      clearAutoScrollInterval();\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [\n      acceleration,\n      autoScroll,\n      canScroll,\n      clearAutoScrollInterval,\n      enabled,\n      interval,\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      JSON.stringify(rect),\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      JSON.stringify(scrollIntent),\n      setAutoScrollInterval,\n      scrollableAncestors,\n      sortedScrollableAncestors,\n      scrollableAncestorRects,\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      JSON.stringify(threshold),\n    ]\n  );\n}\n\ninterface ScrollIntent {\n  x: Record<Direction, boolean>;\n  y: Record<Direction, boolean>;\n}\n\nconst defaultScrollIntent: ScrollIntent = {\n  x: {[Direction.Backward]: false, [Direction.Forward]: false},\n  y: {[Direction.Backward]: false, [Direction.Forward]: false},\n};\n\nfunction useScrollIntent({\n  delta,\n  disabled,\n}: {\n  delta: Coordinates;\n  disabled: boolean;\n}): ScrollIntent {\n  const previousDelta = usePrevious(delta);\n\n  return useLazyMemo<ScrollIntent>(\n    (previousIntent) => {\n      if (disabled || !previousDelta || !previousIntent) {\n        // Reset scroll intent tracking when auto-scrolling is disabled\n        return defaultScrollIntent;\n      }\n\n      const direction = {\n        x: Math.sign(delta.x - previousDelta.x),\n        y: Math.sign(delta.y - previousDelta.y),\n      };\n\n      // Keep track of the user intent to scroll in each direction for both axis\n      return {\n        x: {\n          [Direction.Backward]:\n            previousIntent.x[Direction.Backward] || direction.x === -1,\n          [Direction.Forward]:\n            previousIntent.x[Direction.Forward] || direction.x === 1,\n        },\n        y: {\n          [Direction.Backward]:\n            previousIntent.y[Direction.Backward] || direction.y === -1,\n          [Direction.Forward]:\n            previousIntent.y[Direction.Forward] || direction.y === 1,\n        },\n      };\n    },\n    [disabled, delta, previousDelta]\n  );\n}\n","import {useCallback, useRef} from 'react';\n\nexport function useInterval() {\n  const intervalRef = useRef<number | null>(null);\n\n  const set = useCallback((listener: Function, duration: number) => {\n    intervalRef.current = setInterval(listener, duration);\n  }, []);\n\n  const clear = useCallback(() => {\n    if (intervalRef.current !== null) {\n      clearInterval(intervalRef.current);\n      intervalRef.current = null;\n    }\n  }, []);\n\n  return [set, clear] as const;\n}\n","import {useCallback, useEffect, useRef, useState} from 'react';\nimport {useLatestValue, useLazyMemo} from '@dnd-kit/utilities';\n\nimport {Rect} from '../../utilities/rect';\nimport type {DroppableContainer, RectMap} from '../../store/types';\nimport type {ClientRect, UniqueIdentifier} from '../../types';\n\ninterface Arguments {\n  dragging: boolean;\n  dependencies: any[];\n  config: DroppableMeasuring;\n}\n\nexport enum MeasuringStrategy {\n  Always,\n  BeforeDragging,\n  WhileDragging,\n}\n\nexport enum MeasuringFrequency {\n  Optimized = 'optimized',\n}\n\ntype MeasuringFunction = (element: HTMLElement) => ClientRect;\n\nexport interface DroppableMeasuring {\n  measure: MeasuringFunction;\n  strategy: MeasuringStrategy;\n  frequency: MeasuringFrequency | number;\n}\n\nconst defaultValue: RectMap = new Map();\n\nexport function useDroppableMeasuring(\n  containers: DroppableContainer[],\n  {dragging, dependencies, config}: Arguments\n) {\n  const [queue, setQueue] = useState<UniqueIdentifier[] | null>(null);\n  const {frequency, measure, strategy} = config;\n  const containersRef = useRef(containers);\n  const disabled = isDisabled();\n  const disabledRef = useLatestValue(disabled);\n  const measureDroppableContainers = useCallback(\n    (ids: UniqueIdentifier[] = []) => {\n      if (disabledRef.current) {\n        return;\n      }\n\n      setQueue((value) => {\n        if (value === null) {\n          return ids;\n        }\n\n        return value.concat(ids.filter((id) => !value.includes(id)));\n      });\n    },\n    [disabledRef]\n  );\n  const timeoutId = useRef<NodeJS.Timeout | null>(null);\n  const droppableRects = useLazyMemo<RectMap>(\n    (previousValue) => {\n      if (disabled && !dragging) {\n        return defaultValue;\n      }\n\n      if (\n        !previousValue ||\n        previousValue === defaultValue ||\n        containersRef.current !== containers ||\n        queue != null\n      ) {\n        const map: RectMap = new Map();\n\n        for (let container of containers) {\n          if (!container) {\n            continue;\n          }\n\n          if (\n            queue &&\n            queue.length > 0 &&\n            !queue.includes(container.id) &&\n            container.rect.current\n          ) {\n            // This container does not need to be re-measured\n            map.set(container.id, container.rect.current);\n            continue;\n          }\n\n          const node = container.node.current;\n          const rect = node ? new Rect(measure(node), node) : null;\n\n          container.rect.current = rect;\n\n          if (rect) {\n            map.set(container.id, rect);\n          }\n        }\n\n        return map;\n      }\n\n      return previousValue;\n    },\n    [containers, queue, dragging, disabled, measure]\n  );\n\n  useEffect(() => {\n    containersRef.current = containers;\n  }, [containers]);\n\n  useEffect(\n    () => {\n      if (disabled) {\n        return;\n      }\n\n      measureDroppableContainers();\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [dragging, disabled]\n  );\n\n  useEffect(\n    () => {\n      if (queue && queue.length > 0) {\n        setQueue(null);\n      }\n    },\n    //eslint-disable-next-line react-hooks/exhaustive-deps\n    [JSON.stringify(queue)]\n  );\n\n  useEffect(\n    () => {\n      if (\n        disabled ||\n        typeof frequency !== 'number' ||\n        timeoutId.current !== null\n      ) {\n        return;\n      }\n\n      timeoutId.current = setTimeout(() => {\n        measureDroppableContainers();\n        timeoutId.current = null;\n      }, frequency);\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [frequency, disabled, measureDroppableContainers, ...dependencies]\n  );\n\n  return {\n    droppableRects,\n    measureDroppableContainers,\n    measuringScheduled: queue != null,\n  };\n\n  function isDisabled() {\n    switch (strategy) {\n      case MeasuringStrategy.Always:\n        return false;\n      case MeasuringStrategy.BeforeDragging:\n        return dragging;\n      default:\n        return !dragging;\n    }\n  }\n}\n","import {useLazyMemo} from '@dnd-kit/utilities';\n\ntype AnyFunction = (...args: any) => any;\n\nexport function useInitialValue<\n  T,\n  U extends AnyFunction | undefined = undefined\n>(\n  value: T | null,\n  computeFn?: U\n): U extends AnyFunction ? ReturnType<U> | null : T | null {\n  return useLazyMemo(\n    (previousValue) => {\n      if (!value) {\n        return null;\n      }\n\n      if (previousValue) {\n        return previousValue;\n      }\n\n      return typeof computeFn === 'function' ? computeFn(value) : value;\n    },\n    [computeFn, value]\n  );\n}\n","import {useEffect, useMemo} from 'react';\nimport {useEvent} from '@dnd-kit/utilities';\n\ninterface Arguments {\n  callback: ResizeObserverCallback;\n  disabled?: boolean;\n}\n\n/**\n * Returns a new ResizeObserver instance bound to the `onResize` callback.\n * If `ResizeObserver` is undefined in the execution environment, returns `undefined`.\n */\nexport function useResizeObserver({callback, disabled}: Arguments) {\n  const handleResize = useEvent(callback);\n  const resizeObserver = useMemo(\n    () => {\n      if (\n        disabled ||\n        typeof window === 'undefined' ||\n        typeof window.ResizeObserver === 'undefined'\n      ) {\n        return undefined;\n      }\n\n      const {ResizeObserver} = window;\n\n      return new ResizeObserver(handleResize);\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [disabled]\n  );\n\n  useEffect(() => {\n    return () => resizeObserver?.disconnect();\n  }, [resizeObserver]);\n\n  return resizeObserver;\n}\n","import {useReducer} from 'react';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\nimport type {ClientRect} from '../../types';\nimport {getClientRect, Rect} from '../../utilities';\n\nimport {useMutationObserver} from './useMutationObserver';\nimport {useResizeObserver} from './useResizeObserver';\n\nfunction defaultMeasure(element: HTMLElement) {\n  return new Rect(getClientRect(element), element);\n}\n\nexport function useRect(\n  element: HTMLElement | null,\n  measure: (element: HTMLElement) => ClientRect = defaultMeasure,\n  fallbackRect?: ClientRect | null\n) {\n  const [rect, measureRect] = useReducer(reducer, null);\n\n  const mutationObserver = useMutationObserver({\n    callback(records) {\n      if (!element) {\n        return;\n      }\n\n      for (const record of records) {\n        const {type, target} = record;\n\n        if (\n          type === 'childList' &&\n          target instanceof HTMLElement &&\n          target.contains(element)\n        ) {\n          measureRect();\n          break;\n        }\n      }\n    },\n  });\n  const resizeObserver = useResizeObserver({callback: measureRect});\n\n  useIsomorphicLayoutEffect(() => {\n    measureRect();\n\n    if (element) {\n      resizeObserver?.observe(element);\n      mutationObserver?.observe(document.body, {\n        childList: true,\n        subtree: true,\n      });\n    } else {\n      resizeObserver?.disconnect();\n      mutationObserver?.disconnect();\n    }\n  }, [element]);\n\n  return rect;\n\n  function reducer(currentRect: ClientRect | null) {\n    if (!element) {\n      return null;\n    }\n\n    if (element.isConnected === false) {\n      // Fall back to last rect we measured if the element is\n      // no longer connected to the DOM.\n      return currentRect ?? fallbackRect ?? null;\n    }\n\n    const newRect = measure(element);\n\n    if (JSON.stringify(currentRect) === JSON.stringify(newRect)) {\n      return currentRect;\n    }\n\n    return newRect;\n  }\n}\n","import {useEffect, useMemo} from 'react';\nimport {useEvent} from '@dnd-kit/utilities';\n\ninterface Arguments {\n  callback: MutationCallback;\n  disabled?: boolean;\n}\n\n/**\n * Returns a new MutationObserver instance.\n * If `MutationObserver` is undefined in the execution environment, returns `undefined`.\n */\nexport function useMutationObserver({callback, disabled}: Arguments) {\n  const handleMutations = useEvent(callback);\n  const mutationObserver = useMemo(() => {\n    if (\n      disabled ||\n      typeof window === 'undefined' ||\n      typeof window.MutationObserver === 'undefined'\n    ) {\n      return undefined;\n    }\n\n    const {MutationObserver} = window;\n\n    return new MutationObserver(handleMutations);\n  }, [handleMutations, disabled]);\n\n  useEffect(() => {\n    return () => mutationObserver?.disconnect();\n  }, [mutationObserver]);\n\n  return mutationObserver;\n}\n","import {useEffect, useRef} from 'react';\nimport {useLazyMemo} from '@dnd-kit/utilities';\n\nimport {getScrollableAncestors} from '../../utilities';\n\nconst defaultValue: Element[] = [];\n\nexport function useScrollableAncestors(node: HTMLElement | null) {\n  const previousNode = useRef(node);\n\n  const ancestors = useLazyMemo<Element[]>(\n    (previousValue) => {\n      if (!node) {\n        return defaultValue;\n      }\n\n      if (\n        previousValue &&\n        previousValue !== defaultValue &&\n        node &&\n        previousNode.current &&\n        node.parentNode === previousNode.current.parentNode\n      ) {\n        return previousValue;\n      }\n\n      return getScrollableAncestors(node);\n    },\n    [node]\n  );\n\n  useEffect(() => {\n    previousNode.current = node;\n  }, [node]);\n\n  return ancestors;\n}\n","import {useEffect, useRef} from 'react';\nimport {Coordinates, subtract} from '@dnd-kit/utilities';\n\nimport {defaultCoordinates} from '../../utilities';\n\nexport function useScrollOffsetsDelta(\n  scrollOffsets: Coordinates,\n  dependencies: any[] = []\n) {\n  const initialScrollOffsets = useRef<Coordinates | null>(null);\n\n  useEffect(\n    () => {\n      initialScrollOffsets.current = null;\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    dependencies\n  );\n\n  useEffect(() => {\n    const hasScrollOffsets = scrollOffsets !== defaultCoordinates;\n\n    if (hasScrollOffsets && !initialScrollOffsets.current) {\n      initialScrollOffsets.current = scrollOffsets;\n    }\n\n    if (!hasScrollOffsets && initialScrollOffsets.current) {\n      initialScrollOffsets.current = null;\n    }\n  }, [scrollOffsets]);\n\n  return initialScrollOffsets.current\n    ? subtract(scrollOffsets, initialScrollOffsets.current)\n    : defaultCoordinates;\n}\n","import {useMemo} from 'react';\n\nimport {getWindowClientRect} from '../../utilities/rect';\n\nexport function useWindowRect(element: typeof window | null) {\n  return useMemo(() => (element ? getWindowClientRect(element) : null), [\n    element,\n  ]);\n}\n","import type {ClientRect} from '../../types';\n\nexport function getWindowClientRect(element: typeof window): ClientRect {\n  const width = element.innerWidth;\n  const height = element.innerHeight;\n\n  return {\n    top: 0,\n    left: 0,\n    right: width,\n    bottom: height,\n    width,\n    height,\n  };\n}\n","import {useReducer} from 'react';\nimport {getWindow, useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\nimport type {ClientRect} from '../../types';\nimport {Rect, getClientRect} from '../../utilities/rect';\nimport {isDocumentScrollingElement} from '../../utilities';\n\nimport {useResizeObserver} from './useResizeObserver';\nimport {useWindowRect} from './useWindowRect';\n\nconst defaultValue: Rect[] = [];\n\nexport function useRects(\n  elements: Element[],\n  measure: (element: Element) => ClientRect = getClientRect\n): ClientRect[] {\n  const [firstElement] = elements;\n  const windowRect = useWindowRect(\n    firstElement ? getWindow(firstElement) : null\n  );\n  const [rects, measureRects] = useReducer(reducer, defaultValue);\n  const resizeObserver = useResizeObserver({callback: measureRects});\n\n  if (elements.length > 0 && rects === defaultValue) {\n    measureRects();\n  }\n\n  useIsomorphicLayoutEffect(() => {\n    if (elements.length) {\n      elements.forEach((element) => resizeObserver?.observe(element));\n    } else {\n      resizeObserver?.disconnect();\n      measureRects();\n    }\n  }, [elements]);\n\n  return rects;\n\n  function reducer() {\n    if (!elements.length) {\n      return defaultValue;\n    }\n\n    return elements.map((element) =>\n      isDocumentScrollingElement(element)\n        ? (windowRect as ClientRect)\n        : new Rect(measure(element), element)\n    );\n  }\n}\n","import {isHTMLElement} from '@dnd-kit/utilities';\n\nexport function getMeasurableNode(\n  node: HTMLElement | undefined | null\n): HTMLElement | null {\n  if (!node) {\n    return null;\n  }\n\n  if (node.children.length > 1) {\n    return node;\n  }\n  const firstChild = node.children[0];\n\n  return isHTMLElement(firstChild) ? firstChild : node;\n}\n","import type {DeepRequired} from '@dnd-kit/utilities';\n\nimport type {DataRef} from '../../store/types';\nimport {KeyboardSensor, PointerSensor} from '../../sensors';\nimport {MeasuringStrategy, MeasuringFrequency} from '../../hooks/utilities';\nimport {\n  getClientRect,\n  getTransformAgnosticClientRect,\n} from '../../utilities/rect';\n\nimport type {MeasuringConfiguration} from './types';\n\nexport const defaultSensors = [\n  {sensor: PointerSensor, options: {}},\n  {sensor: KeyboardSensor, options: {}},\n];\n\nexport const defaultData: DataRef = {current: {}};\n\nexport const defaultMeasuringConfiguration: DeepRequired<MeasuringConfiguration> = {\n  draggable: {\n    measure: getTransformAgnosticClientRect,\n  },\n  droppable: {\n    measure: getTransformAgnosticClientRect,\n    strategy: MeasuringStrategy.WhileDragging,\n    frequency: MeasuringFrequency.Optimized,\n  },\n  dragOverlay: {\n    measure: getClientRect,\n  },\n};\n","import type {UniqueIdentifier} from '../types';\nimport type {DroppableContainer} from './types';\n\ntype Identifier = UniqueIdentifier | null | undefined;\n\nexport class DroppableContainersMap extends Map<\n  UniqueIdentifier,\n  DroppableContainer\n> {\n  get(id: Identifier) {\n    return id != null ? super.get(id) ?? undefined : undefined;\n  }\n\n  toArray(): DroppableContainer[] {\n    return Array.from(this.values());\n  }\n\n  getEnabled(): DroppableContainer[] {\n    return this.toArray().filter(({disabled}) => !disabled);\n  }\n\n  getNodeFor(id: Identifier) {\n    return this.get(id)?.node.current ?? undefined;\n  }\n}\n","import {createContext} from 'react';\n\nimport {noop} from '../utilities/other';\nimport {defaultMeasuringConfiguration} from '../components/DndContext/defaults';\nimport {DroppableContainersMap} from './constructors';\nimport type {InternalContextDescriptor, PublicContextDescriptor} from './types';\n\nexport const defaultPublicContext: PublicContextDescriptor = {\n  activatorEvent: null,\n  active: null,\n  activeNode: null,\n  activeNodeRect: null,\n  collisions: null,\n  containerNodeRect: null,\n  draggableNodes: new Map(),\n  droppableRects: new Map(),\n  droppableContainers: new DroppableContainersMap(),\n  over: null,\n  dragOverlay: {\n    nodeRef: {\n      current: null,\n    },\n    rect: null,\n    setRef: noop,\n  },\n  scrollableAncestors: [],\n  scrollableAncestorRects: [],\n  measuringConfiguration: defaultMeasuringConfiguration,\n  measureDroppableContainers: noop,\n  windowRect: null,\n  measuringScheduled: false,\n};\n\nexport const defaultInternalContext: InternalContextDescriptor = {\n  activatorEvent: null,\n  activators: [],\n  active: null,\n  activeNodeRect: null,\n  ariaDescribedById: {\n    draggable: '',\n  },\n  dispatch: noop,\n  draggableNodes: new Map(),\n  over: null,\n  measureDroppableContainers: noop,\n};\n\nexport const InternalContext = createContext<InternalContextDescriptor>(\n  defaultInternalContext\n);\n\nexport const PublicContext = createContext<PublicContextDescriptor>(\n  defaultPublicContext\n);\n","import {Action, Actions} from './actions';\nimport {DroppableContainersMap} from './constructors';\nimport type {State} from './types';\n\nexport function getInitialState(): State {\n  return {\n    draggable: {\n      active: null,\n      initialCoordinates: {x: 0, y: 0},\n      nodes: new Map(),\n      translate: {x: 0, y: 0},\n    },\n    droppable: {\n      containers: new DroppableContainersMap(),\n    },\n  };\n}\n\nexport function reducer(state: State, action: Actions): State {\n  switch (action.type) {\n    case Action.DragStart:\n      return {\n        ...state,\n        draggable: {\n          ...state.draggable,\n          initialCoordinates: action.initialCoordinates,\n          active: action.active,\n        },\n      };\n    case Action.DragMove:\n      if (!state.draggable.active) {\n        return state;\n      }\n\n      return {\n        ...state,\n        draggable: {\n          ...state.draggable,\n          translate: {\n            x: action.coordinates.x - state.draggable.initialCoordinates.x,\n            y: action.coordinates.y - state.draggable.initialCoordinates.y,\n          },\n        },\n      };\n    case Action.DragEnd:\n    case Action.DragCancel:\n      return {\n        ...state,\n        draggable: {\n          ...state.draggable,\n          active: null,\n          initialCoordinates: {x: 0, y: 0},\n          translate: {x: 0, y: 0},\n        },\n      };\n\n    case Action.RegisterDroppable: {\n      const {element} = action;\n      const {id} = element;\n      const containers = new DroppableContainersMap(state.droppable.containers);\n      containers.set(id, element);\n\n      return {\n        ...state,\n        droppable: {\n          ...state.droppable,\n          containers,\n        },\n      };\n    }\n\n    case Action.SetDroppableDisabled: {\n      const {id, key, disabled} = action;\n      const element = state.droppable.containers.get(id);\n\n      if (!element || key !== element.key) {\n        return state;\n      }\n\n      const containers = new DroppableContainersMap(state.droppable.containers);\n      containers.set(id, {\n        ...element,\n        disabled,\n      });\n\n      return {\n        ...state,\n        droppable: {\n          ...state.droppable,\n          containers,\n        },\n      };\n    }\n\n    case Action.UnregisterDroppable: {\n      const {id, key} = action;\n      const element = state.droppable.containers.get(id);\n\n      if (!element || key !== element.key) {\n        return state;\n      }\n\n      const containers = new DroppableContainersMap(state.droppable.containers);\n      containers.delete(id);\n\n      return {\n        ...state,\n        droppable: {\n          ...state.droppable,\n          containers,\n        },\n      };\n    }\n\n    default: {\n      return state;\n    }\n  }\n}\n","import {useContext, useEffect} from 'react';\nimport {\n  findFirstFocusableNode,\n  isKeyboardEvent,\n  usePrevious,\n} from '@dnd-kit/utilities';\n\nimport {InternalContext} from '../../../store';\n\ninterface Props {\n  disabled: boolean;\n}\n\nexport function RestoreFocus({disabled}: Props) {\n  const {active, activatorEvent, draggableNodes} = useContext(InternalContext);\n  const previousActivatorEvent = usePrevious(activatorEvent);\n  const previousActiveId = usePrevious(active?.id);\n\n  // Restore keyboard focus on the activator node\n  useEffect(() => {\n    if (disabled) {\n      return;\n    }\n\n    if (!activatorEvent && previousActivatorEvent && previousActiveId != null) {\n      if (!isKeyboardEvent(previousActivatorEvent)) {\n        return;\n      }\n\n      if (document.activeElement === previousActivatorEvent.target) {\n        // No need to restore focus\n        return;\n      }\n\n      const draggableNode = draggableNodes.get(previousActiveId);\n\n      if (!draggableNode) {\n        return;\n      }\n\n      const {activatorNode, node} = draggableNode;\n\n      if (!activatorNode.current && !node.current) {\n        return;\n      }\n\n      requestAnimationFrame(() => {\n        for (const element of [activatorNode.current, node.current]) {\n          if (!element) {\n            continue;\n          }\n\n          const focusableNode = findFirstFocusableNode(element);\n\n          if (focusableNode) {\n            focusableNode.focus();\n            break;\n          }\n        }\n      });\n    }\n  }, [\n    activatorEvent,\n    disabled,\n    draggableNodes,\n    previousActiveId,\n    previousActivatorEvent,\n  ]);\n\n  return null;\n}\n","import type {FirstArgument, Transform} from '@dnd-kit/utilities';\n\nimport type {Modifiers, Modifier} from './types';\n\nexport function applyModifiers(\n  modifiers: Modifiers | undefined,\n  {transform, ...args}: FirstArgument<Modifier>\n): Transform {\n  return modifiers?.length\n    ? modifiers.reduce<Transform>((accumulator, modifier) => {\n        return modifier({\n          transform: accumulator,\n          ...args,\n        });\n      }, transform)\n    : transform;\n}\n","import React, {\n  memo,\n  createContext,\n  useCallback,\n  useEffect,\n  useMemo,\n  useReducer,\n  useRef,\n  useState,\n} from 'react';\nimport {unstable_batchedUpdates} from 'react-dom';\nimport {\n  add,\n  getEventCoordinates,\n  getWindow,\n  useLatestValue,\n  useIsomorphicLayoutEffect,\n  useUniqueId,\n} from '@dnd-kit/utilities';\nimport type {Transform} from '@dnd-kit/utilities';\n\nimport {\n  Action,\n  PublicContext,\n  InternalContext,\n  PublicContextDescriptor,\n  InternalContextDescriptor,\n  getInitialState,\n  reducer,\n} from '../../store';\nimport {DndMonitorContext, useDndMonitorProvider} from '../DndMonitor';\nimport {\n  useAutoScroller,\n  useCachedNode,\n  useCombineActivators,\n  useDragOverlayMeasuring,\n  useDroppableMeasuring,\n  useInitialRect,\n  useRect,\n  useRectDelta,\n  useRects,\n  useScrollableAncestors,\n  useScrollOffsets,\n  useScrollOffsetsDelta,\n  useSensorSetup,\n  useWindowRect,\n} from '../../hooks/utilities';\nimport type {AutoScrollOptions, SyntheticListener} from '../../hooks/utilities';\nimport type {\n  Sensor,\n  SensorContext,\n  SensorDescriptor,\n  SensorActivatorFunction,\n  SensorInstance,\n} from '../../sensors';\nimport {\n  adjustScale,\n  CollisionDetection,\n  defaultCoordinates,\n  getAdjustedRect,\n  getFirstCollision,\n  rectIntersection,\n} from '../../utilities';\nimport {applyModifiers, Modifiers} from '../../modifiers';\nimport type {Active, Over} from '../../store/types';\nimport type {\n  DragStartEvent,\n  DragCancelEvent,\n  DragEndEvent,\n  DragMoveEvent,\n  DragOverEvent,\n  UniqueIdentifier,\n} from '../../types';\nimport {\n  Accessibility,\n  Announcements,\n  RestoreFocus,\n  ScreenReaderInstructions,\n} from '../Accessibility';\n\nimport {defaultData, defaultSensors} from './defaults';\nimport {\n  useLayoutShiftScrollCompensation,\n  useMeasuringConfiguration,\n} from './hooks';\nimport type {MeasuringConfiguration} from './types';\n\nexport interface Props {\n  id?: string;\n  accessibility?: {\n    announcements?: Announcements;\n    container?: Element;\n    restoreFocus?: boolean;\n    screenReaderInstructions?: ScreenReaderInstructions;\n  };\n  autoScroll?: boolean | AutoScrollOptions;\n  cancelDrop?: CancelDrop;\n  children?: React.ReactNode;\n  collisionDetection?: CollisionDetection;\n  measuring?: MeasuringConfiguration;\n  modifiers?: Modifiers;\n  sensors?: SensorDescriptor<any>[];\n  onDragStart?(event: DragStartEvent): void;\n  onDragMove?(event: DragMoveEvent): void;\n  onDragOver?(event: DragOverEvent): void;\n  onDragEnd?(event: DragEndEvent): void;\n  onDragCancel?(event: DragCancelEvent): void;\n}\n\nexport interface CancelDropArguments extends DragEndEvent {}\n\nexport type CancelDrop = (\n  args: CancelDropArguments\n) => boolean | Promise<boolean>;\n\ninterface DndEvent extends Event {\n  dndKit?: {\n    capturedBy: Sensor<any>;\n  };\n}\n\nexport const ActiveDraggableContext = createContext<Transform>({\n  ...defaultCoordinates,\n  scaleX: 1,\n  scaleY: 1,\n});\n\nenum Status {\n  Uninitialized,\n  Initializing,\n  Initialized,\n}\n\nexport const DndContext = memo(function DndContext({\n  id,\n  accessibility,\n  autoScroll = true,\n  children,\n  sensors = defaultSensors,\n  collisionDetection = rectIntersection,\n  measuring,\n  modifiers,\n  ...props\n}: Props) {\n  const store = useReducer(reducer, undefined, getInitialState);\n  const [state, dispatch] = store;\n  const [dispatchMonitorEvent, registerMonitorListener] =\n    useDndMonitorProvider();\n  const [status, setStatus] = useState<Status>(Status.Uninitialized);\n  const isInitialized = status === Status.Initialized;\n  const {\n    draggable: {active: activeId, nodes: draggableNodes, translate},\n    droppable: {containers: droppableContainers},\n  } = state;\n  const node = activeId ? draggableNodes.get(activeId) : null;\n  const activeRects = useRef<Active['rect']['current']>({\n    initial: null,\n    translated: null,\n  });\n  const active = useMemo<Active | null>(\n    () =>\n      activeId != null\n        ? {\n            id: activeId,\n            // It's possible for the active node to unmount while dragging\n            data: node?.data ?? defaultData,\n            rect: activeRects,\n          }\n        : null,\n    [activeId, node]\n  );\n  const activeRef = useRef<UniqueIdentifier | null>(null);\n  const [activeSensor, setActiveSensor] = useState<SensorInstance | null>(null);\n  const [activatorEvent, setActivatorEvent] = useState<Event | null>(null);\n  const latestProps = useLatestValue(props, Object.values(props));\n  const draggableDescribedById = useUniqueId(`DndDescribedBy`, id);\n  const enabledDroppableContainers = useMemo(\n    () => droppableContainers.getEnabled(),\n    [droppableContainers]\n  );\n  const measuringConfiguration = useMeasuringConfiguration(measuring);\n  const {droppableRects, measureDroppableContainers, measuringScheduled} =\n    useDroppableMeasuring(enabledDroppableContainers, {\n      dragging: isInitialized,\n      dependencies: [translate.x, translate.y],\n      config: measuringConfiguration.droppable,\n    });\n  const activeNode = useCachedNode(draggableNodes, activeId);\n  const activationCoordinates = useMemo(\n    () => (activatorEvent ? getEventCoordinates(activatorEvent) : null),\n    [activatorEvent]\n  );\n  const autoScrollOptions = getAutoScrollerOptions();\n  const initialActiveNodeRect = useInitialRect(\n    activeNode,\n    measuringConfiguration.draggable.measure\n  );\n\n  useLayoutShiftScrollCompensation({\n    activeNode: activeId ? draggableNodes.get(activeId) : null,\n    config: autoScrollOptions.layoutShiftCompensation,\n    initialRect: initialActiveNodeRect,\n    measure: measuringConfiguration.draggable.measure,\n  });\n\n  const activeNodeRect = useRect(\n    activeNode,\n    measuringConfiguration.draggable.measure,\n    initialActiveNodeRect\n  );\n  const containerNodeRect = useRect(\n    activeNode ? activeNode.parentElement : null\n  );\n  const sensorContext = useRef<SensorContext>({\n    activatorEvent: null,\n    active: null,\n    activeNode,\n    collisionRect: null,\n    collisions: null,\n    droppableRects,\n    draggableNodes,\n    draggingNode: null,\n    draggingNodeRect: null,\n    droppableContainers,\n    over: null,\n    scrollableAncestors: [],\n    scrollAdjustedTranslate: null,\n  });\n  const overNode = droppableContainers.getNodeFor(\n    sensorContext.current.over?.id\n  );\n  const dragOverlay = useDragOverlayMeasuring({\n    measure: measuringConfiguration.dragOverlay.measure,\n  });\n\n  // Use the rect of the drag overlay if it is mounted\n  const draggingNode = dragOverlay.nodeRef.current ?? activeNode;\n  const draggingNodeRect = isInitialized\n    ? dragOverlay.rect ?? activeNodeRect\n    : null;\n  const usesDragOverlay = Boolean(\n    dragOverlay.nodeRef.current && dragOverlay.rect\n  );\n  // The delta between the previous and new position of the draggable node\n  // is only relevant when there is no drag overlay\n  const nodeRectDelta = useRectDelta(usesDragOverlay ? null : activeNodeRect);\n\n  // Get the window rect of the dragging node\n  const windowRect = useWindowRect(\n    draggingNode ? getWindow(draggingNode) : null\n  );\n\n  // Get scrollable ancestors of the dragging node\n  const scrollableAncestors = useScrollableAncestors(\n    isInitialized ? overNode ?? activeNode : null\n  );\n  const scrollableAncestorRects = useRects(scrollableAncestors);\n\n  // Apply modifiers\n  const modifiedTranslate = applyModifiers(modifiers, {\n    transform: {\n      x: translate.x - nodeRectDelta.x,\n      y: translate.y - nodeRectDelta.y,\n      scaleX: 1,\n      scaleY: 1,\n    },\n    activatorEvent,\n    active,\n    activeNodeRect,\n    containerNodeRect,\n    draggingNodeRect,\n    over: sensorContext.current.over,\n    overlayNodeRect: dragOverlay.rect,\n    scrollableAncestors,\n    scrollableAncestorRects,\n    windowRect,\n  });\n\n  const pointerCoordinates = activationCoordinates\n    ? add(activationCoordinates, translate)\n    : null;\n\n  const scrollOffsets = useScrollOffsets(scrollableAncestors);\n  // Represents the scroll delta since dragging was initiated\n  const scrollAdjustment = useScrollOffsetsDelta(scrollOffsets);\n  // Represents the scroll delta since the last time the active node rect was measured\n  const activeNodeScrollDelta = useScrollOffsetsDelta(scrollOffsets, [\n    activeNodeRect,\n  ]);\n\n  const scrollAdjustedTranslate = add(modifiedTranslate, scrollAdjustment);\n\n  const collisionRect = draggingNodeRect\n    ? getAdjustedRect(draggingNodeRect, modifiedTranslate)\n    : null;\n\n  const collisions =\n    active && collisionRect\n      ? collisionDetection({\n          active,\n          collisionRect,\n          droppableRects,\n          droppableContainers: enabledDroppableContainers,\n          pointerCoordinates,\n        })\n      : null;\n  const overId = getFirstCollision(collisions, 'id');\n  const [over, setOver] = useState<Over | null>(null);\n\n  // When there is no drag overlay used, we need to account for the\n  // window scroll delta\n  const appliedTranslate = usesDragOverlay\n    ? modifiedTranslate\n    : add(modifiedTranslate, activeNodeScrollDelta);\n\n  const transform = adjustScale(\n    appliedTranslate,\n    over?.rect ?? null,\n    activeNodeRect\n  );\n\n  const instantiateSensor = useCallback(\n    (\n      event: React.SyntheticEvent,\n      {sensor: Sensor, options}: SensorDescriptor<any>\n    ) => {\n      if (activeRef.current == null) {\n        return;\n      }\n\n      const activeNode = draggableNodes.get(activeRef.current);\n\n      if (!activeNode) {\n        return;\n      }\n\n      const activatorEvent = event.nativeEvent;\n\n      const sensorInstance = new Sensor({\n        active: activeRef.current,\n        activeNode,\n        event: activatorEvent,\n        options,\n        // Sensors need to be instantiated with refs for arguments that change over time\n        // otherwise they are frozen in time with the stale arguments\n        context: sensorContext,\n        onStart(initialCoordinates) {\n          const id = activeRef.current;\n\n          if (id == null) {\n            return;\n          }\n\n          const draggableNode = draggableNodes.get(id);\n\n          if (!draggableNode) {\n            return;\n          }\n\n          const {onDragStart} = latestProps.current;\n          const event: DragStartEvent = {\n            active: {id, data: draggableNode.data, rect: activeRects},\n          };\n\n          unstable_batchedUpdates(() => {\n            onDragStart?.(event);\n            setStatus(Status.Initializing);\n            dispatch({\n              type: Action.DragStart,\n              initialCoordinates,\n              active: id,\n            });\n            dispatchMonitorEvent({type: 'onDragStart', event});\n          });\n        },\n        onMove(coordinates) {\n          dispatch({\n            type: Action.DragMove,\n            coordinates,\n          });\n        },\n        onEnd: createHandler(Action.DragEnd),\n        onCancel: createHandler(Action.DragCancel),\n      });\n\n      unstable_batchedUpdates(() => {\n        setActiveSensor(sensorInstance);\n        setActivatorEvent(event.nativeEvent);\n      });\n\n      function createHandler(type: Action.DragEnd | Action.DragCancel) {\n        return async function handler() {\n          const {active, collisions, over, scrollAdjustedTranslate} =\n            sensorContext.current;\n          let event: DragEndEvent | null = null;\n\n          if (active && scrollAdjustedTranslate) {\n            const {cancelDrop} = latestProps.current;\n\n            event = {\n              activatorEvent,\n              active: active,\n              collisions,\n              delta: scrollAdjustedTranslate,\n              over,\n            };\n\n            if (type === Action.DragEnd && typeof cancelDrop === 'function') {\n              const shouldCancel = await Promise.resolve(cancelDrop(event));\n\n              if (shouldCancel) {\n                type = Action.DragCancel;\n              }\n            }\n          }\n\n          activeRef.current = null;\n\n          unstable_batchedUpdates(() => {\n            dispatch({type});\n            setStatus(Status.Uninitialized);\n            setOver(null);\n            setActiveSensor(null);\n            setActivatorEvent(null);\n\n            const eventName =\n              type === Action.DragEnd ? 'onDragEnd' : 'onDragCancel';\n\n            if (event) {\n              const handler = latestProps.current[eventName];\n\n              handler?.(event);\n              dispatchMonitorEvent({type: eventName, event});\n            }\n          });\n        };\n      }\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [draggableNodes]\n  );\n\n  const bindActivatorToSensorInstantiator = useCallback(\n    (\n      handler: SensorActivatorFunction<any>,\n      sensor: SensorDescriptor<any>\n    ): SyntheticListener['handler'] => {\n      return (event, active) => {\n        const nativeEvent = event.nativeEvent as DndEvent;\n        const activeDraggableNode = draggableNodes.get(active);\n\n        if (\n          // Another sensor is already instantiating\n          activeRef.current !== null ||\n          // No active draggable\n          !activeDraggableNode ||\n          // Event has already been captured\n          nativeEvent.dndKit ||\n          nativeEvent.defaultPrevented\n        ) {\n          return;\n        }\n\n        const activationContext = {\n          active: activeDraggableNode,\n        };\n        const shouldActivate = handler(\n          event,\n          sensor.options,\n          activationContext\n        );\n\n        if (shouldActivate === true) {\n          nativeEvent.dndKit = {\n            capturedBy: sensor.sensor,\n          };\n\n          activeRef.current = active;\n          instantiateSensor(event, sensor);\n        }\n      };\n    },\n    [draggableNodes, instantiateSensor]\n  );\n\n  const activators = useCombineActivators(\n    sensors,\n    bindActivatorToSensorInstantiator\n  );\n\n  useSensorSetup(sensors);\n\n  useIsomorphicLayoutEffect(() => {\n    if (activeNodeRect && status === Status.Initializing) {\n      setStatus(Status.Initialized);\n    }\n  }, [activeNodeRect, status]);\n\n  useEffect(\n    () => {\n      const {onDragMove} = latestProps.current;\n      const {active, activatorEvent, collisions, over} = sensorContext.current;\n\n      if (!active || !activatorEvent) {\n        return;\n      }\n\n      const event: DragMoveEvent = {\n        active,\n        activatorEvent,\n        collisions,\n        delta: {\n          x: scrollAdjustedTranslate.x,\n          y: scrollAdjustedTranslate.y,\n        },\n        over,\n      };\n\n      unstable_batchedUpdates(() => {\n        onDragMove?.(event);\n        dispatchMonitorEvent({type: 'onDragMove', event});\n      });\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [scrollAdjustedTranslate.x, scrollAdjustedTranslate.y]\n  );\n\n  useEffect(\n    () => {\n      const {\n        active,\n        activatorEvent,\n        collisions,\n        droppableContainers,\n        scrollAdjustedTranslate,\n      } = sensorContext.current;\n\n      if (\n        !active ||\n        activeRef.current == null ||\n        !activatorEvent ||\n        !scrollAdjustedTranslate\n      ) {\n        return;\n      }\n\n      const {onDragOver} = latestProps.current;\n      const overContainer = droppableContainers.get(overId);\n      const over =\n        overContainer && overContainer.rect.current\n          ? {\n              id: overContainer.id,\n              rect: overContainer.rect.current,\n              data: overContainer.data,\n              disabled: overContainer.disabled,\n            }\n          : null;\n      const event: DragOverEvent = {\n        active,\n        activatorEvent,\n        collisions,\n        delta: {\n          x: scrollAdjustedTranslate.x,\n          y: scrollAdjustedTranslate.y,\n        },\n        over,\n      };\n\n      unstable_batchedUpdates(() => {\n        setOver(over);\n        onDragOver?.(event);\n        dispatchMonitorEvent({type: 'onDragOver', event});\n      });\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [overId]\n  );\n\n  useIsomorphicLayoutEffect(() => {\n    sensorContext.current = {\n      activatorEvent,\n      active,\n      activeNode,\n      collisionRect,\n      collisions,\n      droppableRects,\n      draggableNodes,\n      draggingNode,\n      draggingNodeRect,\n      droppableContainers,\n      over,\n      scrollableAncestors,\n      scrollAdjustedTranslate,\n    };\n\n    activeRects.current = {\n      initial: draggingNodeRect,\n      translated: collisionRect,\n    };\n  }, [\n    active,\n    activeNode,\n    collisions,\n    collisionRect,\n    draggableNodes,\n    draggingNode,\n    draggingNodeRect,\n    droppableRects,\n    droppableContainers,\n    over,\n    scrollableAncestors,\n    scrollAdjustedTranslate,\n  ]);\n\n  useAutoScroller({\n    ...autoScrollOptions,\n    delta: translate,\n    draggingRect: collisionRect,\n    pointerCoordinates,\n    scrollableAncestors,\n    scrollableAncestorRects,\n  });\n\n  const publicContext = useMemo(() => {\n    const context: PublicContextDescriptor = {\n      active,\n      activeNode,\n      activeNodeRect,\n      activatorEvent,\n      collisions,\n      containerNodeRect,\n      dragOverlay,\n      draggableNodes,\n      droppableContainers,\n      droppableRects,\n      over,\n      measureDroppableContainers,\n      scrollableAncestors,\n      scrollableAncestorRects,\n      measuringConfiguration,\n      measuringScheduled,\n      windowRect,\n    };\n\n    return context;\n  }, [\n    active,\n    activeNode,\n    activeNodeRect,\n    activatorEvent,\n    collisions,\n    containerNodeRect,\n    dragOverlay,\n    draggableNodes,\n    droppableContainers,\n    droppableRects,\n    over,\n    measureDroppableContainers,\n    scrollableAncestors,\n    scrollableAncestorRects,\n    measuringConfiguration,\n    measuringScheduled,\n    windowRect,\n  ]);\n\n  const internalContext = useMemo(() => {\n    const context: InternalContextDescriptor = {\n      activatorEvent,\n      activators,\n      active,\n      activeNodeRect,\n      ariaDescribedById: {\n        draggable: draggableDescribedById,\n      },\n      dispatch,\n      draggableNodes,\n      over,\n      measureDroppableContainers,\n    };\n\n    return context;\n  }, [\n    activatorEvent,\n    activators,\n    active,\n    activeNodeRect,\n    dispatch,\n    draggableDescribedById,\n    draggableNodes,\n    over,\n    measureDroppableContainers,\n  ]);\n\n  return (\n    <DndMonitorContext.Provider value={registerMonitorListener}>\n      <InternalContext.Provider value={internalContext}>\n        <PublicContext.Provider value={publicContext}>\n          <ActiveDraggableContext.Provider value={transform}>\n            {children}\n          </ActiveDraggableContext.Provider>\n        </PublicContext.Provider>\n        <RestoreFocus disabled={accessibility?.restoreFocus === false} />\n      </InternalContext.Provider>\n      <Accessibility\n        {...accessibility}\n        hiddenTextDescribedById={draggableDescribedById}\n      />\n    </DndMonitorContext.Provider>\n  );\n\n  function getAutoScrollerOptions() {\n    const activeSensorDisablesAutoscroll =\n      activeSensor?.autoScrollEnabled === false;\n    const autoScrollGloballyDisabled =\n      typeof autoScroll === 'object'\n        ? autoScroll.enabled === false\n        : autoScroll === false;\n    const enabled =\n      isInitialized &&\n      !activeSensorDisablesAutoscroll &&\n      !autoScrollGloballyDisabled;\n\n    if (typeof autoScroll === 'object') {\n      return {\n        ...autoScroll,\n        enabled,\n      };\n    }\n\n    return {enabled};\n  }\n});\n","import {useCallback, useState} from 'react';\n\nimport type {DndMonitorListener, DndMonitorEvent} from './types';\n\nexport function useDndMonitorProvider() {\n  const [listeners] = useState(() => new Set<DndMonitorListener>());\n\n  const registerListener = useCallback(\n    (listener) => {\n      listeners.add(listener);\n      return () => listeners.delete(listener);\n    },\n    [listeners]\n  );\n\n  const dispatch = useCallback(\n    ({type, event}: DndMonitorEvent) => {\n      listeners.forEach((listener) => listener[type]?.(event as any));\n    },\n    [listeners]\n  );\n\n  return [dispatch, registerListener] as const;\n}\n","import {useMemo} from 'react';\nimport type {DeepRequired} from '@dnd-kit/utilities';\n\nimport {defaultMeasuringConfiguration} from '../defaults';\nimport type {MeasuringConfiguration} from '../types';\n\nexport function useMeasuringConfiguration(\n  config: MeasuringConfiguration | undefined\n): DeepRequired<MeasuringConfiguration> {\n  return useMemo(\n    () => ({\n      draggable: {\n        ...defaultMeasuringConfiguration.draggable,\n        ...config?.draggable,\n      },\n      droppable: {\n        ...defaultMeasuringConfiguration.droppable,\n        ...config?.droppable,\n      },\n      dragOverlay: {\n        ...defaultMeasuringConfiguration.dragOverlay,\n        ...config?.dragOverlay,\n      },\n    }),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [config?.draggable, config?.droppable, config?.dragOverlay]\n  );\n}\n","import {useLazyMemo} from '@dnd-kit/utilities';\n\nimport type {DraggableNode, DraggableNodes} from '../../store';\nimport type {UniqueIdentifier} from '../../types';\n\nexport function useCachedNode(\n  draggableNodes: DraggableNodes,\n  id: UniqueIdentifier | null\n): DraggableNode['node']['current'] {\n  const draggableNode = id !== null ? draggableNodes.get(id) : undefined;\n  const node = draggableNode ? draggableNode.node.current : null;\n\n  return useLazyMemo(\n    (cachedNode) => {\n      if (id === null) {\n        return null;\n      }\n\n      // In some cases, the draggable node can unmount while dragging\n      // This is the case for virtualized lists. In those situations,\n      // we fall back to the last known value for that node.\n      return node ?? cachedNode ?? null;\n    },\n    [node, id]\n  );\n}\n","import type {ClientRect} from '../../types';\nimport {useInitialValue} from './useInitialValue';\n\nexport function useInitialRect(\n  node: HTMLElement | null,\n  measure: (node: HTMLElement) => ClientRect\n) {\n  return useInitialValue(node, measure);\n}\n","import {useRef} from 'react';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\nimport {getRectDelta} from '../../../utilities/rect';\nimport {getFirstScrollableAncestor} from '../../../utilities/scroll';\nimport type {ClientRect} from '../../../types';\nimport type {DraggableNode} from '../../../store';\nimport type {MeasuringFunction} from '../types';\n\ninterface Options {\n  activeNode: DraggableNode | null | undefined;\n  config: boolean | {x: boolean; y: boolean} | undefined;\n  initialRect: ClientRect | null;\n  measure: MeasuringFunction;\n}\n\nexport function useLayoutShiftScrollCompensation({\n  activeNode,\n  measure,\n  initialRect,\n  config = true,\n}: Options) {\n  const initialized = useRef(false);\n  const {x, y} = typeof config === 'boolean' ? {x: config, y: config} : config;\n\n  useIsomorphicLayoutEffect(() => {\n    const disabled = !x && !y;\n\n    if (disabled || !activeNode) {\n      initialized.current = false;\n      return;\n    }\n\n    if (initialized.current || !initialRect) {\n      // Return early if layout shift scroll compensation was already attempted\n      // or if there is no initialRect to compare to.\n      return;\n    }\n\n    // Get the most up to date node ref for the active draggable\n    const node = activeNode?.node.current;\n\n    if (!node || node.isConnected === false) {\n      // Return early if there is no attached node ref or if the node is\n      // disconnected from the document.\n      return;\n    }\n\n    const rect = measure(node);\n    const rectDelta = getRectDelta(rect, initialRect);\n\n    if (!x) {\n      rectDelta.x = 0;\n    }\n\n    if (!y) {\n      rectDelta.y = 0;\n    }\n\n    // Only perform layout shift scroll compensation once\n    initialized.current = true;\n\n    if (Math.abs(rectDelta.x) > 0 || Math.abs(rectDelta.y) > 0) {\n      const firstScrollableAncestor = getFirstScrollableAncestor(node);\n\n      if (firstScrollableAncestor) {\n        firstScrollableAncestor.scrollBy({\n          top: rectDelta.y,\n          left: rectDelta.x,\n        });\n      }\n    }\n  }, [activeNode, x, y, initialRect, measure]);\n}\n","import {useMemo, useCallback, useState} from 'react';\nimport {isHTMLElement, useNodeRef} from '@dnd-kit/utilities';\n\nimport {useResizeObserver} from './useResizeObserver';\nimport {getMeasurableNode} from '../../utilities/nodes';\nimport type {PublicContextDescriptor} from '../../store';\nimport type {ClientRect} from '../../types';\n\ninterface Arguments {\n  measure(element: HTMLElement): ClientRect;\n}\n\nexport function useDragOverlayMeasuring({\n  measure,\n}: Arguments): PublicContextDescriptor['dragOverlay'] {\n  const [rect, setRect] = useState<ClientRect | null>(null);\n  const handleResize = useCallback(\n    (entries: ResizeObserverEntry[]) => {\n      for (const {target} of entries) {\n        if (isHTMLElement(target)) {\n          setRect((rect) => {\n            const newRect = measure(target);\n\n            return rect\n              ? {...rect, width: newRect.width, height: newRect.height}\n              : newRect;\n          });\n          break;\n        }\n      }\n    },\n    [measure]\n  );\n  const resizeObserver = useResizeObserver({callback: handleResize});\n  const handleNodeChange = useCallback(\n    (element) => {\n      const node = getMeasurableNode(element);\n\n      resizeObserver?.disconnect();\n\n      if (node) {\n        resizeObserver?.observe(node);\n      }\n\n      setRect(node ? measure(node) : null);\n    },\n    [measure, resizeObserver]\n  );\n  const [nodeRef, setRef] = useNodeRef(handleNodeChange);\n\n  return useMemo(\n    () => ({\n      nodeRef,\n      rect,\n      setRef,\n    }),\n    [rect, nodeRef, setRef]\n  );\n}\n","import type {ClientRect} from '../../types';\nimport {getRectDelta} from '../../utilities';\n\nimport {useInitialValue} from './useInitialValue';\n\nexport function useRectDelta(rect: ClientRect | null) {\n  const initialRect = useInitialValue(rect);\n\n  return getRectDelta(rect, initialRect);\n}\n","import {useState, useCallback, useMemo, useRef, useEffect} from 'react';\nimport {add} from '@dnd-kit/utilities';\n\nimport {\n  defaultCoordinates,\n  getScrollableElement,\n  getScrollCoordinates,\n  getScrollOffsets,\n} from '../../utilities';\nimport type {Coordinates} from '../../types';\n\ntype ScrollCoordinates = Map<HTMLElement | Window, Coordinates>;\n\nexport function useScrollOffsets(elements: Element[]): Coordinates {\n  const [\n    scrollCoordinates,\n    setScrollCoordinates,\n  ] = useState<ScrollCoordinates | null>(null);\n  const prevElements = useRef(elements);\n\n  // To-do: Throttle the handleScroll callback\n  const handleScroll = useCallback((event: Event) => {\n    const scrollingElement = getScrollableElement(event.target);\n\n    if (!scrollingElement) {\n      return;\n    }\n\n    setScrollCoordinates((scrollCoordinates) => {\n      if (!scrollCoordinates) {\n        return null;\n      }\n\n      scrollCoordinates.set(\n        scrollingElement,\n        getScrollCoordinates(scrollingElement)\n      );\n\n      return new Map(scrollCoordinates);\n    });\n  }, []);\n\n  useEffect(() => {\n    const previousElements = prevElements.current;\n\n    if (elements !== previousElements) {\n      cleanup(previousElements);\n\n      const entries = elements\n        .map((element) => {\n          const scrollableElement = getScrollableElement(element);\n\n          if (scrollableElement) {\n            scrollableElement.addEventListener('scroll', handleScroll, {\n              passive: true,\n            });\n\n            return [\n              scrollableElement,\n              getScrollCoordinates(scrollableElement),\n            ] as const;\n          }\n\n          return null;\n        })\n        .filter(\n          (\n            entry\n          ): entry is [\n            HTMLElement | (Window & typeof globalThis),\n            Coordinates\n          ] => entry != null\n        );\n\n      setScrollCoordinates(entries.length ? new Map(entries) : null);\n\n      prevElements.current = elements;\n    }\n\n    return () => {\n      cleanup(elements);\n      cleanup(previousElements);\n    };\n\n    function cleanup(elements: Element[]) {\n      elements.forEach((element) => {\n        const scrollableElement = getScrollableElement(element);\n\n        scrollableElement?.removeEventListener('scroll', handleScroll);\n      });\n    }\n  }, [handleScroll, elements]);\n\n  return useMemo(() => {\n    if (elements.length) {\n      return scrollCoordinates\n        ? Array.from(scrollCoordinates.values()).reduce(\n            (acc, coordinates) => add(acc, coordinates),\n            defaultCoordinates\n          )\n        : getScrollOffsets(elements);\n    }\n\n    return defaultCoordinates;\n  }, [elements, scrollCoordinates]);\n}\n","import type {Transform} from '@dnd-kit/utilities';\nimport type {ClientRect} from '../../types';\n\nexport function adjustScale(\n  transform: Transform,\n  rect1: ClientRect | null,\n  rect2: ClientRect | null\n): Transform {\n  return {\n    ...transform,\n    scaleX: rect1 && rect2 ? rect1.width / rect2.width : 1,\n    scaleY: rect1 && rect2 ? rect1.height / rect2.height : 1,\n  };\n}\n","import {useMemo} from 'react';\n\nimport type {SensorActivatorFunction, SensorDescriptor} from '../../sensors';\nimport type {\n  SyntheticListener,\n  SyntheticListeners,\n} from './useSyntheticListeners';\n\nexport function useCombineActivators(\n  sensors: SensorDescriptor<any>[],\n  getSyntheticHandler: (\n    handler: SensorActivatorFunction<any>,\n    sensor: SensorDescriptor<any>\n  ) => SyntheticListener['handler']\n): SyntheticListeners {\n  return useMemo(\n    () =>\n      sensors.reduce<SyntheticListeners>((accumulator, sensor) => {\n        const {sensor: Sensor} = sensor;\n\n        const sensorActivators = Sensor.activators.map((activator) => ({\n          eventName: activator.eventName,\n          handler: getSyntheticHandler(activator.handler, sensor),\n        }));\n\n        return [...accumulator, ...sensorActivators];\n      }, []),\n    [sensors, getSyntheticHandler]\n  );\n}\n","import {useEffect} from 'react';\nimport {canUseDOM} from '@dnd-kit/utilities';\n\nimport type {SensorDescriptor} from '../../sensors';\n\nexport function useSensorSetup(sensors: SensorDescriptor<any>[]) {\n  useEffect(\n    () => {\n      if (!canUseDOM) {\n        return;\n      }\n\n      const teardownFns = sensors.map(({sensor}) => sensor.setup?.());\n\n      return () => {\n        for (const teardown of teardownFns) {\n          teardown?.();\n        }\n      };\n    },\n    // TO-DO: Sensors length could theoretically change which would not be a valid dependency\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    sensors.map(({sensor}) => sensor)\n  );\n}\n","import {createContext, useContext, useMemo} from 'react';\nimport {\n  Transform,\n  useNodeRef,\n  useIsomorphicLayoutEffect,\n  useLatestValue,\n  useUniqueId,\n} from '@dnd-kit/utilities';\n\nimport {InternalContext, Data} from '../store';\nimport type {UniqueIdentifier} from '../types';\nimport {ActiveDraggableContext} from '../components/DndContext';\nimport {useSyntheticListeners, SyntheticListenerMap} from './utilities';\n\nexport interface UseDraggableArguments {\n  id: UniqueIdentifier;\n  data?: Data;\n  disabled?: boolean;\n  attributes?: {\n    role?: string;\n    roleDescription?: string;\n    tabIndex?: number;\n  };\n}\n\nexport interface DraggableAttributes {\n  role: string;\n  tabIndex: number;\n  'aria-disabled': boolean;\n  'aria-pressed': boolean | undefined;\n  'aria-roledescription': string;\n  'aria-describedby': string;\n}\n\nexport type DraggableSyntheticListeners = SyntheticListenerMap | undefined;\n\nconst NullContext = createContext<any>(null);\n\nconst defaultRole = 'button';\n\nconst ID_PREFIX = 'Droppable';\n\nexport function useDraggable({\n  id,\n  data,\n  disabled = false,\n  attributes,\n}: UseDraggableArguments) {\n  const key = useUniqueId(ID_PREFIX);\n  const {\n    activators,\n    activatorEvent,\n    active,\n    activeNodeRect,\n    ariaDescribedById,\n    draggableNodes,\n    over,\n  } = useContext(InternalContext);\n  const {\n    role = defaultRole,\n    roleDescription = 'draggable',\n    tabIndex = 0,\n  } = attributes ?? {};\n  const isDragging = active?.id === id;\n  const transform: Transform | null = useContext(\n    isDragging ? ActiveDraggableContext : NullContext\n  );\n  const [node, setNodeRef] = useNodeRef();\n  const [activatorNode, setActivatorNodeRef] = useNodeRef();\n  const listeners = useSyntheticListeners(activators, id);\n  const dataRef = useLatestValue(data);\n\n  useIsomorphicLayoutEffect(\n    () => {\n      draggableNodes.set(id, {id, key, node, activatorNode, data: dataRef});\n\n      return () => {\n        const node = draggableNodes.get(id);\n\n        if (node && node.key === key) {\n          draggableNodes.delete(id);\n        }\n      };\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [draggableNodes, id]\n  );\n\n  const memoizedAttributes: DraggableAttributes = useMemo(\n    () => ({\n      role,\n      tabIndex,\n      'aria-disabled': disabled,\n      'aria-pressed': isDragging && role === defaultRole ? true : undefined,\n      'aria-roledescription': roleDescription,\n      'aria-describedby': ariaDescribedById.draggable,\n    }),\n    [\n      disabled,\n      role,\n      tabIndex,\n      isDragging,\n      roleDescription,\n      ariaDescribedById.draggable,\n    ]\n  );\n\n  return {\n    active,\n    activatorEvent,\n    activeNodeRect,\n    attributes: memoizedAttributes,\n    isDragging,\n    listeners: disabled ? undefined : listeners,\n    node,\n    over,\n    setNodeRef,\n    setActivatorNodeRef,\n    transform,\n  };\n}\n","import {useMemo} from 'react';\n\nimport type {SyntheticEventName, UniqueIdentifier} from '../../types';\n\nexport type SyntheticListener = {\n  eventName: SyntheticEventName;\n  handler: (event: React.SyntheticEvent, id: UniqueIdentifier) => void;\n};\n\nexport type SyntheticListeners = SyntheticListener[];\n\nexport type SyntheticListenerMap = Record<string, Function>;\n\nexport function useSyntheticListeners(\n  listeners: SyntheticListeners,\n  id: UniqueIdentifier\n): SyntheticListenerMap {\n  return useMemo(() => {\n    return listeners.reduce<SyntheticListenerMap>(\n      (acc, {eventName, handler}) => {\n        acc[eventName] = (event: React.SyntheticEvent) => {\n          handler(event, id);\n        };\n\n        return acc;\n      },\n      {} as SyntheticListenerMap\n    );\n  }, [listeners, id]);\n}\n","import {ContextType, useContext} from 'react';\nimport {PublicContext} from '../store';\n\nexport function useDndContext() {\n  return useContext(PublicContext);\n}\n\nexport type UseDndContextReturnValue = ContextType<typeof PublicContext>;\n","import {useCallback, useContext, useEffect, useRef} from 'react';\nimport {\n  useIsomorphicLayoutEffect,\n  useLatestValue,\n  useNodeRef,\n  useUniqueId,\n} from '@dnd-kit/utilities';\n\nimport {InternalContext, Action, Data} from '../store';\nimport type {ClientRect, UniqueIdentifier} from '../types';\n\nimport {useResizeObserver} from './utilities';\n\ninterface ResizeObserverConfig {\n  /** Whether the ResizeObserver should be disabled entirely */\n  disabled?: boolean;\n  /** Resize events may affect the layout and position of other droppable containers.\n   * Specify an array of `UniqueIdentifier` of droppable containers that should also be re-measured\n   * when this droppable container resizes. Specifying an empty array re-measures all droppable containers.\n   */\n  updateMeasurementsFor?: UniqueIdentifier[];\n  /** Represents the debounce timeout between when resize events are observed and when elements are re-measured */\n  timeout?: number;\n}\n\nexport interface UseDroppableArguments {\n  id: UniqueIdentifier;\n  disabled?: boolean;\n  data?: Data;\n  resizeObserverConfig?: ResizeObserverConfig;\n}\n\nconst ID_PREFIX = 'Droppable';\n\nconst defaultResizeObserverConfig = {\n  timeout: 25,\n};\n\nexport function useDroppable({\n  data,\n  disabled = false,\n  id,\n  resizeObserverConfig,\n}: UseDroppableArguments) {\n  const key = useUniqueId(ID_PREFIX);\n  const {active, dispatch, over, measureDroppableContainers} = useContext(\n    InternalContext\n  );\n  const previous = useRef({disabled});\n  const resizeObserverConnected = useRef(false);\n  const rect = useRef<ClientRect | null>(null);\n  const callbackId = useRef<NodeJS.Timeout | null>(null);\n  const {\n    disabled: resizeObserverDisabled,\n    updateMeasurementsFor,\n    timeout: resizeObserverTimeout,\n  } = {\n    ...defaultResizeObserverConfig,\n    ...resizeObserverConfig,\n  };\n  const ids = useLatestValue(updateMeasurementsFor ?? id);\n  const handleResize = useCallback(\n    () => {\n      if (!resizeObserverConnected.current) {\n        // ResizeObserver invokes the `handleResize` callback as soon as `observe` is called,\n        // assuming the element is rendered and displayed.\n        resizeObserverConnected.current = true;\n        return;\n      }\n\n      if (callbackId.current != null) {\n        clearTimeout(callbackId.current);\n      }\n\n      callbackId.current = setTimeout(() => {\n        measureDroppableContainers(\n          Array.isArray(ids.current) ? ids.current : [ids.current]\n        );\n        callbackId.current = null;\n      }, resizeObserverTimeout);\n    },\n    //eslint-disable-next-line react-hooks/exhaustive-deps\n    [resizeObserverTimeout]\n  );\n  const resizeObserver = useResizeObserver({\n    callback: handleResize,\n    disabled: resizeObserverDisabled || !active,\n  });\n  const handleNodeChange = useCallback(\n    (newElement: HTMLElement | null, previousElement: HTMLElement | null) => {\n      if (!resizeObserver) {\n        return;\n      }\n\n      if (previousElement) {\n        resizeObserver.unobserve(previousElement);\n        resizeObserverConnected.current = false;\n      }\n\n      if (newElement) {\n        resizeObserver.observe(newElement);\n      }\n    },\n    [resizeObserver]\n  );\n  const [nodeRef, setNodeRef] = useNodeRef(handleNodeChange);\n  const dataRef = useLatestValue(data);\n\n  useEffect(() => {\n    if (!resizeObserver || !nodeRef.current) {\n      return;\n    }\n\n    resizeObserver.disconnect();\n    resizeObserverConnected.current = false;\n    resizeObserver.observe(nodeRef.current);\n  }, [nodeRef, resizeObserver]);\n\n  useIsomorphicLayoutEffect(\n    () => {\n      dispatch({\n        type: Action.RegisterDroppable,\n        element: {\n          id,\n          key,\n          disabled,\n          node: nodeRef,\n          rect,\n          data: dataRef,\n        },\n      });\n\n      return () =>\n        dispatch({\n          type: Action.UnregisterDroppable,\n          key,\n          id,\n        });\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [id]\n  );\n\n  useEffect(() => {\n    if (disabled !== previous.current.disabled) {\n      dispatch({\n        type: Action.SetDroppableDisabled,\n        id,\n        key,\n        disabled,\n      });\n\n      previous.current.disabled = disabled;\n    }\n  }, [id, key, disabled, dispatch]);\n\n  return {\n    active,\n    rect,\n    isOver: over?.id === id,\n    node: nodeRef,\n    over,\n    setNodeRef,\n  };\n}\n","import React, {cloneElement, useState} from 'react';\nimport {useIsomorphicLayoutEffect, usePrevious} from '@dnd-kit/utilities';\n\nimport type {UniqueIdentifier} from '../../../../types';\n\nexport type Animation = (\n  key: UniqueIdentifier,\n  node: HTMLElement\n) => Promise<void> | void;\n\nexport interface Props {\n  animation: Animation;\n  children: React.ReactElement | null;\n}\n\nexport function AnimationManager({animation, children}: Props) {\n  const [\n    clonedChildren,\n    setClonedChildren,\n  ] = useState<React.ReactElement | null>(null);\n  const [element, setElement] = useState<HTMLElement | null>(null);\n  const previousChildren = usePrevious(children);\n\n  if (!children && !clonedChildren && previousChildren) {\n    setClonedChildren(previousChildren);\n  }\n\n  useIsomorphicLayoutEffect(() => {\n    if (!element) {\n      return;\n    }\n\n    const key = clonedChildren?.key;\n    const id = clonedChildren?.props.id;\n\n    if (key == null || id == null) {\n      setClonedChildren(null);\n      return;\n    }\n\n    Promise.resolve(animation(id, element)).then(() => {\n      setClonedChildren(null);\n    });\n  }, [animation, clonedChildren, element]);\n\n  return (\n    <>\n      {children}\n      {clonedChildren ? cloneElement(clonedChildren, {ref: setElement}) : null}\n    </>\n  );\n}\n","import React from 'react';\nimport type {Transform} from '@dnd-kit/utilities';\n\nimport {InternalContext, defaultInternalContext} from '../../../../store';\nimport {ActiveDraggableContext} from '../../../DndContext';\n\ninterface Props {\n  children: React.ReactNode;\n}\n\nconst defaultTransform: Transform = {\n  x: 0,\n  y: 0,\n  scaleX: 1,\n  scaleY: 1,\n};\n\nexport function NullifiedContextProvider({children}: Props) {\n  return (\n    <InternalContext.Provider value={defaultInternalContext}>\n      <ActiveDraggableContext.Provider value={defaultTransform}>\n        {children}\n      </ActiveDraggableContext.Provider>\n    </InternalContext.Provider>\n  );\n}\n","import React, {forwardRef} from 'react';\nimport {CSS, isKeyboardEvent} from '@dnd-kit/utilities';\n\nimport type {Transform} from '@dnd-kit/utilities';\n\nimport {getRelativeTransformOrigin} from '../../../../utilities';\nimport type {ClientRect, UniqueIdentifier} from '../../../../types';\n\ntype TransitionGetter = (\n  activatorEvent: Event | null\n) => React.CSSProperties['transition'] | undefined;\n\nexport interface Props {\n  as: keyof JSX.IntrinsicElements;\n  activatorEvent: Event | null;\n  adjustScale?: boolean;\n  children?: React.ReactNode;\n  className?: string;\n  id: UniqueIdentifier;\n  rect: ClientRect | null;\n  style?: React.CSSProperties;\n  transition?: string | TransitionGetter;\n  transform: Transform;\n}\n\nconst baseStyles: React.CSSProperties = {\n  position: 'fixed',\n  touchAction: 'none',\n};\n\nconst defaultTransition: TransitionGetter = (activatorEvent) => {\n  const isKeyboardActivator = isKeyboardEvent(activatorEvent);\n\n  return isKeyboardActivator ? 'transform 250ms ease' : undefined;\n};\n\nexport const PositionedOverlay = forwardRef<HTMLElement, Props>(\n  (\n    {\n      as,\n      activatorEvent,\n      adjustScale,\n      children,\n      className,\n      rect,\n      style,\n      transform,\n      transition = defaultTransition,\n    },\n    ref\n  ) => {\n    if (!rect) {\n      return null;\n    }\n\n    const scaleAdjustedTransform = adjustScale\n      ? transform\n      : {\n          ...transform,\n          scaleX: 1,\n          scaleY: 1,\n        };\n    const styles: React.CSSProperties | undefined = {\n      ...baseStyles,\n      width: rect.width,\n      height: rect.height,\n      top: rect.top,\n      left: rect.left,\n      transform: CSS.Transform.toString(scaleAdjustedTransform),\n      transformOrigin:\n        adjustScale && activatorEvent\n          ? getRelativeTransformOrigin(\n              activatorEvent as MouseEvent | KeyboardEvent | TouchEvent,\n              rect\n            )\n          : undefined,\n      transition:\n        typeof transition === 'function'\n          ? transition(activatorEvent)\n          : transition,\n      ...style,\n    };\n\n    return React.createElement(\n      as,\n      {\n        className,\n        style: styles,\n        ref,\n      },\n      children\n    );\n  }\n);\n","import {CSS, useEvent, getWindow} from '@dnd-kit/utilities';\nimport type {DeepRequired, Transform} from '@dnd-kit/utilities';\n\nimport type {\n  Active,\n  DraggableNode,\n  DraggableNodes,\n  DroppableContainers,\n} from '../../../store';\nimport type {ClientRect, UniqueIdentifier} from '../../../types';\nimport {getMeasurableNode} from '../../../utilities/nodes';\nimport {scrollIntoViewIfNeeded} from '../../../utilities/scroll';\nimport {parseTransform} from '../../../utilities/transform';\nimport type {MeasuringConfiguration} from '../../DndContext';\nimport type {Animation} from '../components';\n\ninterface SharedParameters {\n  active: {\n    id: UniqueIdentifier;\n    data: Active['data'];\n    node: HTMLElement;\n    rect: ClientRect;\n  };\n  dragOverlay: {\n    node: HTMLElement;\n    rect: ClientRect;\n  };\n  draggableNodes: DraggableNodes;\n  droppableContainers: DroppableContainers;\n  measuringConfiguration: DeepRequired<MeasuringConfiguration>;\n}\n\nexport interface KeyframeResolverParameters extends SharedParameters {\n  transform: {\n    initial: Transform;\n    final: Transform;\n  };\n}\n\nexport type KeyframeResolver = (\n  parameters: KeyframeResolverParameters\n) => Keyframe[];\n\nexport interface DropAnimationOptions {\n  keyframes?: KeyframeResolver;\n  duration?: number;\n  easing?: string;\n  sideEffects?: DropAnimationSideEffects | null;\n}\n\nexport type DropAnimation = DropAnimationFunction | DropAnimationOptions;\n\ninterface Arguments {\n  draggableNodes: DraggableNodes;\n  droppableContainers: DroppableContainers;\n  measuringConfiguration: DeepRequired<MeasuringConfiguration>;\n  config?: DropAnimation | null;\n}\n\nexport interface DropAnimationFunctionArguments extends SharedParameters {\n  transform: Transform;\n}\n\nexport type DropAnimationFunction = (\n  args: DropAnimationFunctionArguments\n) => Promise<void> | void;\n\ntype CleanupFunction = () => void;\n\nexport interface DropAnimationSideEffectsParameters extends SharedParameters {}\n\nexport type DropAnimationSideEffects = (\n  parameters: DropAnimationSideEffectsParameters\n) => CleanupFunction | void;\n\ntype ExtractStringProperties<T> = {\n  [K in keyof T]?: T[K] extends string ? string : never;\n};\n\ntype Styles = ExtractStringProperties<CSSStyleDeclaration>;\n\ninterface DefaultDropAnimationSideEffectsOptions {\n  className?: {\n    active?: string;\n    dragOverlay?: string;\n  };\n  styles?: {\n    active?: Styles;\n    dragOverlay?: Styles;\n  };\n}\n\nexport const defaultDropAnimationSideEffects = (\n  options: DefaultDropAnimationSideEffectsOptions\n): DropAnimationSideEffects => ({active, dragOverlay}) => {\n  const originalStyles: Record<string, string> = {};\n  const {styles, className} = options;\n\n  if (styles?.active) {\n    for (const [key, value] of Object.entries(styles.active)) {\n      if (value === undefined) {\n        continue;\n      }\n\n      originalStyles[key] = active.node.style.getPropertyValue(key);\n      active.node.style.setProperty(key, value);\n    }\n  }\n\n  if (styles?.dragOverlay) {\n    for (const [key, value] of Object.entries(styles.dragOverlay)) {\n      if (value === undefined) {\n        continue;\n      }\n\n      dragOverlay.node.style.setProperty(key, value);\n    }\n  }\n\n  if (className?.active) {\n    active.node.classList.add(className.active);\n  }\n\n  if (className?.dragOverlay) {\n    dragOverlay.node.classList.add(className.dragOverlay);\n  }\n\n  return function cleanup() {\n    for (const [key, value] of Object.entries(originalStyles)) {\n      active.node.style.setProperty(key, value);\n    }\n\n    if (className?.active) {\n      active.node.classList.remove(className.active);\n    }\n  };\n};\n\nconst defaultKeyframeResolver: KeyframeResolver = ({\n  transform: {initial, final},\n}) => [\n  {\n    transform: CSS.Transform.toString(initial),\n  },\n  {\n    transform: CSS.Transform.toString(final),\n  },\n];\n\nexport const defaultDropAnimationConfiguration: Required<DropAnimationOptions> = {\n  duration: 250,\n  easing: 'ease',\n  keyframes: defaultKeyframeResolver,\n  sideEffects: defaultDropAnimationSideEffects({\n    styles: {\n      active: {\n        opacity: '0',\n      },\n    },\n  }),\n};\n\nexport function useDropAnimation({\n  config,\n  draggableNodes,\n  droppableContainers,\n  measuringConfiguration,\n}: Arguments) {\n  return useEvent<Animation>((id, node) => {\n    if (config === null) {\n      return;\n    }\n\n    const activeDraggable: DraggableNode | undefined = draggableNodes.get(id);\n\n    if (!activeDraggable) {\n      return;\n    }\n\n    const activeNode = activeDraggable.node.current;\n\n    if (!activeNode) {\n      return;\n    }\n\n    const measurableNode = getMeasurableNode(node);\n\n    if (!measurableNode) {\n      return;\n    }\n    const {transform} = getWindow(node).getComputedStyle(node);\n    const parsedTransform = parseTransform(transform);\n\n    if (!parsedTransform) {\n      return;\n    }\n\n    const animation: DropAnimationFunction =\n      typeof config === 'function'\n        ? config\n        : createDefaultDropAnimation(config);\n\n    scrollIntoViewIfNeeded(\n      activeNode,\n      measuringConfiguration.draggable.measure\n    );\n\n    return animation({\n      active: {\n        id,\n        data: activeDraggable.data,\n        node: activeNode,\n        rect: measuringConfiguration.draggable.measure(activeNode),\n      },\n      draggableNodes,\n      dragOverlay: {\n        node,\n        rect: measuringConfiguration.dragOverlay.measure(measurableNode),\n      },\n      droppableContainers,\n      measuringConfiguration,\n      transform: parsedTransform,\n    });\n  });\n}\n\nfunction createDefaultDropAnimation(\n  options: DropAnimationOptions | undefined\n): DropAnimationFunction {\n  const {duration, easing, sideEffects, keyframes} = {\n    ...defaultDropAnimationConfiguration,\n    ...options,\n  };\n\n  return ({active, dragOverlay, transform, ...rest}) => {\n    if (!duration) {\n      // Do not animate if animation duration is zero.\n      return;\n    }\n\n    const delta = {\n      x: dragOverlay.rect.left - active.rect.left,\n      y: dragOverlay.rect.top - active.rect.top,\n    };\n\n    const scale = {\n      scaleX:\n        transform.scaleX !== 1\n          ? (active.rect.width * transform.scaleX) / dragOverlay.rect.width\n          : 1,\n      scaleY:\n        transform.scaleY !== 1\n          ? (active.rect.height * transform.scaleY) / dragOverlay.rect.height\n          : 1,\n    };\n    const finalTransform = {\n      x: transform.x - delta.x,\n      y: transform.y - delta.y,\n      ...scale,\n    };\n\n    const animationKeyframes = keyframes({\n      ...rest,\n      active,\n      dragOverlay,\n      transform: {initial: transform, final: finalTransform},\n    });\n\n    const [firstKeyframe] = animationKeyframes;\n    const lastKeyframe = animationKeyframes[animationKeyframes.length - 1];\n\n    if (JSON.stringify(firstKeyframe) === JSON.stringify(lastKeyframe)) {\n      // The start and end keyframes are the same, infer that there is no animation needed.\n      return;\n    }\n\n    const cleanup = sideEffects?.({active, dragOverlay, ...rest});\n    const animation = dragOverlay.node.animate(animationKeyframes, {\n      duration,\n      easing,\n      fill: 'forwards',\n    });\n\n    return new Promise((resolve) => {\n      animation.onfinish = () => {\n        cleanup?.();\n        resolve();\n      };\n    });\n  };\n}\n","import {useMemo} from 'react';\n\nimport type {UniqueIdentifier} from '../../../types';\n\nlet key = 0;\n\nexport function useKey(id: UniqueIdentifier | undefined) {\n  return useMemo(() => {\n    if (id == null) {\n      return;\n    }\n\n    key++;\n    return key;\n  }, [id]);\n}\n","import React, {useContext} from 'react';\n\nimport {applyModifiers, Modifiers} from '../../modifiers';\nimport {ActiveDraggableContext} from '../DndContext';\nimport {useDndContext} from '../../hooks';\nimport {useInitialValue} from '../../hooks/utilities';\n\nimport {\n  AnimationManager,\n  NullifiedContextProvider,\n  PositionedOverlay,\n} from './components';\nimport type {PositionedOverlayProps} from './components';\n\nimport {useDropAnimation, useKey} from './hooks';\nimport type {DropAnimation} from './hooks';\n\nexport interface Props\n  extends Pick<\n    PositionedOverlayProps,\n    'adjustScale' | 'children' | 'className' | 'style' | 'transition'\n  > {\n  dropAnimation?: DropAnimation | null | undefined;\n  modifiers?: Modifiers;\n  wrapperElement?: keyof JSX.IntrinsicElements;\n  zIndex?: number;\n}\n\nexport const DragOverlay = React.memo(\n  ({\n    adjustScale = false,\n    children,\n    dropAnimation: dropAnimationConfig,\n    style,\n    transition,\n    modifiers,\n    wrapperElement = 'div',\n    className,\n    zIndex = 999,\n  }: Props) => {\n    const {\n      activatorEvent,\n      active,\n      activeNodeRect,\n      containerNodeRect,\n      draggableNodes,\n      droppableContainers,\n      dragOverlay,\n      over,\n      measuringConfiguration,\n      scrollableAncestors,\n      scrollableAncestorRects,\n      windowRect,\n    } = useDndContext();\n    const transform = useContext(ActiveDraggableContext);\n    const key = useKey(active?.id);\n    const modifiedTransform = applyModifiers(modifiers, {\n      activatorEvent,\n      active,\n      activeNodeRect,\n      containerNodeRect,\n      draggingNodeRect: dragOverlay.rect,\n      over,\n      overlayNodeRect: dragOverlay.rect,\n      scrollableAncestors,\n      scrollableAncestorRects,\n      transform,\n      windowRect,\n    });\n    const initialRect = useInitialValue(activeNodeRect);\n    const dropAnimation = useDropAnimation({\n      config: dropAnimationConfig,\n      draggableNodes,\n      droppableContainers,\n      measuringConfiguration,\n    });\n    // We need to wait for the active node to be measured before connecting the drag overlay ref\n    // otherwise collisions can be computed against a mispositioned drag overlay\n    const ref = initialRect ? dragOverlay.setRef : undefined;\n\n    return (\n      <NullifiedContextProvider>\n        <AnimationManager animation={dropAnimation}>\n          {active && key ? (\n            <PositionedOverlay\n              key={key}\n              id={active.id}\n              ref={ref}\n              as={wrapperElement}\n              activatorEvent={activatorEvent}\n              adjustScale={adjustScale}\n              className={className}\n              transition={transition}\n              rect={initialRect}\n              style={{\n                zIndex,\n                ...style,\n              }}\n              transform={modifiedTransform}\n            >\n              {children}\n            </PositionedOverlay>\n          ) : null}\n        </AnimationManager>\n      </NullifiedContextProvider>\n    );\n  }\n);\n","/**\n * Move an array item to a different position. Returns a new array with the item moved to the new position.\n */\nexport function arrayMove<T>(array: T[], from: number, to: number): T[] {\n  const newArray = array.slice();\n  newArray.splice(\n    to < 0 ? newArray.length + to : to,\n    0,\n    newArray.splice(from, 1)[0]\n  );\n\n  return newArray;\n}\n","import type {\n  ClientRect,\n  UniqueIdentifier,\n  UseDndContextReturnValue,\n} from '@dnd-kit/core';\n\nexport function getSortedRects(\n  items: UniqueIdentifier[],\n  rects: UseDndContextReturnValue['droppableRects']\n) {\n  return items.reduce<ClientRect[]>((accumulator, id, index) => {\n    const rect = rects.get(id);\n\n    if (rect) {\n      accumulator[index] = rect;\n    }\n\n    return accumulator;\n  }, Array(items.length));\n}\n","export function isValidIndex(index: number | null): index is number {\n  return index !== null && index >= 0;\n}\n","import {arrayMove} from '../utilities';\nimport type {SortingStrategy} from '../types';\n\nexport const rectSortingStrategy: SortingStrategy = ({\n  rects,\n  activeIndex,\n  overIndex,\n  index,\n}) => {\n  const newRects = arrayMove(rects, overIndex, activeIndex);\n\n  const oldRect = rects[index];\n  const newRect = newRects[index];\n\n  if (!newRect || !oldRect) {\n    return null;\n  }\n\n  return {\n    x: newRect.left - oldRect.left,\n    y: newRect.top - oldRect.top,\n    scaleX: newRect.width / oldRect.width,\n    scaleY: newRect.height / oldRect.height,\n  };\n};\n","import type {ClientRect} from '@dnd-kit/core';\nimport type {SortingStrategy} from '../types';\n\n// To-do: We should be calculating scale transformation\nconst defaultScale = {\n  scaleX: 1,\n  scaleY: 1,\n};\n\nexport const verticalListSortingStrategy: SortingStrategy = ({\n  activeIndex,\n  activeNodeRect: fallbackActiveRect,\n  index,\n  rects,\n  overIndex,\n}) => {\n  const activeNodeRect = rects[activeIndex] ?? fallbackActiveRect;\n\n  if (!activeNodeRect) {\n    return null;\n  }\n\n  if (index === activeIndex) {\n    const overIndexRect = rects[overIndex];\n\n    if (!overIndexRect) {\n      return null;\n    }\n\n    return {\n      x: 0,\n      y:\n        activeIndex < overIndex\n          ? overIndexRect.top +\n            overIndexRect.height -\n            (activeNodeRect.top + activeNodeRect.height)\n          : overIndexRect.top - activeNodeRect.top,\n      ...defaultScale,\n    };\n  }\n\n  const itemGap = getItemGap(rects, index, activeIndex);\n\n  if (index > activeIndex && index <= overIndex) {\n    return {\n      x: 0,\n      y: -activeNodeRect.height - itemGap,\n      ...defaultScale,\n    };\n  }\n\n  if (index < activeIndex && index >= overIndex) {\n    return {\n      x: 0,\n      y: activeNodeRect.height + itemGap,\n      ...defaultScale,\n    };\n  }\n\n  return {\n    x: 0,\n    y: 0,\n    ...defaultScale,\n  };\n};\n\nfunction getItemGap(\n  clientRects: ClientRect[],\n  index: number,\n  activeIndex: number\n) {\n  const currentRect: ClientRect | undefined = clientRects[index];\n  const previousRect: ClientRect | undefined = clientRects[index - 1];\n  const nextRect: ClientRect | undefined = clientRects[index + 1];\n\n  if (!currentRect) {\n    return 0;\n  }\n\n  if (activeIndex < index) {\n    return previousRect\n      ? currentRect.top - (previousRect.top + previousRect.height)\n      : nextRect\n      ? nextRect.top - (currentRect.top + currentRect.height)\n      : 0;\n  }\n\n  return nextRect\n    ? nextRect.top - (currentRect.top + currentRect.height)\n    : previousRect\n    ? currentRect.top - (previousRect.top + previousRect.height)\n    : 0;\n}\n","import React, {useEffect, useMemo, useRef} from 'react';\nimport {useDndContext, ClientRect, UniqueIdentifier} from '@dnd-kit/core';\nimport {useIsomorphicLayoutEffect, useUniqueId} from '@dnd-kit/utilities';\n\nimport type {Disabled, SortingStrategy} from '../types';\nimport {getSortedRects, itemsEqual, normalizeDisabled} from '../utilities';\nimport {rectSortingStrategy} from '../strategies';\n\nexport interface Props {\n  children: React.ReactNode;\n  items: (UniqueIdentifier | {id: UniqueIdentifier})[];\n  strategy?: SortingStrategy;\n  id?: string;\n  disabled?: boolean | Disabled;\n}\n\nconst ID_PREFIX = 'Sortable';\n\ninterface ContextDescriptor {\n  activeIndex: number;\n  containerId: string;\n  disabled: Disabled;\n  disableTransforms: boolean;\n  items: UniqueIdentifier[];\n  overIndex: number;\n  useDragOverlay: boolean;\n  sortedRects: ClientRect[];\n  strategy: SortingStrategy;\n}\n\nexport const Context = React.createContext<ContextDescriptor>({\n  activeIndex: -1,\n  containerId: ID_PREFIX,\n  disableTransforms: false,\n  items: [],\n  overIndex: -1,\n  useDragOverlay: false,\n  sortedRects: [],\n  strategy: rectSortingStrategy,\n  disabled: {\n    draggable: false,\n    droppable: false,\n  },\n});\n\nexport function SortableContext({\n  children,\n  id,\n  items: userDefinedItems,\n  strategy = rectSortingStrategy,\n  disabled: disabledProp = false,\n}: Props) {\n  const {\n    active,\n    dragOverlay,\n    droppableRects,\n    over,\n    measureDroppableContainers,\n  } = useDndContext();\n  const containerId = useUniqueId(ID_PREFIX, id);\n  const useDragOverlay = Boolean(dragOverlay.rect !== null);\n  const items = useMemo<UniqueIdentifier[]>(\n    () =>\n      userDefinedItems.map((item) =>\n        typeof item === 'object' && 'id' in item ? item.id : item\n      ),\n    [userDefinedItems]\n  );\n  const isDragging = active != null;\n  const activeIndex = active ? items.indexOf(active.id) : -1;\n  const overIndex = over ? items.indexOf(over.id) : -1;\n  const previousItemsRef = useRef(items);\n  const itemsHaveChanged = !itemsEqual(items, previousItemsRef.current);\n  const disableTransforms =\n    (overIndex !== -1 && activeIndex === -1) || itemsHaveChanged;\n  const disabled = normalizeDisabled(disabledProp);\n\n  useIsomorphicLayoutEffect(() => {\n    if (itemsHaveChanged && isDragging) {\n      measureDroppableContainers(items);\n    }\n  }, [itemsHaveChanged, items, isDragging, measureDroppableContainers]);\n\n  useEffect(() => {\n    previousItemsRef.current = items;\n  }, [items]);\n\n  const contextValue = useMemo(\n    (): ContextDescriptor => ({\n      activeIndex,\n      containerId,\n      disabled,\n      disableTransforms,\n      items,\n      overIndex,\n      useDragOverlay,\n      sortedRects: getSortedRects(items, droppableRects),\n      strategy,\n    }),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [\n      activeIndex,\n      containerId,\n      disabled.draggable,\n      disabled.droppable,\n      disableTransforms,\n      items,\n      overIndex,\n      droppableRects,\n      useDragOverlay,\n      strategy,\n    ]\n  );\n\n  return <Context.Provider value={contextValue}>{children}</Context.Provider>;\n}\n","import type {UniqueIdentifier} from '@dnd-kit/core';\n\nexport function itemsEqual(a: UniqueIdentifier[], b: UniqueIdentifier[]) {\n  if (a === b) {\n    return true;\n  }\n\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  for (let i = 0; i < a.length; i++) {\n    if (a[i] !== b[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n","import type {Disabled} from '../types';\n\nexport function normalizeDisabled(disabled: boolean | Disabled): Disabled {\n  if (typeof disabled === 'boolean') {\n    return {\n      draggable: disabled,\n      droppable: disabled,\n    };\n  }\n\n  return disabled;\n}\n","import {CSS} from '@dnd-kit/utilities';\n\nimport {arrayMove} from '../utilities';\n\nimport type {\n  AnimateLayoutChanges,\n  NewIndexGetter,\n  SortableTransition,\n} from './types';\n\nexport const defaultNewIndexGetter: NewIndexGetter = ({\n  id,\n  items,\n  activeIndex,\n  overIndex,\n}) => arrayMove(items, activeIndex, overIndex).indexOf(id);\n\nexport const defaultAnimateLayoutChanges: AnimateLayoutChanges = ({\n  containerId,\n  isSorting,\n  wasDragging,\n  index,\n  items,\n  newIndex,\n  previousItems,\n  previousContainerId,\n  transition,\n}) => {\n  if (!transition || !wasDragging) {\n    return false;\n  }\n\n  if (previousItems !== items && index === newIndex) {\n    return false;\n  }\n\n  if (isSorting) {\n    return true;\n  }\n\n  return newIndex !== index && containerId === previousContainerId;\n};\n\nexport const defaultTransition: SortableTransition = {\n  duration: 200,\n  easing: 'ease',\n};\n\nexport const transitionProperty = 'transform';\n\nexport const disabledTransition = CSS.Transition.toString({\n  property: transitionProperty,\n  duration: 0,\n  easing: 'linear',\n});\n\nexport const defaultAttributes = {\n  roleDescription: 'sortable',\n};\n","import {useContext, useEffect, useMemo, useRef} from 'react';\nimport {\n  useDraggable,\n  useDroppable,\n  UseDraggableArguments,\n  UseDroppableArguments,\n} from '@dnd-kit/core';\nimport type {Data} from '@dnd-kit/core';\nimport {CSS, isKeyboardEvent, useCombinedRefs} from '@dnd-kit/utilities';\n\nimport {Context} from '../components';\nimport type {Disabled, SortableData, SortingStrategy} from '../types';\nimport {isValidIndex} from '../utilities';\nimport {\n  defaultAnimateLayoutChanges,\n  defaultAttributes,\n  defaultNewIndexGetter,\n  defaultTransition,\n  disabledTransition,\n  transitionProperty,\n} from './defaults';\nimport type {\n  AnimateLayoutChanges,\n  NewIndexGetter,\n  SortableTransition,\n} from './types';\nimport {useDerivedTransform} from './utilities';\n\nexport interface Arguments\n  extends Omit<UseDraggableArguments, 'disabled'>,\n    Pick<UseDroppableArguments, 'resizeObserverConfig'> {\n  animateLayoutChanges?: AnimateLayoutChanges;\n  disabled?: boolean | Disabled;\n  getNewIndex?: NewIndexGetter;\n  strategy?: SortingStrategy;\n  transition?: SortableTransition | null;\n}\n\nexport function useSortable({\n  animateLayoutChanges = defaultAnimateLayoutChanges,\n  attributes: userDefinedAttributes,\n  disabled: localDisabled,\n  data: customData,\n  getNewIndex = defaultNewIndexGetter,\n  id,\n  strategy: localStrategy,\n  resizeObserverConfig,\n  transition = defaultTransition,\n}: Arguments) {\n  const {\n    items,\n    containerId,\n    activeIndex,\n    disabled: globalDisabled,\n    disableTransforms,\n    sortedRects,\n    overIndex,\n    useDragOverlay,\n    strategy: globalStrategy,\n  } = useContext(Context);\n  const disabled: Disabled = normalizeLocalDisabled(\n    localDisabled,\n    globalDisabled\n  );\n  const index = items.indexOf(id);\n  const data = useMemo<SortableData & Data>(\n    () => ({sortable: {containerId, index, items}, ...customData}),\n    [containerId, customData, index, items]\n  );\n  const itemsAfterCurrentSortable = useMemo(\n    () => items.slice(items.indexOf(id)),\n    [items, id]\n  );\n  const {\n    rect,\n    node,\n    isOver,\n    setNodeRef: setDroppableNodeRef,\n  } = useDroppable({\n    id,\n    data,\n    disabled: disabled.droppable,\n    resizeObserverConfig: {\n      updateMeasurementsFor: itemsAfterCurrentSortable,\n      ...resizeObserverConfig,\n    },\n  });\n  const {\n    active,\n    activatorEvent,\n    activeNodeRect,\n    attributes,\n    setNodeRef: setDraggableNodeRef,\n    listeners,\n    isDragging,\n    over,\n    setActivatorNodeRef,\n    transform,\n  } = useDraggable({\n    id,\n    data,\n    attributes: {\n      ...defaultAttributes,\n      ...userDefinedAttributes,\n    },\n    disabled: disabled.draggable,\n  });\n  const setNodeRef = useCombinedRefs(setDroppableNodeRef, setDraggableNodeRef);\n  const isSorting = Boolean(active);\n  const displaceItem =\n    isSorting &&\n    !disableTransforms &&\n    isValidIndex(activeIndex) &&\n    isValidIndex(overIndex);\n  const shouldDisplaceDragSource = !useDragOverlay && isDragging;\n  const dragSourceDisplacement =\n    shouldDisplaceDragSource && displaceItem ? transform : null;\n  const strategy = localStrategy ?? globalStrategy;\n  const finalTransform = displaceItem\n    ? dragSourceDisplacement ??\n      strategy({\n        rects: sortedRects,\n        activeNodeRect,\n        activeIndex,\n        overIndex,\n        index,\n      })\n    : null;\n  const newIndex =\n    isValidIndex(activeIndex) && isValidIndex(overIndex)\n      ? getNewIndex({id, items, activeIndex, overIndex})\n      : index;\n  const activeId = active?.id;\n  const previous = useRef({\n    activeId,\n    items,\n    newIndex,\n    containerId,\n  });\n  const itemsHaveChanged = items !== previous.current.items;\n  const shouldAnimateLayoutChanges = animateLayoutChanges({\n    active,\n    containerId,\n    isDragging,\n    isSorting,\n    id,\n    index,\n    items,\n    newIndex: previous.current.newIndex,\n    previousItems: previous.current.items,\n    previousContainerId: previous.current.containerId,\n    transition,\n    wasDragging: previous.current.activeId != null,\n  });\n\n  const derivedTransform = useDerivedTransform({\n    disabled: !shouldAnimateLayoutChanges,\n    index,\n    node,\n    rect,\n  });\n\n  useEffect(() => {\n    if (isSorting && previous.current.newIndex !== newIndex) {\n      previous.current.newIndex = newIndex;\n    }\n\n    if (containerId !== previous.current.containerId) {\n      previous.current.containerId = containerId;\n    }\n\n    if (items !== previous.current.items) {\n      previous.current.items = items;\n    }\n  }, [isSorting, newIndex, containerId, items]);\n\n  useEffect(() => {\n    if (activeId === previous.current.activeId) {\n      return;\n    }\n\n    if (activeId && !previous.current.activeId) {\n      previous.current.activeId = activeId;\n      return;\n    }\n\n    const timeoutId = setTimeout(() => {\n      previous.current.activeId = activeId;\n    }, 50);\n\n    return () => clearTimeout(timeoutId);\n  }, [activeId]);\n\n  return {\n    active,\n    activeIndex,\n    attributes,\n    data,\n    rect,\n    index,\n    newIndex,\n    items,\n    isOver,\n    isSorting,\n    isDragging,\n    listeners,\n    node,\n    overIndex,\n    over,\n    setNodeRef,\n    setActivatorNodeRef,\n    setDroppableNodeRef,\n    setDraggableNodeRef,\n    transform: derivedTransform ?? finalTransform,\n    transition: getTransition(),\n  };\n\n  function getTransition() {\n    if (\n      // Temporarily disable transitions for a single frame to set up derived transforms\n      derivedTransform ||\n      // Or to prevent items jumping to back to their \"new\" position when items change\n      (itemsHaveChanged && previous.current.newIndex === index)\n    ) {\n      return disabledTransition;\n    }\n\n    if (\n      (shouldDisplaceDragSource && !isKeyboardEvent(activatorEvent)) ||\n      !transition\n    ) {\n      return undefined;\n    }\n\n    if (isSorting || shouldAnimateLayoutChanges) {\n      return CSS.Transition.toString({\n        ...transition,\n        property: transitionProperty,\n      });\n    }\n\n    return undefined;\n  }\n}\n\nfunction normalizeLocalDisabled(\n  localDisabled: Arguments['disabled'],\n  globalDisabled: Disabled\n) {\n  if (typeof localDisabled === 'boolean') {\n    return {\n      draggable: localDisabled,\n      // Backwards compatibility\n      droppable: false,\n    };\n  }\n\n  return {\n    draggable: localDisabled?.draggable ?? globalDisabled.draggable,\n    droppable: localDisabled?.droppable ?? globalDisabled.droppable,\n  };\n}\n","import {useMemo} from 'react';\n\nexport function useCombinedRefs<T>(\n  ...refs: ((node: T) => void)[]\n): (node: T) => void {\n  return useMemo(\n    () => (node: T) => {\n      refs.forEach((ref) => ref(node));\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    refs\n  );\n}\n","import {useEffect, useRef, useState} from 'react';\nimport {getClientRect, ClientRect} from '@dnd-kit/core';\nimport {Transform, useIsomorphicLayoutEffect} from '@dnd-kit/utilities';\n\ninterface Arguments {\n  rect: React.MutableRefObject<ClientRect | null>;\n  disabled: boolean;\n  index: number;\n  node: React.MutableRefObject<HTMLElement | null>;\n}\n\n/*\n * When the index of an item changes while sorting,\n * we need to temporarily disable the transforms\n */\nexport function useDerivedTransform({disabled, index, node, rect}: Arguments) {\n  const [derivedTransform, setDerivedtransform] = useState<Transform | null>(\n    null\n  );\n  const previousIndex = useRef(index);\n\n  useIsomorphicLayoutEffect(() => {\n    if (!disabled && index !== previousIndex.current && node.current) {\n      const initial = rect.current;\n\n      if (initial) {\n        const current = getClientRect(node.current, {\n          ignoreTransform: true,\n        });\n\n        const delta = {\n          x: initial.left - current.left,\n          y: initial.top - current.top,\n          scaleX: initial.width / current.width,\n          scaleY: initial.height / current.height,\n        };\n\n        if (delta.x || delta.y) {\n          setDerivedtransform(delta);\n        }\n      }\n    }\n\n    if (index !== previousIndex.current) {\n      previousIndex.current = index;\n    }\n  }, [disabled, index, node, rect]);\n\n  useEffect(() => {\n    if (derivedTransform) {\n      setDerivedtransform(null);\n    }\n  }, [derivedTransform]);\n\n  return derivedTransform;\n}\n","import type {\n  Active,\n  Data,\n  DroppableContainer,\n  DraggableNode,\n  Over,\n} from '@dnd-kit/core';\n\nimport type {SortableData} from './data';\n\nexport function hasSortableData<\n  T extends Active | Over | DraggableNode | DroppableContainer\n>(\n  entry: T | null | undefined\n): entry is T & {data: {current: Data<SortableData>}} {\n  if (!entry) {\n    return false;\n  }\n\n  const data = entry.data.current;\n\n  if (\n    data &&\n    'sortable' in data &&\n    typeof data.sortable === 'object' &&\n    'containerId' in data.sortable &&\n    'items' in data.sortable &&\n    'index' in data.sortable\n  ) {\n    return true;\n  }\n\n  return false;\n}\n","import {\n  closestCorners,\n  getScrollableAncestors,\n  getFirstCollision,\n  KeyboardCode,\n  DroppableContainer,\n  KeyboardCoordinateGetter,\n} from '@dnd-kit/core';\nimport {subtract} from '@dnd-kit/utilities';\n\nimport {hasSortableData} from '../../types';\n\nconst directions: string[] = [\n  KeyboardCode.Down,\n  KeyboardCode.Right,\n  KeyboardCode.Up,\n  KeyboardCode.Left,\n];\n\nexport const sortableKeyboardCoordinates: KeyboardCoordinateGetter = (\n  event,\n  {\n    context: {\n      active,\n      collisionRect,\n      droppableRects,\n      droppableContainers,\n      over,\n      scrollableAncestors,\n    },\n  }\n) => {\n  if (directions.includes(event.code)) {\n    event.preventDefault();\n\n    if (!active || !collisionRect) {\n      return;\n    }\n\n    const filteredContainers: DroppableContainer[] = [];\n\n    droppableContainers.getEnabled().forEach((entry) => {\n      if (!entry || entry?.disabled) {\n        return;\n      }\n\n      const rect = droppableRects.get(entry.id);\n\n      if (!rect) {\n        return;\n      }\n\n      switch (event.code) {\n        case KeyboardCode.Down:\n          if (collisionRect.top < rect.top) {\n            filteredContainers.push(entry);\n          }\n          break;\n        case KeyboardCode.Up:\n          if (collisionRect.top > rect.top) {\n            filteredContainers.push(entry);\n          }\n          break;\n        case KeyboardCode.Left:\n          if (collisionRect.left > rect.left) {\n            filteredContainers.push(entry);\n          }\n          break;\n        case KeyboardCode.Right:\n          if (collisionRect.left < rect.left) {\n            filteredContainers.push(entry);\n          }\n          break;\n      }\n    });\n\n    const collisions = closestCorners({\n      active,\n      collisionRect: collisionRect,\n      droppableRects,\n      droppableContainers: filteredContainers,\n      pointerCoordinates: null,\n    });\n    let closestId = getFirstCollision(collisions, 'id');\n\n    if (closestId === over?.id && collisions.length > 1) {\n      closestId = collisions[1].id;\n    }\n\n    if (closestId != null) {\n      const activeDroppable = droppableContainers.get(active.id);\n      const newDroppable = droppableContainers.get(closestId);\n      const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;\n      const newNode = newDroppable?.node.current;\n\n      if (newNode && newRect && activeDroppable && newDroppable) {\n        const newScrollAncestors = getScrollableAncestors(newNode);\n        const hasDifferentScrollAncestors = newScrollAncestors.some(\n          (element, index) => scrollableAncestors[index] !== element\n        );\n        const hasSameContainer = isSameContainer(activeDroppable, newDroppable);\n        const isAfterActive = isAfter(activeDroppable, newDroppable);\n        const offset =\n          hasDifferentScrollAncestors || !hasSameContainer\n            ? {\n                x: 0,\n                y: 0,\n              }\n            : {\n                x: isAfterActive ? collisionRect.width - newRect.width : 0,\n                y: isAfterActive ? collisionRect.height - newRect.height : 0,\n              };\n        const rectCoordinates = {\n          x: newRect.left,\n          y: newRect.top,\n        };\n\n        const newCoordinates =\n          offset.x && offset.y\n            ? rectCoordinates\n            : subtract(rectCoordinates, offset);\n\n        return newCoordinates;\n      }\n    }\n  }\n\n  return undefined;\n};\n\nfunction isSameContainer(a: DroppableContainer, b: DroppableContainer) {\n  if (!hasSortableData(a) || !hasSortableData(b)) {\n    return false;\n  }\n\n  return (\n    a.data.current.sortable.containerId === b.data.current.sortable.containerId\n  );\n}\n\nfunction isAfter(a: DroppableContainer, b: DroppableContainer) {\n  if (!hasSortableData(a) || !hasSortableData(b)) {\n    return false;\n  }\n\n  if (!isSameContainer(a, b)) {\n    return false;\n  }\n\n  return a.data.current.sortable.index < b.data.current.sortable.index;\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"handle\": \"awsui_handle_iykw5_13399_93\",\n  \"hide-focus\": \"awsui_hide-focus_iykw5_13399_104\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { HTMLAttributes } from 'react';\nimport styles from './styles.css.js';\n\nexport default function Handle(props: HTMLAttributes<HTMLDivElement>) {\n  // We need to use a div with button role instead of a button\n  // so that Safari will focus on it when clicking it.\n  // (See https://bugs.webkit.org/show_bug.cgi?id=22261)\n  // Otherwise, we can't reliably catch keyboard events coming from the handle\n  // when it is being dragged.\n\n  return (\n    <div\n      role=\"button\"\n      tabIndex={0}\n      {...props}\n      onPointerDown={props.onPointerDown}\n      className={clsx(styles.handle, props.className)}\n    />\n  );\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"handle\": \"awsui_handle_sdha6_1v8zk_5\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { ButtonHTMLAttributes } from 'react';\n\nimport Handle from '../handle';\nimport InternalIcon from '../../../icon/internal';\nimport styles from './styles.css.js';\nimport handleStyles from '../handle/styles.css.js';\nimport { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities';\nimport clsx from 'clsx';\n\nexport interface DragHandleProps {\n  attributes: ButtonHTMLAttributes<HTMLDivElement>;\n  hideFocus?: boolean;\n  listeners?: SyntheticListenerMap;\n}\n\nexport default function DragHandle({ attributes, hideFocus, listeners }: DragHandleProps) {\n  return (\n    <Handle className={clsx(styles.handle, hideFocus && handleStyles['hide-focus'])} {...attributes} {...listeners}>\n      <InternalIcon name=\"drag-indicator\" />\n    </Handle>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport styles from '../styles.css.js';\nimport DragHandle from '../../internal/components/drag-handle';\nimport InternalToggle from '../../toggle/internal';\nimport React, { ForwardedRef, forwardRef } from 'react';\nimport { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities';\nimport { OptionWithVisibility } from './utils';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\n\nconst componentPrefix = 'content-display-option';\nexport const getClassName = (suffix?: string) => styles[[componentPrefix, suffix].filter(Boolean).join('-')];\n\nexport interface ContentDisplayOptionProps {\n  dragHandleAriaLabel?: string;\n  listeners?: SyntheticListenerMap;\n  onToggle?: (option: OptionWithVisibility) => void;\n  option: OptionWithVisibility;\n}\n\nconst ContentDisplayOption = forwardRef(\n  (\n    { dragHandleAriaLabel, listeners, onToggle, option }: ContentDisplayOptionProps,\n    ref: ForwardedRef<HTMLDivElement>\n  ) => {\n    const idPrefix = useUniqueId(componentPrefix);\n    const controlId = `${idPrefix}-control-${option.id}`;\n\n    const dragHandleAttributes = {\n      ['aria-label']: [dragHandleAriaLabel, option.label].join(', '),\n    };\n\n    return (\n      <div ref={ref} className={getClassName('content')}>\n        <DragHandle attributes={dragHandleAttributes} listeners={listeners} />\n\n        <label className={getClassName('label')} htmlFor={controlId}>\n          {option.label}\n        </label>\n        <div className={getClassName('toggle')}>\n          <InternalToggle\n            checked={!!option.visible}\n            onChange={() => onToggle && onToggle(option)}\n            disabled={option.alwaysVisible === true}\n            controlId={controlId}\n          />\n        </div>\n      </div>\n    );\n  }\n);\n\nexport default ContentDisplayOption;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { OptionWithVisibility } from './utils';\nimport ContentDisplayOption, { getClassName } from './content-display-option';\nimport clsx from 'clsx';\nimport styles from '../styles.css.js';\n\nexport default function DraggableOption({\n  dragHandleAriaLabel,\n  onKeyDown,\n  onToggle,\n  option,\n}: {\n  dragHandleAriaLabel?: string;\n  onKeyDown?: (event: React.KeyboardEvent) => void;\n  onToggle: (option: OptionWithVisibility) => void;\n  option: OptionWithVisibility;\n}) {\n  const { isDragging, isSorting, listeners, setNodeRef, transform } = useSortable({\n    id: option.id,\n  });\n  const style = {\n    transform: CSS.Translate.toString(transform),\n  };\n\n  const combinedListeners = {\n    ...listeners,\n    onKeyDown: (event: React.KeyboardEvent) => {\n      if (onKeyDown) {\n        onKeyDown(event);\n      }\n      if (listeners?.onKeyDown) {\n        listeners.onKeyDown(event);\n      }\n    },\n  };\n\n  return (\n    <li className={clsx(getClassName(), isDragging && styles.placeholder, isSorting && styles.sorting)} style={style}>\n      <ContentDisplayOption\n        ref={setNodeRef}\n        listeners={combinedListeners}\n        dragHandleAriaLabel={dragHandleAriaLabel}\n        onToggle={onToggle}\n        option={option}\n      />\n    </li>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { canUseDOM, Coordinates, subtract as getCoordinatesDelta } from '@dnd-kit/utilities';\nimport { KeyboardCode } from '@dnd-kit/core';\n\nfunction isDocumentScrollingElement(element: Element | null) {\n  if (!canUseDOM || !element) {\n    return false;\n  }\n\n  return element === document.scrollingElement;\n}\n\nexport function getScrollPosition(scrollingContainer: Element) {\n  const minScroll = {\n    x: 0,\n    y: 0,\n  };\n  const dimensions = isDocumentScrollingElement(scrollingContainer)\n    ? {\n        height: window.innerHeight,\n        width: window.innerWidth,\n      }\n    : {\n        height: scrollingContainer.clientHeight,\n        width: scrollingContainer.clientWidth,\n      };\n  const maxScroll = {\n    x: scrollingContainer.scrollWidth - dimensions.width,\n    y: scrollingContainer.scrollHeight - dimensions.height,\n  };\n\n  const isTop = scrollingContainer.scrollTop <= minScroll.y;\n  const isLeft = scrollingContainer.scrollLeft <= minScroll.x;\n  const isBottom = scrollingContainer.scrollTop >= maxScroll.y;\n  const isRight = scrollingContainer.scrollLeft >= maxScroll.x;\n\n  return {\n    isTop,\n    isLeft,\n    isBottom,\n    isRight,\n    maxScroll,\n    minScroll,\n  };\n}\n\nexport function getScrollElementRect(element: Element) {\n  if (element === document.scrollingElement) {\n    const { innerWidth, innerHeight } = window;\n\n    return {\n      top: 0,\n      left: 0,\n      right: innerWidth,\n      bottom: innerHeight,\n      width: innerWidth,\n      height: innerHeight,\n    };\n  }\n\n  const { top, left, right, bottom } = element.getBoundingClientRect();\n\n  return {\n    top,\n    left,\n    right,\n    bottom,\n    width: element.clientWidth,\n    height: element.clientHeight,\n  };\n}\n\nexport function applyScroll({\n  currentCoordinates,\n  direction,\n  newCoordinates,\n  scrollableAncestors,\n}: {\n  currentCoordinates: Coordinates;\n  direction: string;\n  newCoordinates: Coordinates;\n  scrollableAncestors: Element[];\n}) {\n  for (const scrollContainer of scrollableAncestors) {\n    const coordinatesDelta = getCoordinatesDelta(newCoordinates, currentCoordinates);\n    const { isTop, isBottom, maxScroll, minScroll } = getScrollPosition(scrollContainer);\n    const scrollElementRect = getScrollElementRect(scrollContainer);\n\n    const clampedCoordinates = {\n      y: Math.min(\n        direction === KeyboardCode.Down\n          ? scrollElementRect.bottom - scrollElementRect.height / 2\n          : scrollElementRect.bottom,\n        Math.max(\n          direction === KeyboardCode.Down\n            ? scrollElementRect.top\n            : scrollElementRect.top + scrollElementRect.height / 2,\n          newCoordinates.y\n        )\n      ),\n    };\n\n    const canScrollY = (direction === KeyboardCode.Down && !isBottom) || (direction === KeyboardCode.Up && !isTop);\n\n    if (canScrollY && clampedCoordinates.y !== newCoordinates.y) {\n      const newScrollCoordinates = scrollContainer.scrollTop + coordinatesDelta.y;\n      const canScrollToNewCoordinates =\n        (direction === KeyboardCode.Down && newScrollCoordinates <= maxScroll.y) ||\n        (direction === KeyboardCode.Up && newScrollCoordinates >= minScroll.y);\n\n      if (canScrollToNewCoordinates) {\n        // We don't need to update coordinates, the scroll adjustment alone will trigger\n        // logic to auto-detect the new container we are over\n        scrollContainer.scrollTo({\n          top: newScrollCoordinates,\n          behavior: 'smooth',\n        });\n        return true;\n      }\n\n      break;\n    }\n  }\n  return false;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport enum EventName {\n  Blur = 'blur',\n  Click = 'click',\n  DragStart = 'dragstart',\n  Keydown = 'keydown',\n  ContextMenu = 'contextmenu',\n  Resize = 'resize',\n  SelectionChange = 'selectionchange',\n  VisibilityChange = 'visibilitychange',\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport class Listeners {\n  private listeners: [string, EventListenerOrEventListenerObject, AddEventListenerOptions | boolean | undefined][] = [];\n\n  constructor(private target: EventTarget | null) {}\n\n  public add<T extends Event>(\n    eventName: string,\n    handler: (event: T) => void,\n    options?: AddEventListenerOptions | boolean\n  ) {\n    this.target?.addEventListener(eventName, handler as EventListener, options);\n    this.listeners.push([eventName, handler as EventListener, options]);\n  }\n\n  public removeAll = () => {\n    this.listeners.forEach(listener => this.target?.removeEventListener(...listener));\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { KeyboardCode, KeyboardCodes } from '@dnd-kit/core';\n\nexport const defaultKeyboardCodes: KeyboardCodes = {\n  start: [KeyboardCode.Space, KeyboardCode.Enter],\n  cancel: [KeyboardCode.Esc],\n  end: [KeyboardCode.Space, KeyboardCode.Enter],\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport {\n  subtract as getCoordinatesDelta,\n  getOwnerDocument,\n  getWindow,\n  isKeyboardEvent,\n  Coordinates,\n} from '@dnd-kit/utilities';\n\nimport { defaultCoordinates } from '@dnd-kit/core';\nimport { applyScroll } from './utilities/scroll';\nimport { EventName } from './utilities/events';\nimport { Listeners } from './utilities/listeners';\nimport type { Activators, SensorInstance } from '@dnd-kit/core';\nimport { KeyboardSensorOptions, KeyboardSensorProps } from '@dnd-kit/core';\n\nimport { defaultKeyboardCodes } from './defaults';\nimport { scrollElementIntoView } from '../../../internal/utils/scrollable-containers';\n\n// Slightly modified version of @dnd-kit's KeyboardSensor:\n// https://github.com/clauderic/dnd-kit/blob/master/packages/core/src/sensors/keyboard/KeyboardSensor.ts\n\n// The only difference is that here, reordering is deactivated on blur, as in\n// this PR: https://github.com/clauderic/dnd-kit/pull/1087.\n// If it is merged, then @dnd-kit's KeyboardSensor can be used instead\n// and all files under this directory (`keyboard-sensor`) can be removed.\n\n// Changes from mainstream are marked below as \"Customization\"\n\nexport class KeyboardSensor implements SensorInstance {\n  public autoScrollEnabled = false;\n  private referenceCoordinates: Coordinates | undefined;\n  private listeners: Listeners;\n  private windowListeners: Listeners;\n\n  constructor(private props: KeyboardSensorProps) {\n    const {\n      event: { target },\n    } = props;\n\n    this.props = props;\n    this.listeners = new Listeners(getOwnerDocument(target));\n    this.windowListeners = new Listeners(getWindow(target));\n    this.handleKeyDown = this.handleKeyDown.bind(this);\n    this.handleCancel = this.handleCancel.bind(this);\n\n    this.attach();\n  }\n\n  private attach() {\n    this.handleStart();\n\n    this.windowListeners.add(EventName.Resize, this.handleCancel);\n    this.windowListeners.add(EventName.VisibilityChange, this.handleCancel);\n\n    // Customization: deactivate reordering on blur event\n    this.props.event.target?.addEventListener(EventName.Blur, this.handleCancel);\n\n    setTimeout(() => this.listeners.add(EventName.Keydown, this.handleKeyDown));\n  }\n\n  private handleStart() {\n    const { activeNode, onStart } = this.props;\n    const node = activeNode.node.current;\n\n    if (node) {\n      scrollElementIntoView(node);\n    }\n\n    onStart(defaultCoordinates);\n  }\n\n  private handleKeyDown(event: Event) {\n    if (isKeyboardEvent(event)) {\n      const { active, context, options } = this.props;\n      const { keyboardCodes = defaultKeyboardCodes, coordinateGetter } = options;\n      const { code } = event;\n\n      if (keyboardCodes.end.indexOf(code) !== -1) {\n        this.handleEnd(event);\n        return;\n      }\n\n      if (keyboardCodes.cancel.indexOf(code) !== -1) {\n        this.handleCancel(event);\n        return;\n      }\n\n      const { collisionRect } = context.current;\n      const currentCoordinates = collisionRect ? { x: collisionRect.left, y: collisionRect.top } : defaultCoordinates;\n\n      if (!this.referenceCoordinates) {\n        this.referenceCoordinates = currentCoordinates;\n      }\n\n      if (!coordinateGetter) {\n        return;\n      }\n\n      const newCoordinates = coordinateGetter(event, {\n        active,\n        context: context.current,\n        currentCoordinates,\n      });\n\n      if (newCoordinates) {\n        const { scrollableAncestors } = context.current;\n        const direction = event.code;\n\n        const scrolled = applyScroll({ currentCoordinates, direction, newCoordinates, scrollableAncestors });\n\n        if (!scrolled) {\n          this.handleMove(event, getCoordinatesDelta(newCoordinates, this.referenceCoordinates));\n        }\n      }\n    }\n  }\n\n  private handleMove(event: Event, coordinates: Coordinates) {\n    const { onMove } = this.props;\n\n    event.preventDefault();\n    onMove(coordinates);\n  }\n\n  private handleEnd(event: Event) {\n    const { onEnd } = this.props;\n\n    event.preventDefault();\n    this.detach();\n    onEnd();\n  }\n\n  private handleCancel(event: Event) {\n    const { onCancel } = this.props;\n\n    // Customization: do not prevent browser from managing native focus\n    if (event.type !== EventName.Blur) {\n      event.preventDefault();\n    }\n    this.detach();\n    onCancel();\n  }\n\n  private detach() {\n    // Customization: clean up listener for blur event\n    this.props.event.target?.removeEventListener(EventName.Blur, this.handleCancel);\n\n    this.listeners.removeAll();\n    this.windowListeners.removeAll();\n  }\n\n  static activators: Activators<KeyboardSensorOptions> = [\n    {\n      eventName: 'onKeyDown' as const,\n      handler: (event: React.KeyboardEvent, { keyboardCodes = defaultKeyboardCodes, onActivation }, { active }) => {\n        const { code } = event.nativeEvent;\n\n        if (keyboardCodes.start.indexOf(code) !== -1) {\n          const activator = active.activatorNode.current;\n\n          if (activator && event.target !== activator) {\n            return false;\n          }\n\n          event.preventDefault();\n\n          onActivation?.({ event: event.nativeEvent });\n\n          return true;\n        }\n\n        return false;\n      },\n    },\n  ];\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef, useState } from 'react';\nimport {\n  Active,\n  closestCenter,\n  CollisionDetection,\n  DroppableContainer,\n  KeyboardCoordinateGetter,\n  PointerSensor,\n  UniqueIdentifier,\n  useSensor,\n  useSensors,\n} from '@dnd-kit/core';\nimport { CollectionPreferencesProps } from '../interfaces';\nimport { hasSortableData } from '@dnd-kit/sortable';\nimport { KeyboardSensor } from './keyboard-sensor';\n\nenum KeyboardCode {\n  Space = 'Space',\n  Down = 'ArrowDown',\n  Right = 'ArrowRight',\n  Left = 'ArrowLeft',\n  Up = 'ArrowUp',\n  Esc = 'Escape',\n  Enter = 'Enter',\n}\n\n// A custom collision detection algorithm is used when using a keyboard to\n// work around an unexpected behavior when reordering items of variable height\n// with the keyboard.\n\n// Neither closestCenter nor closestCorners work really well for this case,\n// because the center (or corners) of a tall rectangle might be so low that it\n// is detected as being closest to the rectangle below of the one it should\n// actually swap with.\n\n// Instead of relying on coordinates, the expected results are achieved by\n// moving X positions up or down in the initially sorted array, depending on\n// the desired direction.\n\n// We let our collisionDetection and customCoordinateGetter use the same\n// getClosestId function which takes its value from the current component\n// state, to make sure they are always in sync.\n\nexport default function useDragAndDropReorder({\n  sortedOptions,\n}: {\n  sortedOptions: ReadonlyArray<CollectionPreferencesProps.VisibleContentOption>;\n}) {\n  const isKeyboard = useRef(false);\n  const positionDelta = useRef(0);\n  const [activeItemId, setActiveItemId] = useState<UniqueIdentifier | null>(null);\n\n  const setActiveItem = (id: UniqueIdentifier | null) => {\n    setActiveItemId(id);\n    if (!id) {\n      isKeyboard.current = false;\n      positionDelta.current = 0;\n    }\n  };\n\n  const handleKeyDown = (event: React.KeyboardEvent) => {\n    if (isKeyboard.current && activeItemId) {\n      const currentTargetIndex = sortedOptions.findIndex(({ id }) => id === activeItemId) + positionDelta.current;\n      if (event.key === 'ArrowDown' && currentTargetIndex < sortedOptions.length - 1) {\n        positionDelta.current += 1;\n      } else if (event.key === 'ArrowUp' && currentTargetIndex > 0) {\n        positionDelta.current -= 1;\n      }\n    }\n    if (activeItemId && isEscape(event.key)) {\n      // Prevent modal from closing when pressing Esc to cancel the dragging action\n      event.stopPropagation();\n    }\n  };\n\n  const getClosestId = (active: Active) => {\n    if (positionDelta.current === 0) {\n      return active.id;\n    }\n    const currentIndex = sortedOptions.findIndex(({ id }) => id === active.id);\n    const newIndex = Math.max(0, Math.min(sortedOptions.length - 1, currentIndex + positionDelta.current));\n    return sortedOptions[newIndex].id;\n  };\n\n  const collisionDetection: CollisionDetection = ({\n    active,\n    collisionRect,\n    droppableContainers,\n    droppableRects,\n    pointerCoordinates,\n  }) => {\n    if (isKeyboard.current) {\n      // For keyboard interaction, determine the colliding container based on the movements made by the arrow keys,\n      // via getClosestId\n      const collidingContainer = getCollidingContainer({\n        activeId: active.id,\n        closestId: getClosestId(active),\n        droppableContainers,\n      });\n      return collidingContainer ? [collidingContainer] : [];\n    } else {\n      // For mouse interaction, use the closest center algorithm\n      return closestCenter({ active, collisionRect, droppableRects, droppableContainers, pointerCoordinates });\n    }\n  };\n\n  const coordinateGetter: KeyboardCoordinateGetter = (\n    event,\n    { context: { active, collisionRect, droppableRects, droppableContainers } }\n  ) => {\n    if (event.code === KeyboardCode.Up || event.code === KeyboardCode.Down) {\n      event.preventDefault();\n\n      if (!active || !collisionRect) {\n        return;\n      }\n\n      const closestId = getClosestId(active);\n\n      if (closestId !== null) {\n        const activeDroppable = droppableContainers.get(active.id);\n        const newDroppable = droppableContainers.get(closestId);\n        const newRect = newDroppable ? droppableRects.get(newDroppable.id) : null;\n        const newNode = newDroppable?.node.current;\n\n        if (newNode && newRect && activeDroppable && newDroppable) {\n          const isAfterActive = isAfter(activeDroppable, newDroppable);\n          const offset = {\n            x: isAfterActive ? collisionRect.width - newRect.width : 0,\n            y: isAfterActive ? collisionRect.height - newRect.height : 0,\n          };\n          const rectCoordinates = {\n            x: newRect.left,\n            y: newRect.top,\n          };\n\n          return {\n            x: rectCoordinates.x - offset.x,\n            y: rectCoordinates.y - offset.y,\n          };\n        }\n      }\n    }\n  };\n\n  const sensors = useSensors(\n    useSensor(PointerSensor),\n    useSensor(KeyboardSensor, {\n      coordinateGetter,\n      onActivation: () => {\n        isKeyboard.current = true;\n      },\n    })\n  );\n\n  return {\n    activeItem: activeItemId,\n    collisionDetection,\n    coordinateGetter,\n    handleKeyDown,\n    sensors,\n    setActiveItem,\n  };\n}\n\nfunction isAfter(a: DroppableContainer, b: DroppableContainer) {\n  return hasSortableData(a) && hasSortableData(b) && a.data.current.sortable.index < b.data.current.sortable.index;\n}\n\nfunction getCollidingContainer({\n  activeId,\n  closestId,\n  droppableContainers,\n}: {\n  activeId: UniqueIdentifier;\n  closestId: UniqueIdentifier;\n  droppableContainers: DroppableContainer[];\n}) {\n  if (closestId === activeId) {\n    return;\n  }\n  const collidingContainer = droppableContainers.find(({ id }) => id === closestId);\n  if (collidingContainer) {\n    return {\n      id: collidingContainer.id,\n      data: {\n        droppableContainer: collidingContainer,\n        value: 0,\n      },\n    };\n  }\n}\n\nconst isEscape = (key: string) => key === 'Escape' || key === 'Esc';\n","import {useMemo} from 'react';\n\nimport type {SensorDescriptor, SensorOptions} from './types';\n\nexport function useSensors(\n  ...sensors: (SensorDescriptor<any> | undefined | null)[]\n): SensorDescriptor<SensorOptions>[] {\n  return useMemo(\n    () =>\n      [...sensors].filter(\n        (sensor): sensor is SensorDescriptor<any> => sensor != null\n      ),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [...sensors]\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\n\nimport { CollectionPreferencesProps } from '../interfaces';\nimport styles from '../styles.css.js';\nimport { getSortedOptions, OptionWithVisibility } from './utils';\nimport { DndContext, DragOverlay } from '@dnd-kit/core';\nimport { arrayMove, SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport DraggableOption from './draggable-option';\nimport useDragAndDropReorder from './use-drag-and-drop-reorder';\nimport useLiveAnnouncements from './use-live-announcements';\nimport Portal from '../../internal/components/portal';\nimport ContentDisplayOption from './content-display-option';\nimport { useInternalI18n } from '../../internal/i18n/context';\n\nconst componentPrefix = 'content-display';\n\nconst getClassName = (suffix: string) => styles[`${componentPrefix}-${suffix}`];\n\ninterface ContentDisplayPreferenceProps extends CollectionPreferencesProps.ContentDisplayPreference {\n  onChange: (value: ReadonlyArray<CollectionPreferencesProps.ContentDisplayItem>) => void;\n  value?: ReadonlyArray<CollectionPreferencesProps.ContentDisplayItem>;\n}\n\nexport default function ContentDisplayPreference({\n  title,\n  description,\n  options,\n  value = options.map(({ id }) => ({\n    id,\n    visible: true,\n  })),\n  onChange,\n  liveAnnouncementDndStarted,\n  liveAnnouncementDndItemReordered,\n  liveAnnouncementDndItemCommitted,\n  liveAnnouncementDndDiscarded,\n  dragHandleAriaDescription,\n  dragHandleAriaLabel,\n}: ContentDisplayPreferenceProps) {\n  const idPrefix = useUniqueId(componentPrefix);\n  const i18n = useInternalI18n('collection-preferences');\n\n  const onToggle = (option: OptionWithVisibility) => {\n    onChange(value.map(item => (item.id === option.id ? { ...item, visible: !option.visible } : item)));\n  };\n\n  const titleId = `${idPrefix}-title`;\n  const descriptionId = `${idPrefix}-description`;\n\n  const sortedOptions = getSortedOptions({ options, contentDisplay: value });\n\n  const { activeItem, collisionDetection, handleKeyDown, sensors, setActiveItem } = useDragAndDropReorder({\n    sortedOptions,\n  });\n\n  const activeOption = activeItem ? sortedOptions.find(({ id }) => id === activeItem) : null;\n\n  const announcements = useLiveAnnouncements({\n    isDragging: activeItem !== null,\n    liveAnnouncementDndStarted: i18n(\n      'contentDisplayPreference.liveAnnouncementDndStarted',\n      liveAnnouncementDndStarted,\n      format => (position, total) => format({ position, total })\n    ),\n    liveAnnouncementDndItemReordered: i18n(\n      'contentDisplayPreference.liveAnnouncementDndItemReordered',\n      liveAnnouncementDndItemReordered,\n      format => (initialPosition, currentPosition, total) =>\n        format({ initialPosition, currentPosition, total, isInitialPosition: `${initialPosition === currentPosition}` })\n    ),\n    liveAnnouncementDndItemCommitted: i18n(\n      'contentDisplayPreference.liveAnnouncementDndItemCommitted',\n      liveAnnouncementDndItemCommitted,\n      format => (initialPosition, finalPosition, total) =>\n        format({ initialPosition, finalPosition, total, isInitialPosition: `${initialPosition === finalPosition}` })\n    ),\n    liveAnnouncementDndDiscarded: i18n(\n      'contentDisplayPreference.liveAnnouncementDndDiscarded',\n      liveAnnouncementDndDiscarded\n    ),\n    sortedOptions: value,\n  });\n\n  const renderedDragHandleAriaDescription = i18n(\n    'contentDisplayPreference.dragHandleAriaDescription',\n    dragHandleAriaDescription\n  );\n\n  return (\n    <div className={styles[componentPrefix]}>\n      <h3 className={getClassName('title')} id={titleId}>\n        {i18n('contentDisplayPreference.title', title)}\n      </h3>\n      <p className={getClassName('description')} id={descriptionId}>\n        {i18n('contentDisplayPreference.description', description)}\n      </p>\n      <DndContext\n        sensors={sensors}\n        collisionDetection={collisionDetection}\n        accessibility={{\n          announcements,\n          restoreFocus: false,\n          screenReaderInstructions: renderedDragHandleAriaDescription\n            ? { draggable: renderedDragHandleAriaDescription }\n            : undefined,\n        }}\n        onDragStart={({ active }) => setActiveItem(active.id)}\n        onDragEnd={event => {\n          setActiveItem(null);\n          const { active, over } = event;\n\n          if (over && active.id !== over.id) {\n            const oldIndex = value.findIndex(({ id }) => id === active.id);\n            const newIndex = value.findIndex(({ id }) => id === over.id);\n            onChange(arrayMove([...value], oldIndex, newIndex));\n          }\n        }}\n        onDragCancel={() => setActiveItem(null)}\n      >\n        {/* Use explicit list role to work around Safari not announcing lists as such when list-style is set to none.\n            See https://bugs.webkit.org/show_bug.cgi?id=170179 */}\n        <ul\n          className={getClassName('option-list')}\n          aria-describedby={descriptionId}\n          aria-labelledby={titleId}\n          role=\"list\"\n        >\n          <SortableContext items={sortedOptions.map(({ id }) => id)} strategy={verticalListSortingStrategy}>\n            {sortedOptions.map(option => {\n              return (\n                <DraggableOption\n                  dragHandleAriaLabel={i18n('contentDisplayPreference.dragHandleAriaLabel', dragHandleAriaLabel)}\n                  key={option.id}\n                  onKeyDown={handleKeyDown}\n                  onToggle={onToggle}\n                  option={option}\n                />\n              );\n            })}\n          </SortableContext>\n        </ul>\n        <Portal>\n          {/* Make sure that the drag overlay is above the modal\n              by assigning the z-index as inline style\n              so that it prevails over dnd-kit's inline z-index of 999  */}\n          {/* className is a documented prop of the DragOverlay component:\n              https://docs.dndkit.com/api-documentation/draggable/drag-overlay#class-name-and-inline-styles */\n          /* eslint-disable-next-line react/forbid-component-props */}\n          <DragOverlay className={styles['drag-overlay']} dropAnimation={null} style={{ zIndex: 5000 }}>\n            {activeOption && (\n              <ContentDisplayOption\n                listeners={{ onKeyDown: handleKeyDown }}\n                dragHandleAriaLabel={i18n('contentDisplayPreference.dragHandleAriaLabel', dragHandleAriaLabel)}\n                onToggle={onToggle}\n                option={activeOption}\n              />\n            )}\n          </DragOverlay>\n        </Portal>\n      </DndContext>\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { CollectionPreferencesProps } from '../interfaces';\n\nexport interface OptionWithVisibility extends CollectionPreferencesProps.ContentDisplayOption {\n  visible?: boolean;\n}\n\nexport function getSortedOptions({\n  options,\n  contentDisplay,\n}: {\n  options: ReadonlyArray<CollectionPreferencesProps.ContentDisplayOption>;\n  contentDisplay: ReadonlyArray<CollectionPreferencesProps.ContentDisplayItem>;\n}): ReadonlyArray<OptionWithVisibility> {\n  const optionsById: Record<string, CollectionPreferencesProps.ContentDisplayOption> = options.reduce(\n    (currentValue, option) => ({ ...currentValue, [option.id]: option }),\n    {}\n  );\n  return contentDisplay\n    .map(({ id, visible }: CollectionPreferencesProps.ContentDisplayItem) => ({\n      ...optionsById[id],\n      visible,\n    }))\n    .filter(Boolean);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { CollectionPreferencesProps } from '../interfaces';\nimport { DragEndEvent, DragOverEvent, DragStartEvent } from '@dnd-kit/core';\nimport { useRef } from 'react';\n\nexport default function useLiveAnnouncements({\n  isDragging,\n  liveAnnouncementDndStarted,\n  liveAnnouncementDndItemReordered,\n  liveAnnouncementDndItemCommitted,\n  liveAnnouncementDndDiscarded,\n  sortedOptions,\n}: Partial<CollectionPreferencesProps.ContentDisplayPreference> & {\n  isDragging: boolean;\n  sortedOptions: ReadonlyArray<CollectionPreferencesProps.ContentDisplayItem>;\n}) {\n  const isFirstAnnouncement = useRef(true);\n  if (!isDragging) {\n    isFirstAnnouncement.current = true;\n  }\n\n  return {\n    onDragStart({ active }: DragStartEvent) {\n      if (active && liveAnnouncementDndStarted) {\n        const index = sortedOptions.findIndex(option => option.id === active.id);\n        return liveAnnouncementDndStarted(index + 1, sortedOptions.length);\n      }\n    },\n    onDragOver({ active, over }: DragOverEvent) {\n      if (liveAnnouncementDndItemReordered) {\n        // Don't announce on the first dragOver because it's redundant with onDragStart.\n        if (isFirstAnnouncement.current) {\n          isFirstAnnouncement.current = false;\n          if (!over || over.id === active.id) {\n            return;\n          }\n        }\n        const initialIndex = sortedOptions.findIndex(option => option.id === active.id);\n        const currentIdex = over ? sortedOptions.findIndex(option => option.id === over.id) : initialIndex;\n        return liveAnnouncementDndItemReordered(initialIndex + 1, currentIdex + 1, sortedOptions.length);\n      }\n    },\n    onDragEnd({ active, over }: DragEndEvent) {\n      if (liveAnnouncementDndItemCommitted) {\n        const initialIndex = sortedOptions.findIndex(option => option.id === active.id);\n        const finalIndex = over ? sortedOptions.findIndex(option => option.id === over.id) : initialIndex;\n        return liveAnnouncementDndItemCommitted(initialIndex + 1, finalIndex + 1, sortedOptions.length);\n      }\n    },\n    onDragCancel() {\n      return liveAnnouncementDndDiscarded;\n    },\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { getBaseProps } from '../internal/base-component';\nimport InternalBox from '../box/internal';\nimport { ButtonProps } from '../button/interfaces';\nimport { InternalButton } from '../button/internal';\nimport InternalModal from '../modal/internal';\nimport InternalSpaceBetween from '../space-between/internal';\nimport {\n  copyPreferences,\n  mergePreferences,\n  ModalContentLayout,\n  PageSizePreference,\n  WrapLinesPreference,\n  StripedRowsPreference,\n  ContentDensityPreference,\n  StickyColumnsPreference,\n  CustomPreference,\n} from './utils';\nimport VisibleContentPreference from './visible-content';\nimport checkControlled from '../internal/hooks/check-controlled';\nimport { CollectionPreferencesProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport ContentDisplayPreference from './content-display';\nimport { warnOnce } from '../internal/logging';\nimport { useInternalI18n } from '../internal/i18n/context';\n\nexport { CollectionPreferencesProps };\n\nconst componentName = 'CollectionPreferences';\n\nexport default function CollectionPreferences({\n  title,\n  confirmLabel,\n  cancelLabel,\n  disabled = false,\n  onConfirm,\n  onCancel,\n  visibleContentPreference,\n  contentDisplayPreference,\n  pageSizePreference,\n  wrapLinesPreference,\n  stripedRowsPreference,\n  contentDensityPreference,\n  stickyColumnsPreference,\n\n  preferences,\n  customPreference,\n  ...rest\n}: CollectionPreferencesProps) {\n  const { __internalRootRef } = useBaseComponent('CollectionPreferences');\n  checkControlled('CollectionPreferences', 'preferences', preferences, 'onConfirm', onConfirm);\n\n  const i18n = useInternalI18n('collection-preferences');\n  const baseProps = getBaseProps(rest);\n  const [modalVisible, setModalVisible] = useState(false);\n  const [temporaryPreferences, setTemporaryPreferences] = useState(copyPreferences(preferences || {}));\n  const triggerRef = useRef<ButtonProps.Ref>(null);\n  const dialogPreviouslyOpen = useRef(false);\n\n  useEffect(() => {\n    if (!modalVisible) {\n      dialogPreviouslyOpen.current && triggerRef.current && triggerRef.current.focus();\n    } else {\n      dialogPreviouslyOpen.current = true;\n    }\n  }, [modalVisible]);\n\n  const onConfirmListener = () => {\n    setModalVisible(false);\n    fireNonCancelableEvent(onConfirm, temporaryPreferences);\n  };\n\n  const onCancelListener = () => {\n    fireNonCancelableEvent(onCancel, {});\n    setModalVisible(false);\n    setTemporaryPreferences(copyPreferences(preferences || {}));\n  };\n\n  const hasContentOnTheLeft = !!(\n    pageSizePreference ||\n    wrapLinesPreference ||\n    stripedRowsPreference ||\n    contentDensityPreference ||\n    stickyColumnsPreference ||\n    customPreference\n  );\n  const hasContentOnTheRight = !!(visibleContentPreference || contentDisplayPreference);\n\n  const onChange = (changedPreferences: CollectionPreferencesProps.Preferences) =>\n    setTemporaryPreferences(mergePreferences(changedPreferences, temporaryPreferences));\n\n  if (visibleContentPreference && contentDisplayPreference) {\n    warnOnce(\n      componentName,\n      'You provided both `visibleContentPreference` and `contentDisplayPreference` props. `visibleContentPreference` will be ignored and only `contentDisplayPreference` will be rendered.'\n    );\n  }\n\n  return (\n    <div {...baseProps} className={clsx(baseProps.className, styles.root)} ref={__internalRootRef}>\n      <InternalButton\n        ref={triggerRef}\n        className={styles['trigger-button']}\n        disabled={disabled}\n        ariaLabel={i18n('title', title)}\n        onClick={() => {\n          setTemporaryPreferences(copyPreferences(preferences || {}));\n          setModalVisible(true);\n        }}\n        variant=\"icon\"\n        iconName=\"settings\"\n        formAction=\"none\"\n      />\n      {!disabled && modalVisible && (\n        <InternalModal\n          className={styles['modal-root']}\n          visible={true}\n          header={i18n('title', title)}\n          footer={\n            <InternalBox float=\"right\">\n              <InternalSpaceBetween direction=\"horizontal\" size=\"xs\">\n                <InternalButton\n                  className={styles['cancel-button']}\n                  variant=\"link\"\n                  formAction=\"none\"\n                  onClick={onCancelListener}\n                >\n                  {i18n('cancelLabel', cancelLabel)}\n                </InternalButton>\n                <InternalButton\n                  className={styles['confirm-button']}\n                  variant=\"primary\"\n                  formAction=\"none\"\n                  onClick={onConfirmListener}\n                >\n                  {i18n('confirmLabel', confirmLabel)}\n                </InternalButton>\n              </InternalSpaceBetween>\n            </InternalBox>\n          }\n          closeAriaLabel={cancelLabel}\n          size={hasContentOnTheLeft && hasContentOnTheRight ? 'large' : 'medium'}\n          onDismiss={onCancelListener}\n        >\n          <ModalContentLayout\n            left={\n              hasContentOnTheLeft && (\n                <InternalSpaceBetween size=\"l\">\n                  {pageSizePreference && (\n                    <PageSizePreference\n                      value={temporaryPreferences.pageSize}\n                      {...pageSizePreference}\n                      onChange={pageSize => onChange({ pageSize })}\n                    />\n                  )}\n                  {wrapLinesPreference && (\n                    <WrapLinesPreference\n                      value={temporaryPreferences.wrapLines}\n                      {...wrapLinesPreference}\n                      onChange={wrapLines => onChange({ wrapLines })}\n                    />\n                  )}\n                  {stripedRowsPreference && (\n                    <StripedRowsPreference\n                      value={temporaryPreferences.stripedRows}\n                      {...stripedRowsPreference}\n                      onChange={stripedRows => onChange({ stripedRows })}\n                    />\n                  )}\n                  {contentDensityPreference && (\n                    <ContentDensityPreference\n                      value={temporaryPreferences.contentDensity}\n                      {...contentDensityPreference}\n                      onChange={contentDensity => onChange({ contentDensity })}\n                    />\n                  )}\n                  {stickyColumnsPreference && (\n                    <StickyColumnsPreference\n                      value={temporaryPreferences.stickyColumns}\n                      {...stickyColumnsPreference}\n                      onChange={stickyColumns => onChange({ stickyColumns })}\n                    />\n                  )}\n                  {customPreference && (\n                    <CustomPreference\n                      value={temporaryPreferences.custom}\n                      customPreference={customPreference}\n                      onChange={custom => onChange({ custom })}\n                    />\n                  )}\n                </InternalSpaceBetween>\n              )\n            }\n            right={\n              contentDisplayPreference ? (\n                <ContentDisplayPreference\n                  {...contentDisplayPreference}\n                  value={temporaryPreferences.contentDisplay}\n                  onChange={contentDisplay => onChange({ contentDisplay })}\n                />\n              ) : (\n                visibleContentPreference && (\n                  <VisibleContentPreference\n                    value={temporaryPreferences.visibleContent}\n                    {...visibleContentPreference}\n                    onChange={visibleItems => onChange({ visibleContent: visibleItems })}\n                  />\n                )\n              )\n            }\n          />\n        </InternalModal>\n      )}\n    </div>\n  );\n}\n\napplyDisplayName(CollectionPreferences, componentName);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { BoxProps } from './interfaces';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport InternalBox from './internal';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { BoxProps };\n\nexport default function Box({ variant = 'div', margin = {}, padding = {}, ...props }: BoxProps) {\n  const baseComponentProps = useBaseComponent('Box');\n  return <InternalBox variant={variant} margin={margin} padding={padding} {...props} {...baseComponentProps} />;\n}\napplyDisplayName(Box, 'Box');\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_wih1l_qxh8c_97\",\n  \"tools\": \"awsui_tools_wih1l_qxh8c_108\",\n  \"tools-filtering\": \"awsui_tools-filtering_wih1l_qxh8c_114\",\n  \"tools-align-right\": \"awsui_tools-align-right_wih1l_qxh8c_128\",\n  \"tools-pagination\": \"awsui_tools-pagination_wih1l_qxh8c_132\",\n  \"tools-preferences\": \"awsui_tools-preferences_wih1l_qxh8c_132\",\n  \"tools-small\": \"awsui_tools-small_wih1l_qxh8c_138\",\n  \"table\": \"awsui_table_wih1l_qxh8c_144\",\n  \"table-layout-fixed\": \"awsui_table-layout-fixed_wih1l_qxh8c_150\",\n  \"wrapper\": \"awsui_wrapper_wih1l_qxh8c_154\",\n  \"variant-stacked\": \"awsui_variant-stacked_wih1l_qxh8c_163\",\n  \"variant-container\": \"awsui_variant-container_wih1l_qxh8c_163\",\n  \"variant-embedded\": \"awsui_variant-embedded_wih1l_qxh8c_167\",\n  \"variant-borderless\": \"awsui_variant-borderless_wih1l_qxh8c_167\",\n  \"has-header\": \"awsui_has-header_wih1l_qxh8c_170\",\n  \"has-footer\": \"awsui_has-footer_wih1l_qxh8c_173\",\n  \"cell-merged\": \"awsui_cell-merged_wih1l_qxh8c_190\",\n  \"cell-merged-content\": \"awsui_cell-merged-content_wih1l_qxh8c_201\",\n  \"empty\": \"awsui_empty_wih1l_qxh8c_216\",\n  \"loading\": \"awsui_loading_wih1l_qxh8c_220\",\n  \"selection-control\": \"awsui_selection-control_wih1l_qxh8c_229\",\n  \"selection-control-header\": \"awsui_selection-control-header_wih1l_qxh8c_236\",\n  \"sticky-scrollbar\": \"awsui_sticky-scrollbar_wih1l_qxh8c_241\",\n  \"sticky-scrollbar-content\": \"awsui_sticky-scrollbar-content_wih1l_qxh8c_250\",\n  \"sticky-scrollbar-visible\": \"awsui_sticky-scrollbar-visible_wih1l_qxh8c_253\",\n  \"sticky-scrollbar-native-invisible\": \"awsui_sticky-scrollbar-native-invisible_wih1l_qxh8c_256\",\n  \"dark-header\": \"awsui_dark-header_wih1l_qxh8c_264\",\n  \"header-secondary\": \"awsui_header-secondary_wih1l_qxh8c_269\",\n  \"table-has-header\": \"awsui_table-has-header_wih1l_qxh8c_285\",\n  \"header-controls\": \"awsui_header-controls_wih1l_qxh8c_289\",\n  \"variant-full-page\": \"awsui_variant-full-page_wih1l_qxh8c_293\",\n  \"footer-wrapper\": \"awsui_footer-wrapper_wih1l_qxh8c_306\",\n  \"footer\": \"awsui_footer_wih1l_qxh8c_306\",\n  \"thead-active\": \"awsui_thead-active_wih1l_qxh8c_315\",\n  \"row\": \"awsui_row_wih1l_qxh8c_316\",\n  \"row-selected\": \"awsui_row-selected_wih1l_qxh8c_317\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport styles from './styles.css.js';\n\ninterface ToolsHeaderProps {\n  header: React.ReactNode;\n  filter?: React.ReactNode;\n  pagination?: React.ReactNode;\n  preferences?: React.ReactNode;\n}\n\nexport default function ToolsHeader({ header, filter, pagination, preferences }: ToolsHeaderProps) {\n  const [breakpoint, ref] = useContainerBreakpoints(['xs']);\n  const isSmall = breakpoint === 'default';\n  const hasTools = filter || pagination || preferences;\n  return (\n    <>\n      {header}\n      {hasTools && (\n        <div ref={ref} className={clsx(styles.tools, isSmall && styles['tools-small'])}>\n          {filter && <div className={styles['tools-filtering']}>{filter}</div>}\n          <div className={styles['tools-align-right']}>\n            {pagination && <div className={styles['tools-pagination']}>{pagination}</div>}\n            {preferences && <div className={styles['tools-preferences']}>{preferences}</div>}\n          </div>\n        </div>\n      )}\n    </>\n  );\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_1ut8b_1k4fs_93\",\n  \"label\": \"awsui_label_1ut8b_1k4fs_97\",\n  \"stud\": \"awsui_stud_1ut8b_1k4fs_111\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { KeyboardEvent, KeyboardEventHandler, MouseEvent } from 'react';\nimport { KeyCode } from '../../internal/keycode';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\nimport InternalCheckbox from '../../checkbox/internal';\nimport RadioButton from '../../radio-group/radio-button';\n\nimport styles from './styles.css.js';\nimport { InteractiveComponent } from '../thead';\nimport { SelectionProps } from '../use-selection';\n\nexport interface SelectionControlProps extends SelectionProps {\n  onShiftToggle?(shiftPressed: boolean): void;\n  onFocusUp?: KeyboardEventHandler;\n  onFocusDown?: KeyboardEventHandler;\n  ariaLabel?: string;\n  tabIndex?: -1;\n\n  focusedComponent?: InteractiveComponent | null;\n  onFocusedComponentChange?: (element: InteractiveComponent | null) => void;\n}\n\nexport default function SelectionControl({\n  selectionType,\n  indeterminate = false,\n  onShiftToggle,\n  onFocusUp,\n  onFocusDown,\n  name,\n  ariaLabel,\n\n  focusedComponent,\n  onFocusedComponentChange,\n  ...sharedProps\n}: SelectionControlProps) {\n  const controlId = useUniqueId();\n  const isMultiSelection = selectionType === 'multi';\n\n  const setShiftState = (event: KeyboardEvent | MouseEvent) => {\n    if (isMultiSelection) {\n      onShiftToggle && onShiftToggle(event.shiftKey);\n    }\n  };\n\n  const onMouseDownHandler = (event: MouseEvent) => {\n    setShiftState(event);\n    if (isMultiSelection) {\n      // To overcome an issue\n      // If you shift+click or ctrl+click on a label for a checkbox, checkbox is not checked.\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=559506\n      event.preventDefault();\n    }\n  };\n\n  // native checkboxes do not have focus move via keyboard, we implement it here programmatically\n  const handleKeyDown = (event: KeyboardEvent) => {\n    setShiftState(event);\n    if (isMultiSelection) {\n      if (event.keyCode === KeyCode.up) {\n        event.preventDefault();\n        onFocusUp && onFocusUp(event);\n      }\n      if (event.keyCode === KeyCode.down) {\n        event.preventDefault();\n        onFocusDown && onFocusDown(event);\n      }\n    }\n  };\n\n  const handleClick = (event: MouseEvent) => {\n    const target = event.currentTarget;\n    const nativeInput = (target.tagName === 'INPUT' ? target : target.querySelector('input')) as HTMLInputElement;\n    // Clicking on input, does not focus it on Firefox (AWSUI-11345)\n    nativeInput?.focus();\n  };\n\n  const selector = isMultiSelection ? (\n    <InternalCheckbox\n      {...sharedProps}\n      showOutline={focusedComponent?.type === 'selection'}\n      onFocus={() => onFocusedComponentChange?.({ type: 'selection' })}\n      onBlur={() => onFocusedComponentChange?.(null)}\n      controlId={controlId}\n      indeterminate={indeterminate}\n    />\n  ) : (\n    <RadioButton {...sharedProps} controlId={controlId} name={name} value={''} label={''} />\n  );\n\n  return (\n    <>\n      <label\n        onKeyDown={handleKeyDown}\n        onKeyUp={setShiftState}\n        onMouseDown={onMouseDownHandler}\n        onMouseUp={setShiftState}\n        onClick={handleClick}\n        htmlFor={controlId}\n        className={clsx(styles.label, styles.root)}\n        aria-label={ariaLabel}\n        title={ariaLabel}\n      >\n        {selector}\n      </label>\n      {/* HACK: IE11 collapses td's height to 0, if it contains only an absouletely positioned label */}\n      <span className={clsx(styles.stud)} aria-hidden={true}>\n        &nbsp;\n      </span>\n    </>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { InternalContainerProps } from '../container/internal';\nimport { TableProps } from './interfaces';\nimport { warnOnce } from '../internal/logging';\nimport { StickyColumnsCellState } from './use-sticky-columns';\n\nexport const applyTrackBy = <T>(trackBy: TableProps.TrackBy<T>, item: T) => {\n  if (typeof trackBy === 'function') {\n    return trackBy(item);\n  }\n  return (item as any)[trackBy];\n};\n\nexport const getItemKey = <T>(trackBy: TableProps.TrackBy<T> | undefined, item: T, index: number) => {\n  if (!trackBy) {\n    return index;\n  }\n  return applyTrackBy(trackBy, item);\n};\n\nexport const getTrackableValue = <T>(trackBy: TableProps.TrackBy<T> | undefined, item: T) => {\n  if (!trackBy) {\n    return item;\n  }\n  return applyTrackBy(trackBy, item);\n};\n\nexport const getColumnKey = <T>(column: TableProps.ColumnDefinition<T>, index: number) => {\n  return column.id || index;\n};\n\nexport const toContainerVariant = (variant: TableProps.Variant | undefined): InternalContainerProps['variant'] => {\n  const isDefaultVariant = !variant || variant === 'container';\n  return isDefaultVariant ? 'default' : variant === 'borderless' ? 'embedded' : variant;\n};\n\nexport function checkSortingState<T>(\n  columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>,\n  sortingComparator: TableProps.SortingColumn<T>['sortingComparator']\n) {\n  const matchedColumn = columnDefinitions.filter(column => column.sortingComparator === sortingComparator)[0];\n  if (!matchedColumn) {\n    warnOnce(\n      'Table',\n      'Currently active sorting comparator was not found in any columns. Make sure to provide the same comparator function instance on each render.'\n    );\n  }\n}\n\nexport function getVisibleColumnDefinitions<T>({\n  columnDisplay,\n  visibleColumns,\n  columnDefinitions,\n}: {\n  columnDisplay?: ReadonlyArray<TableProps.ColumnDisplayProperties>;\n  visibleColumns?: ReadonlyArray<string>;\n  columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;\n}) {\n  // columnsDisplay has a precedence over visibleColumns.\n  if (columnDisplay) {\n    return getVisibleColumnDefinitionsFromColumnDisplay({ columnDisplay, columnDefinitions });\n  } else if (visibleColumns) {\n    return getVisibleColumnDefinitionsFromVisibleColumns({ visibleColumns, columnDefinitions });\n  } else {\n    return columnDefinitions;\n  }\n}\n\nfunction getVisibleColumnDefinitionsFromColumnDisplay<T>({\n  columnDisplay,\n  columnDefinitions,\n}: {\n  columnDisplay: ReadonlyArray<TableProps.ColumnDisplayProperties>;\n  columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;\n}) {\n  const columnDefinitionsById: Record<string, TableProps.ColumnDefinition<T>> = columnDefinitions.reduce(\n    (accumulator, item) => (item.id === undefined ? accumulator : { ...accumulator, [item.id]: item }),\n    {}\n  );\n  return columnDisplay\n    .filter(item => item.visible)\n    .map(item => columnDefinitionsById[item.id])\n    .filter(Boolean);\n}\n\nfunction getVisibleColumnDefinitionsFromVisibleColumns<T>({\n  visibleColumns,\n  columnDefinitions,\n}: {\n  visibleColumns: ReadonlyArray<string>;\n  columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<T>>;\n}) {\n  const ids = new Set(visibleColumns);\n  return columnDefinitions.filter(({ id }) => id !== undefined && ids.has(id));\n}\n\nexport function getStickyClassNames(styles: Record<string, string>, props: StickyColumnsCellState | null) {\n  return {\n    [styles['sticky-cell']]: !!props,\n    [styles['sticky-cell-pad-left']]: !!props?.padLeft,\n    [styles['sticky-cell-last-left']]: !!props?.lastLeft,\n    [styles['sticky-cell-last-right']]: !!props?.lastRight,\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { KeyboardEvent, useState } from 'react';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { findUpUntil } from '../internal/utils/dom';\nimport { TableProps } from './interfaces';\nimport { getTrackableValue } from './utils';\nimport selectionStyles from './selection-control/styles.css.js';\nimport { joinStrings } from '../internal/utils/strings';\n\nexport interface SelectionProps {\n  name: string;\n  disabled: boolean;\n  selectionType: 'single' | 'multi';\n  indeterminate?: boolean;\n  checked: boolean;\n  onChange: () => void;\n  ariaLabel?: string;\n}\n\nconst SELECTION_ITEM = 'selection-item';\nconst SELECTION_ROOT = 'selection-root';\n\nfunction findSelectionControlByIndex(rootContainer: HTMLElement, index: number) {\n  if (index === -1) {\n    // find \"select all\" checkbox\n    return rootContainer.querySelector<HTMLInputElement>(\n      `[data-${SELECTION_ITEM}=\"all\"] .${selectionStyles.root} input`\n    );\n  }\n  return rootContainer.querySelectorAll<HTMLInputElement>(\n    `[data-${SELECTION_ITEM}=\"item\"] .${selectionStyles.root} input`\n  )[index];\n}\n\nfunction findRootContainer(element: HTMLElement) {\n  return findUpUntil(element, node => node.dataset.selectionRoot === 'true')!;\n}\n\nexport function useFocusMove(selectionType: TableProps['selectionType'], totalItems: number) {\n  if (selectionType !== 'multi') {\n    return {};\n  }\n  function moveFocus(sourceElement: HTMLElement, fromIndex: number, direction: -1 | 1) {\n    let index = fromIndex;\n    const rootContainer = findRootContainer(sourceElement);\n\n    while (index >= -1 && index < totalItems) {\n      index += direction;\n      const control = findSelectionControlByIndex(rootContainer, index);\n      if (control && !control.disabled) {\n        control.focus();\n        break;\n      }\n    }\n  }\n  const [moveFocusDown, moveFocusUp] = ([1, -1] as const).map(direction => {\n    return (event: KeyboardEvent) => {\n      const target = event.currentTarget as HTMLElement;\n      const itemNode = findUpUntil(target, node => node.dataset.selectionItem === 'item')!;\n      const fromIndex = Array.prototype.indexOf.call(itemNode.parentElement!.children, itemNode);\n      moveFocus(target, fromIndex, direction);\n    };\n  });\n  return {\n    moveFocusDown,\n    moveFocusUp,\n    moveFocus,\n  };\n}\n\n// A set, that compares items by their \"trackables\" (the results of applying `trackBy` to them)\nclass ItemSet<T> {\n  constructor(trackBy: TableProps.TrackBy<T> | undefined, items: ReadonlyArray<T>) {\n    this.trackBy = trackBy;\n    items.forEach(this.put);\n  }\n  private trackBy: TableProps.TrackBy<T> | undefined;\n  private map: Map<unknown, T> = new Map();\n  put = (item: T) => this.map.set.call(this.map, getTrackableValue(this.trackBy, item), item);\n  has = (item: T) => this.map.has.call(this.map, getTrackableValue(this.trackBy, item));\n  forEach = this.map.forEach.bind(this.map);\n}\n\nexport const focusMarkers = {\n  item: { ['data-' + SELECTION_ITEM]: 'item' },\n  all: { ['data-' + SELECTION_ITEM]: 'all' },\n  root: { ['data-' + SELECTION_ROOT]: 'true' },\n};\n\nexport function useSelection<T>({\n  items,\n  selectedItems = [],\n  selectionType,\n  isItemDisabled = () => false,\n  trackBy,\n  onSelectionChange,\n  ariaLabels,\n  loading,\n}: Pick<\n  TableProps<T>,\n  | 'ariaLabels'\n  | 'items'\n  | 'selectedItems'\n  | 'selectionType'\n  | 'isItemDisabled'\n  | 'trackBy'\n  | 'onSelectionChange'\n  | 'loading'\n>) {\n  const [shiftPressed, setShiftPressed] = useState(false);\n  const [lastClickedItem, setLastClickedItem] = useState<T | null>(null);\n  const selectionName = useUniqueId();\n  const finalSelectedItems = selectionType === 'single' ? selectedItems.slice(0, 1) : selectedItems;\n  const selectedSet = new ItemSet(trackBy, finalSelectedItems);\n  const itemIndexesMap = new Map();\n  items.forEach((item, i) => itemIndexesMap.set(getTrackableValue(trackBy, item), i));\n  const isItemSelected = selectedSet.has.bind(selectedSet);\n  const getItemState = (item: T) => ({\n    disabled: isItemDisabled(item),\n    selected: isItemSelected(item),\n  });\n  const [allDisabled, allEnabledSelected] = selectionType\n    ? items.reduce(\n        ([allDisabled, allEnabledSelected], item) => {\n          const { disabled, selected } = getItemState(item);\n          return [\n            // all items are disabled (or none are present)\n            allDisabled && disabled,\n            // all enabled items are selected (or none are present)\n            allEnabledSelected && (selected || disabled),\n          ];\n        },\n        [true, true]\n      )\n    : [true, true];\n\n  // the page has at least one selected item\n  const hasSelected = finalSelectedItems.length > 0;\n\n  const handleToggleAll = () => {\n    const requestedItems = new ItemSet(trackBy, items);\n    const newSelectedItems = allEnabledSelected ? deselectItems(requestedItems) : selectItems(requestedItems);\n    fireNonCancelableEvent(onSelectionChange, { selectedItems: newSelectedItems });\n  };\n\n  const getRequestedItems = (item: T) => {\n    const requestedItems = new ItemSet(trackBy, [item]);\n    let lastClickedItemIndex = lastClickedItem ? itemIndexesMap.get(getTrackableValue(trackBy, lastClickedItem)) : -1;\n    if (lastClickedItemIndex === undefined) {\n      lastClickedItemIndex = -1;\n    }\n    // we use lastClickedItemIndex to determine if filtering/sorting/pagination\n    // made previously selected item invisible, therefore we reset state for shift-select\n    if (shiftPressed && lastClickedItemIndex !== -1) {\n      // item is always in items\n      const currentItemIndex = itemIndexesMap.get(getTrackableValue(trackBy, item)) as number;\n      const start = Math.min(currentItemIndex, lastClickedItemIndex);\n      const end = Math.max(currentItemIndex, lastClickedItemIndex);\n      items.slice(start, end + 1).forEach(item => requestedItems.put(item));\n    }\n    return requestedItems;\n  };\n\n  const deselectItems = (requestedItems: ItemSet<T>) => {\n    const newSelectedItems: Array<T> = [];\n    selectedItems.forEach(selectedItem => {\n      const toUnselect = requestedItems.has(selectedItem);\n      if (!toUnselect || isItemDisabled(selectedItem)) {\n        newSelectedItems.push(selectedItem);\n      }\n    });\n    return newSelectedItems;\n  };\n\n  const selectItems = (requestedItems: ItemSet<T>) => {\n    const newSelectedItems = [...selectedItems];\n    requestedItems.forEach(newItem => {\n      const { selected, disabled } = getItemState(newItem);\n      if (!selected && !disabled) {\n        newSelectedItems.push(newItem);\n      }\n    });\n    return newSelectedItems;\n  };\n\n  const handleToggleItem = (item: T) => () => {\n    const { disabled, selected } = getItemState(item);\n    if (disabled || (selectionType === 'single' && selected)) {\n      return;\n    }\n    if (selectionType === 'single') {\n      fireNonCancelableEvent(onSelectionChange, { selectedItems: [item] });\n    } else {\n      const requestedItems = getRequestedItems(item);\n      const selectedItems = selected ? deselectItems(requestedItems) : selectItems(requestedItems);\n      fireNonCancelableEvent(onSelectionChange, { selectedItems });\n      setLastClickedItem(item);\n    }\n  };\n\n  return {\n    isItemSelected,\n    getSelectAllProps: (): SelectionProps => {\n      if (!selectionType) {\n        throw new Error('Invariant violation: calling selection props with missing selection type.');\n      }\n      return {\n        name: selectionName,\n        disabled: allDisabled || !!loading,\n        selectionType: selectionType,\n        indeterminate: hasSelected && !allEnabledSelected,\n        checked: hasSelected && allEnabledSelected,\n        onChange: handleToggleAll,\n        ariaLabel: joinStrings(\n          ariaLabels?.selectionGroupLabel,\n          ariaLabels?.allItemsSelectionLabel?.({ selectedItems })\n        ),\n      };\n    },\n    getItemSelectionProps: (item: T): SelectionProps => {\n      if (!selectionType) {\n        throw new Error('Invariant violation: calling selection props with missing selection type.');\n      }\n      return {\n        name: selectionName,\n        selectionType: selectionType,\n        ariaLabel: joinStrings(\n          ariaLabels?.selectionGroupLabel,\n          ariaLabels?.itemSelectionLabel?.({ selectedItems }, item)\n        ),\n        onChange: handleToggleItem(item),\n        checked: isItemSelected(item),\n        disabled: isItemDisabled(item),\n      };\n    },\n    updateShiftToggle: (value: boolean) => {\n      setShiftPressed(value);\n    },\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { TableProps } from '../interfaces';\n\ntype SortingStatus = 'sortable' | 'ascending' | 'descending';\nconst stateToIcon = {\n  sortable: 'caret-down',\n  ascending: 'caret-up-filled',\n  descending: 'caret-down-filled',\n} as const;\nconst stateToAriaSort = {\n  sortable: 'none',\n  ascending: 'ascending',\n  descending: 'descending',\n} as const;\n\nexport const getSortingStatus = (\n  sortable: boolean,\n  sorted: boolean,\n  descending: boolean,\n  disabled: boolean\n): SortingStatus | undefined => {\n  if (sorted) {\n    if (descending) {\n      return 'descending';\n    }\n    return 'ascending';\n  }\n  if (sortable && !disabled) {\n    return 'sortable';\n  }\n  return undefined;\n};\n\nexport const getSortingIconName = (sortingState: SortingStatus) => stateToIcon[sortingState];\nexport const getAriaSort = (sortingState: SortingStatus) => stateToAriaSort[sortingState];\nexport const isSorted = <T>(column: TableProps.ColumnDefinition<T>, sortingColumn: TableProps.SortingColumn<T>) =>\n  column === sortingColumn ||\n  (column.sortingField !== undefined && column.sortingField === sortingColumn.sortingField) ||\n  (column.sortingComparator !== undefined && column.sortingComparator === sortingColumn.sortingComparator);\n","\n    import './styles.scoped.css';\n    export default {\n  \"header-cell\": \"awsui_header-cell_1spae_1xd9m_93\",\n  \"header-cell-sticky\": \"awsui_header-cell-sticky_1spae_1xd9m_105\",\n  \"header-cell-stuck\": \"awsui_header-cell-stuck_1spae_1xd9m_108\",\n  \"header-cell-variant-full-page\": \"awsui_header-cell-variant-full-page_1spae_1xd9m_108\",\n  \"header-cell-hidden\": \"awsui_header-cell-hidden_1spae_1xd9m_111\",\n  \"header-cell-sortable\": \"awsui_header-cell-sortable_1spae_1xd9m_114\",\n  \"sticky-cell\": \"awsui_sticky-cell_1spae_1xd9m_117\",\n  \"sticky-cell-pad-left\": \"awsui_sticky-cell-pad-left_1spae_1xd9m_125\",\n  \"has-selection\": \"awsui_has-selection_1spae_1xd9m_125\",\n  \"sticky-cell-last-left\": \"awsui_sticky-cell-last-left_1spae_1xd9m_128\",\n  \"header-cell-resizable\": \"awsui_header-cell-resizable_1spae_1xd9m_132\",\n  \"sticky-cell-last-right\": \"awsui_sticky-cell-last-right_1spae_1xd9m_135\",\n  \"sorting-icon\": \"awsui_sorting-icon_1spae_1xd9m_165\",\n  \"edit-icon\": \"awsui_edit-icon_1spae_1xd9m_173\",\n  \"header-cell-content\": \"awsui_header-cell-content_1spae_1xd9m_179\",\n  \"header-cell-fake-focus\": \"awsui_header-cell-fake-focus_1spae_1xd9m_208\",\n  \"header-cell-disabled\": \"awsui_header-cell-disabled_1spae_1xd9m_226\",\n  \"header-cell-sorted\": \"awsui_header-cell-sorted_1spae_1xd9m_226\",\n  \"header-cell-text\": \"awsui_header-cell-text_1spae_1xd9m_240\",\n  \"header-cell-text-wrap\": \"awsui_header-cell-text-wrap_1spae_1xd9m_245\",\n  \"header-cell-ascending\": \"awsui_header-cell-ascending_1spae_1xd9m_251\",\n  \"header-cell-descending\": \"awsui_header-cell-descending_1spae_1xd9m_252\",\n  \"is-visual-refresh\": \"awsui_is-visual-refresh_1spae_1xd9m_262\",\n  \"has-striped-rows\": \"awsui_has-striped-rows_1spae_1xd9m_273\"\n};\n  ","\n    import './styles.scoped.css';\n    export default {\n  \"resize-active\": \"awsui_resize-active_x7peu_r58d2_93\",\n  \"resize-active-with-focus\": \"awsui_resize-active-with-focus_x7peu_r58d2_93\",\n  \"resizer\": \"awsui_resizer_x7peu_r58d2_98\",\n  \"resizer-active\": \"awsui_resizer-active_x7peu_r58d2_114\",\n  \"has-focus\": \"awsui_has-focus_x7peu_r58d2_126\",\n  \"tracker\": \"awsui_tracker_x7peu_r58d2_149\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef, useState, createContext, useContext } from 'react';\nimport { TableProps } from './interfaces';\nimport { getColumnKey } from './utils';\nimport headerCellStyles from './header-cell/styles.css.js';\nimport { warnOnce } from '../internal/logging';\n\nexport const DEFAULT_WIDTH = 120;\nconst SELECTION_CELL_WIDTH = 54;\n\nfunction checkProperty(column: TableProps.ColumnDefinition<any>, name: 'width' | 'minWidth') {\n  const value = column[name];\n  if (typeof value !== 'number' && typeof value !== 'undefined') {\n    warnOnce(\n      'Table',\n      `resizableColumns feature requires ${name} property to be a number, got ${value}. The component may work incorrectly.`\n    );\n  }\n}\n\nexport function checkColumnWidths(columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<any>>) {\n  for (const column of columnDefinitions) {\n    checkProperty(column, 'minWidth');\n    checkProperty(column, 'width');\n  }\n}\n\nfunction readWidths(\n  headerEl: HTMLElement,\n  columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<any>>,\n  hasSelection: boolean\n) {\n  const result: Record<string, number> = {};\n  for (let index = 0; index < columnDefinitions.length; index++) {\n    const column = columnDefinitions[index];\n    const id = getColumnKey(columnDefinitions[index], index);\n    let width = (column.width as number) || 0;\n    const minWidth = (column.minWidth as number) || width || DEFAULT_WIDTH;\n    if (\n      !width && // read width from the DOM if it is missing in the config\n      index !== columnDefinitions.length - 1 // skip reading for the last column, because it expands to fully fit the container\n    ) {\n      const colIndex = hasSelection ? index + 2 : index + 1;\n      const colEl = headerEl.querySelector<HTMLElement>(`.${headerCellStyles['header-cell']}:nth-child(${colIndex})`)!;\n      width = colEl.getBoundingClientRect().width;\n    }\n    result[id] = Math.max(width, minWidth);\n  }\n  return result;\n}\n\nfunction updateWidths(\n  columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<any>>,\n  oldWidths: Record<string, number>,\n  newWidth: number,\n  colIndex: number\n) {\n  const definition = columnDefinitions[colIndex];\n  const id = getColumnKey(definition, colIndex);\n  const minWidth = typeof definition.minWidth === 'number' ? definition.minWidth : DEFAULT_WIDTH;\n  newWidth = Math.max(newWidth, minWidth);\n  if (oldWidths[id] === newWidth) {\n    return oldWidths;\n  }\n  return { ...oldWidths, [id]: newWidth };\n}\n\ninterface WidthsContext {\n  totalWidth: number;\n  columnWidths: Record<string, number>;\n  updateColumn: (colIndex: number, newWidth: number) => void;\n}\n\nconst WidthsContext = createContext<WidthsContext>({\n  totalWidth: 0,\n  columnWidths: {},\n  updateColumn: () => {},\n});\n\ninterface WidthProviderProps {\n  tableRef: React.MutableRefObject<HTMLElement | null>;\n  visibleColumnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<any>>;\n  resizableColumns: boolean | undefined;\n  hasSelection: boolean;\n  children: React.ReactNode;\n}\n\nexport function ColumnWidthsProvider({\n  tableRef,\n  visibleColumnDefinitions,\n  resizableColumns,\n  hasSelection,\n  children,\n}: WidthProviderProps) {\n  const visibleColumns = useRef<(string | undefined)[] | null>(null);\n  const [columnWidths, setColumnWidths] = useState<Record<string, number>>({});\n\n  useEffect(() => {\n    if (!resizableColumns) {\n      return;\n    }\n    const lastVisible = visibleColumns.current;\n    if (lastVisible) {\n      for (let index = 0; index < visibleColumnDefinitions.length; index++) {\n        const column = visibleColumnDefinitions[index];\n        const id = getColumnKey(column, index);\n        if (!columnWidths[id] && lastVisible.indexOf(column.id) === -1) {\n          setColumnWidths(columnWidths => ({ ...columnWidths, [id]: (column.width as number) || DEFAULT_WIDTH }));\n        }\n      }\n    }\n    visibleColumns.current = visibleColumnDefinitions.map(column => column.id);\n  }, [columnWidths, resizableColumns, visibleColumnDefinitions]);\n\n  useEffect(() => {\n    if (!resizableColumns) {\n      return;\n    }\n    setColumnWidths(() => readWidths(tableRef.current!, visibleColumnDefinitions, hasSelection));\n    // This code is intended to run only at the first render and should not re-run when table props change\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  function updateColumn(colIndex: number, newWidth: number) {\n    setColumnWidths(columnWidths => updateWidths(visibleColumnDefinitions, columnWidths, newWidth, colIndex));\n  }\n\n  let totalWidth = visibleColumnDefinitions.reduce(\n    (total, column, index) => total + (columnWidths[getColumnKey(column, index)] || DEFAULT_WIDTH),\n    0\n  );\n  if (hasSelection) {\n    totalWidth += SELECTION_CELL_WIDTH;\n  }\n\n  return <WidthsContext.Provider value={{ columnWidths, totalWidth, updateColumn }}>{children}</WidthsContext.Provider>;\n}\n\nexport function useColumnWidths() {\n  return useContext(WidthsContext);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useStableEventHandler } from '../../internal/hooks/use-stable-event-handler';\nimport { getOverflowParents } from '../../internal/utils/scrollable-containers';\nimport { findUpUntil } from '../../internal/utils/dom';\nimport tableStyles from '../styles.css.js';\nimport styles from './styles.css.js';\nimport { KeyCode } from '../../internal/keycode';\nimport { DEFAULT_WIDTH } from '../use-column-widths';\n\ninterface ResizerProps {\n  onDragMove: (newWidth: number) => void;\n  onFinish: () => void;\n  ariaLabelledby?: string;\n  minWidth?: number;\n  tabIndex?: number;\n\n  showFocusRing?: boolean;\n  onFocus?: () => void;\n  onBlur?: () => void;\n}\n\nconst AUTO_GROW_START_TIME = 10;\nconst AUTO_GROW_INTERVAL = 10;\nconst AUTO_GROW_INCREMENT = 5;\n\nexport function Resizer({\n  onDragMove,\n  onFinish,\n  ariaLabelledby,\n  minWidth = DEFAULT_WIDTH,\n  tabIndex,\n  showFocusRing,\n  onFocus,\n  onBlur,\n}: ResizerProps) {\n  const [isDragging, setIsDragging] = useState(false);\n  const [headerCell, setHeaderCell] = useState<HTMLElement>();\n  const autoGrowTimeout = useRef<ReturnType<typeof setTimeout> | undefined>();\n  const onFinishStable = useStableEventHandler(onFinish);\n  const onDragStable = useStableEventHandler(onDragMove);\n  const [resizerHasFocus, setResizerHasFocus] = useState(false);\n  const [headerCellWidth, setHeaderCellWidth] = useState(0);\n\n  useEffect(() => {\n    if ((!isDragging && !resizerHasFocus) || !headerCell) {\n      return;\n    }\n    const rootElement = findUpUntil(headerCell, element => element.className.indexOf(tableStyles.root) > -1)!;\n    const tableElement = rootElement.querySelector<HTMLElement>(`table`)!;\n    // tracker is rendered inside table wrapper to align with its size\n    const tracker = rootElement.querySelector<HTMLElement>(`.${styles.tracker}`)!;\n    const scrollParent = getOverflowParents(headerCell)[0];\n    const { left: leftEdge, right: rightEdge } = scrollParent.getBoundingClientRect();\n\n    const updateTrackerPosition = (newOffset: number) => {\n      const { left: scrollParentLeft } = tableElement.getBoundingClientRect();\n      tracker.style.top = headerCell.getBoundingClientRect().height + 'px';\n      // minus one pixel to offset the cell border\n      tracker.style.left = newOffset - scrollParentLeft - 1 + 'px';\n    };\n\n    const updateColumnWidth = (newWidth: number) => {\n      const { right, width } = headerCell.getBoundingClientRect();\n      const updatedWidth = newWidth < minWidth ? minWidth : newWidth;\n      updateTrackerPosition(right + updatedWidth - width);\n      setHeaderCellWidth(newWidth);\n      // callbacks must be the last calls in the handler, because they may cause an extra update\n      onDragStable(newWidth);\n    };\n\n    const resizeColumn = (offset: number) => {\n      if (offset > leftEdge) {\n        const cellLeft = headerCell.getBoundingClientRect().left;\n        const newWidth = offset - cellLeft;\n        // callbacks must be the last calls in the handler, because they may cause an extra update\n        updateColumnWidth(newWidth);\n      }\n    };\n\n    const onAutoGrow = () => {\n      const width = headerCell.getBoundingClientRect().width;\n      autoGrowTimeout.current = setTimeout(onAutoGrow, AUTO_GROW_INTERVAL);\n      // callbacks must be the last calls in the handler, because they may cause an extra update\n      updateColumnWidth(width + AUTO_GROW_INCREMENT);\n      scrollParent.scrollLeft += AUTO_GROW_INCREMENT;\n    };\n    const onMouseMove = (event: MouseEvent) => {\n      clearTimeout(autoGrowTimeout.current);\n      const offset = event.pageX;\n      if (offset > rightEdge) {\n        autoGrowTimeout.current = setTimeout(onAutoGrow, AUTO_GROW_START_TIME);\n      } else {\n        resizeColumn(offset);\n      }\n    };\n    const onMouseUp = (event: MouseEvent) => {\n      resizeColumn(event.pageX);\n      setIsDragging(false);\n      onFinishStable();\n      clearTimeout(autoGrowTimeout.current);\n    };\n    const onKeyDown = (event: KeyboardEvent) => {\n      // prevent screenreader cursor move\n      if (event.keyCode === KeyCode.left || event.keyCode === KeyCode.right) {\n        event.preventDefault();\n      }\n      // update width\n      if (event.keyCode === KeyCode.left) {\n        updateColumnWidth(headerCell.getBoundingClientRect().width - 10);\n      }\n      if (event.keyCode === KeyCode.right) {\n        updateColumnWidth(headerCell.getBoundingClientRect().width + 10);\n      }\n    };\n\n    updateTrackerPosition(headerCell.getBoundingClientRect().right);\n    document.body.classList.add(styles['resize-active']);\n    document.body.classList.remove(styles['resize-active-with-focus']);\n    if (isDragging) {\n      document.addEventListener('mousemove', onMouseMove);\n      document.addEventListener('mouseup', onMouseUp);\n    }\n    if (resizerHasFocus) {\n      document.body.classList.add(styles['resize-active-with-focus']);\n      headerCell.addEventListener('keydown', onKeyDown);\n    }\n\n    return () => {\n      clearTimeout(autoGrowTimeout.current);\n      document.body.classList.remove(styles['resize-active']);\n      document.removeEventListener('mousemove', onMouseMove);\n      document.removeEventListener('mouseup', onMouseUp);\n      headerCell.removeEventListener('keydown', onKeyDown);\n    };\n  }, [headerCell, isDragging, onDragStable, onFinishStable, resizerHasFocus, minWidth]);\n  return (\n    <span\n      className={clsx(\n        styles.resizer,\n        isDragging && styles['resizer-active'],\n        (resizerHasFocus || showFocusRing) && styles['has-focus']\n      )}\n      onMouseDown={event => {\n        if (event.button !== 0) {\n          return;\n        }\n        event.preventDefault();\n        const headerCell = findUpUntil(event.currentTarget, element => element.tagName.toLowerCase() === 'th')!;\n        setIsDragging(true);\n        setHeaderCell(headerCell);\n      }}\n      onFocus={event => {\n        const headerCell = findUpUntil(event.currentTarget, element => element.tagName.toLowerCase() === 'th')!;\n        setHeaderCellWidth(headerCell.getBoundingClientRect().width);\n        setResizerHasFocus(true);\n        setHeaderCell(headerCell);\n        onFocus?.();\n      }}\n      onBlur={() => {\n        setResizerHasFocus(false);\n        onBlur?.();\n      }}\n      role=\"separator\"\n      aria-orientation=\"vertical\"\n      aria-labelledby={ariaLabelledby}\n      aria-valuenow={headerCellWidth}\n      // aria-valuetext is needed because the VO announces \"collapsed\" when only aria-valuenow set without aria-valuemax\n      aria-valuetext={headerCellWidth.toString()}\n      aria-valuemin={minWidth}\n      tabIndex={tabIndex}\n    />\n  );\n}\n\nexport function ResizeTracker() {\n  return <span className={styles.tracker} />;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useLayoutEffect, useState } from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport { usePrevious } from '../../internal/hooks/use-previous';\n\ntype Selector<S, R> = (state: S) => R;\ntype Listener<S> = (state: S, prevState: S) => any;\n\nexport interface ReadonlyAsyncStore<S> {\n  get(): S;\n  subscribe<R>(selector: Selector<S, R>, listener: Listener<S>): () => void;\n  unsubscribe(listener: Listener<any>): void;\n}\n\nexport default class AsyncStore<S> implements ReadonlyAsyncStore<S> {\n  _state: S;\n  _listeners: [Selector<S, any>, Listener<any>][] = [];\n\n  constructor(state: S) {\n    this._state = state;\n  }\n\n  get(): S {\n    return this._state;\n  }\n\n  set(cb: (state: S) => S): void {\n    const prevState = this._state;\n    const newState = cb(prevState);\n\n    this._state = newState;\n\n    unstable_batchedUpdates(() => {\n      for (const [selector, listener] of this._listeners) {\n        if (selector(prevState) !== selector(newState)) {\n          listener(newState, prevState);\n        }\n      }\n    });\n  }\n\n  subscribe<R>(selector: Selector<S, R>, listener: Listener<S>): () => void {\n    this._listeners.push([selector, listener]);\n\n    return () => this.unsubscribe(listener);\n  }\n\n  unsubscribe(listener: Listener<any>): void {\n    for (let index = 0; index < this._listeners.length; index++) {\n      const [, storedListener] = this._listeners[index];\n\n      if (storedListener === listener) {\n        this._listeners.splice(index, 1);\n        break;\n      }\n    }\n  }\n}\n\nexport function useReaction<S, R>(store: ReadonlyAsyncStore<S>, selector: Selector<S, R>, effect: Listener<R>): void {\n  useLayoutEffect(\n    () => {\n      const unsubscribe = store.subscribe(selector, (newState, prevState) =>\n        effect(selector(newState), selector(prevState))\n      );\n      return unsubscribe;\n    },\n    // ignoring selector and effect as they are expected to stay constant\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [store]\n  );\n}\n\nexport function useSelector<S, R>(store: ReadonlyAsyncStore<S>, selector: Selector<S, R>): R {\n  const [state, setState] = useState<R>(selector(store.get()));\n\n  useReaction(store, selector, newState => {\n    setState(newState);\n  });\n\n  // When store changes we need the state to be updated synchronously to avoid inconsistencies.\n  const prevStore = usePrevious(store);\n  if (prevStore !== null && prevStore !== store) {\n    return selector(store.get());\n  }\n\n  return state;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport AsyncStore from '../area-chart/model/async-store';\nimport { useStableEventHandler } from '../internal/hooks/use-stable-event-handler';\nimport clsx from 'clsx';\nimport { useResizeObserver } from '../internal/hooks/container-queries';\n\nexport const selectionColumnId = Symbol('selection-column-id');\n\n// We allow the table to have a minimum of 148px of available space besides the sum of the widths of the sticky columns\n// This value is an UX recommendation and is approximately 1/3 of our smallest breakpoint (465px)\nconst MINIMUM_SCROLLABLE_SPACE = 148;\n\ntype ColumnId = string | symbol;\n\ninterface StickyColumnsProps {\n  visibleColumns: readonly ColumnId[];\n  stickyColumnsFirst: number;\n  stickyColumnsLast: number;\n}\n\nexport interface StickyColumnsModel {\n  isEnabled: boolean;\n  store: StickyColumnsStore;\n  style: {\n    wrapper?: React.CSSProperties;\n  };\n  refs: {\n    table: React.RefCallback<HTMLElement>;\n    wrapper: React.RefCallback<HTMLElement>;\n    cell: (columnId: ColumnId, node: null | HTMLElement) => void;\n  };\n}\n\nexport interface StickyColumnsState {\n  cellState: Record<ColumnId, null | StickyColumnsCellState>;\n  wrapperState: StickyColumnsWrapperState;\n}\n\n// Cell state is used to apply respective styles and offsets to sticky cells.\nexport interface StickyColumnsCellState {\n  padLeft: boolean;\n  lastLeft: boolean;\n  lastRight: boolean;\n  offset: { left?: number; right?: number };\n}\n\n// Scroll padding is applied to table's wrapper so that the table scrolls when focus goes behind sticky column.\nexport interface StickyColumnsWrapperState {\n  scrollPaddingLeft: number;\n  scrollPaddingRight: number;\n}\n\nexport function useStickyColumns({\n  visibleColumns,\n  stickyColumnsFirst,\n  stickyColumnsLast,\n}: StickyColumnsProps): StickyColumnsModel {\n  const store = useMemo(() => new StickyColumnsStore(), []);\n  const wrapperRef = useRef<HTMLElement>(null) as React.MutableRefObject<null | HTMLElement>;\n  const tableRef = useRef<HTMLElement>(null) as React.MutableRefObject<null | HTMLElement>;\n  const cellsRef = useRef<Record<ColumnId, HTMLElement>>({});\n\n  const hasStickyColumns = stickyColumnsFirst + stickyColumnsLast > 0;\n\n  const updateStickyStyles = useStableEventHandler(() => {\n    if (wrapperRef.current && tableRef.current) {\n      store.updateCellStyles({\n        wrapper: wrapperRef.current,\n        table: tableRef.current,\n        cells: cellsRef.current,\n        visibleColumns,\n        stickyColumnsFirst,\n        stickyColumnsLast,\n      });\n    }\n  });\n\n  useResizeObserver(wrapperRef, updateStickyStyles);\n\n  useResizeObserver(tableRef, updateStickyStyles);\n\n  useEffect(() => {\n    if (wrapperRef.current && tableRef.current) {\n      store.updateCellStyles({\n        wrapper: wrapperRef.current,\n        table: tableRef.current,\n        cells: cellsRef.current,\n        visibleColumns,\n        stickyColumnsFirst,\n        stickyColumnsLast,\n      });\n    }\n  }, [store, stickyColumnsFirst, stickyColumnsLast, visibleColumns]);\n\n  // Update wrapper styles imperatively to avoid unnecessary re-renders.\n  useEffect(() => {\n    if (!hasStickyColumns) {\n      return;\n    }\n\n    const selector = (state: StickyColumnsState) => state.wrapperState;\n\n    const updateWrapperStyles = (state: StickyColumnsWrapperState, prev: StickyColumnsWrapperState) => {\n      if (isWrapperStatesEqual(state, prev)) {\n        return;\n      }\n\n      if (wrapperRef.current) {\n        wrapperRef.current.style.scrollPaddingLeft = state.scrollPaddingLeft + 'px';\n        wrapperRef.current.style.scrollPaddingRight = state.scrollPaddingRight + 'px';\n      }\n    };\n\n    const unsubscribe = store.subscribe(selector, (newState, prevState) =>\n      updateWrapperStyles(selector(newState), selector(prevState))\n    );\n    return unsubscribe;\n  }, [store, hasStickyColumns]);\n\n  const setWrapper = useCallback(\n    (node: null | HTMLElement) => {\n      if (wrapperRef.current) {\n        wrapperRef.current.removeEventListener('scroll', updateStickyStyles);\n      }\n      if (node && hasStickyColumns) {\n        node.addEventListener('scroll', updateStickyStyles);\n      }\n      wrapperRef.current = node;\n    },\n    [hasStickyColumns, updateStickyStyles]\n  );\n\n  const setTable = useCallback((node: null | HTMLElement) => {\n    tableRef.current = node;\n  }, []);\n\n  const setCell = useCallback((columnId: ColumnId, node: null | HTMLElement) => {\n    if (node) {\n      cellsRef.current[columnId] = node;\n    } else {\n      delete cellsRef.current[columnId];\n    }\n  }, []);\n\n  return {\n    isEnabled: hasStickyColumns,\n    store,\n    style: {\n      // Provide wrapper styles as props so that a re-render won't cause invalidation.\n      wrapper: hasStickyColumns ? { ...store.get().wrapperState } : undefined,\n    },\n    refs: { wrapper: setWrapper, table: setTable, cell: setCell },\n  };\n}\n\ninterface UseStickyCellStylesProps {\n  stickyColumns: StickyColumnsModel;\n  columnId: ColumnId;\n  getClassName: (styles: null | StickyColumnsCellState) => Record<string, boolean>;\n}\n\ninterface StickyCellStyles {\n  ref: React.RefCallback<HTMLElement>;\n  className?: string;\n  style?: React.CSSProperties;\n}\n\nexport function useStickyCellStyles({\n  stickyColumns,\n  columnId,\n  getClassName,\n}: UseStickyCellStylesProps): StickyCellStyles {\n  const cellRef = useRef<HTMLElement>(null) as React.MutableRefObject<HTMLElement>;\n  const setCell = stickyColumns.refs.cell;\n  const refCallback = useCallback(\n    node => {\n      cellRef.current = node;\n      setCell(columnId, node);\n    },\n    [columnId, setCell]\n  );\n\n  // Update cell styles imperatively to avoid unnecessary re-renders.\n  useEffect(\n    () => {\n      if (!stickyColumns.isEnabled) {\n        return;\n      }\n\n      const selector = (state: StickyColumnsState) => state.cellState[columnId];\n\n      const updateCellStyles = (state: null | StickyColumnsCellState, prev: null | StickyColumnsCellState) => {\n        if (isCellStatesEqual(state, prev)) {\n          return;\n        }\n\n        const className = getClassName(state);\n        const cellElement = cellRef.current;\n        if (cellElement) {\n          Object.keys(className).forEach(key => {\n            if (className[key]) {\n              cellElement.classList.add(key);\n            } else {\n              cellElement.classList.remove(key);\n            }\n          });\n          cellElement.style.left = state?.offset.left !== undefined ? `${state.offset.left}px` : '';\n          cellElement.style.right = state?.offset.right !== undefined ? `${state.offset.right}px` : '';\n        }\n      };\n\n      const unsubscribe = stickyColumns.store.subscribe(selector, (newState, prevState) =>\n        updateCellStyles(selector(newState), selector(prevState))\n      );\n      return () => {\n        unsubscribe();\n        // Force the cleanup\n        updateCellStyles(null, { padLeft: false, lastLeft: false, lastRight: false, offset: {} });\n      };\n    },\n    // getClassName is expected to be pure\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [stickyColumns.store, stickyColumns.isEnabled, columnId]\n  );\n\n  // Provide cell styles as props so that a re-render won't cause invalidation.\n  const cellStyles = stickyColumns.store.get().cellState[columnId];\n  return {\n    ref: refCallback,\n    className: cellStyles ? clsx(getClassName(cellStyles)) : undefined,\n    style: cellStyles?.offset ?? undefined,\n  };\n}\n\nfunction isCellStatesEqual(s1: null | StickyColumnsCellState, s2: null | StickyColumnsCellState): boolean {\n  if (s1 && s2) {\n    return (\n      s1.padLeft === s2.padLeft &&\n      s1.lastLeft === s2.lastLeft &&\n      s1.lastRight === s2.lastRight &&\n      s1.offset.left === s2.offset.left &&\n      s1.offset.right === s2.offset.right\n    );\n  }\n  return s1 === s2;\n}\n\nfunction isWrapperStatesEqual(s1: StickyColumnsWrapperState, s2: StickyColumnsWrapperState): boolean {\n  return s1.scrollPaddingLeft === s2.scrollPaddingLeft && s1.scrollPaddingRight === s2.scrollPaddingRight;\n}\n\ninterface UpdateCellStylesProps {\n  wrapper: HTMLElement;\n  table: HTMLElement;\n  cells: Record<ColumnId, HTMLElement>;\n  visibleColumns: readonly ColumnId[];\n  stickyColumnsFirst: number;\n  stickyColumnsLast: number;\n}\n\nexport default class StickyColumnsStore extends AsyncStore<StickyColumnsState> {\n  private cellOffsets = new Map<ColumnId, { first: number; last: number }>();\n  private stickyWidthLeft = 0;\n  private stickyWidthRight = 0;\n  private isStuckToTheLeft = false;\n  private isStuckToTheRight = false;\n  private padLeft = false;\n\n  constructor() {\n    super({ cellState: {}, wrapperState: { scrollPaddingLeft: 0, scrollPaddingRight: 0 } });\n  }\n\n  public updateCellStyles(props: UpdateCellStylesProps) {\n    const hasStickyColumns = props.stickyColumnsFirst + props.stickyColumnsLast > 0;\n    const hadStickyColumns = this.cellOffsets.size > 0;\n\n    if (hasStickyColumns || hadStickyColumns) {\n      this.updateScroll(props);\n      this.updateCellOffsets(props);\n      this.set(() => ({\n        cellState: this.generateCellStyles(props),\n        wrapperState: { scrollPaddingLeft: this.stickyWidthLeft, scrollPaddingRight: this.stickyWidthRight },\n      }));\n    }\n  }\n\n  private updateScroll(props: UpdateCellStylesProps) {\n    const wrapperScrollLeft = props.wrapper.scrollLeft;\n    const wrapperScrollWidth = props.wrapper.scrollWidth;\n    const wrapperClientWidth = props.wrapper.clientWidth;\n    const tablePaddingLeft = parseFloat(getComputedStyle(props.table).paddingLeft) || 0;\n    const tablePaddingRight = parseFloat(getComputedStyle(props.table).paddingRight) || 0;\n\n    this.isStuckToTheLeft = wrapperScrollLeft > tablePaddingLeft;\n\n    // Math.ceil() is used here to address an edge-case in certain browsers, where they return non-integer wrapperScrollLeft values\n    // which are lower than expected (sub-pixel difference), resulting in the table always being in the \"stuck to the right\" state\n    this.isStuckToTheRight = Math.ceil(wrapperScrollLeft) < wrapperScrollWidth - wrapperClientWidth - tablePaddingRight;\n\n    this.padLeft = tablePaddingLeft !== 0 && this.isStuckToTheLeft;\n  }\n\n  private generateCellStyles = (props: UpdateCellStylesProps): Record<ColumnId, null | StickyColumnsCellState> => {\n    const isEnabled = this.isEnabled(props);\n    const lastLeftStickyColumnIndex = props.stickyColumnsFirst - 1;\n    const lastRightStickyColumnIndex = props.visibleColumns.length - props.stickyColumnsLast;\n\n    return props.visibleColumns.reduce((acc, columnId, index) => {\n      let stickySide = 'non-sticky';\n      if (index < props.stickyColumnsFirst) {\n        stickySide = 'left';\n      } else if (index >= props.visibleColumns.length - props.stickyColumnsLast) {\n        stickySide = 'right';\n      }\n\n      if (!isEnabled || stickySide === 'non-sticky') {\n        acc[columnId] = null;\n        return acc;\n      }\n\n      // Determine the offset of the sticky column using the `cellOffsets` state object\n      const isFirstColumn = index === 0;\n      const stickyColumnOffsetLeft = this.cellOffsets.get(columnId)?.first ?? 0;\n      const stickyColumnOffsetRight = this.cellOffsets.get(columnId)?.last ?? 0;\n\n      acc[columnId] = {\n        padLeft: isFirstColumn && this.padLeft,\n        lastLeft: this.isStuckToTheLeft && lastLeftStickyColumnIndex === index,\n        lastRight: this.isStuckToTheRight && lastRightStickyColumnIndex === index,\n        offset: {\n          left: stickySide === 'left' ? stickyColumnOffsetLeft : undefined,\n          right: stickySide === 'right' ? stickyColumnOffsetRight : undefined,\n        },\n      };\n      return acc;\n    }, {} as Record<ColumnId, null | StickyColumnsCellState>);\n  };\n\n  private updateCellOffsets = (props: UpdateCellStylesProps): void => {\n    const firstColumnsWidths: number[] = [];\n    for (let i = 0; i < props.visibleColumns.length; i++) {\n      const element = props.cells[props.visibleColumns[i]];\n      const cellWidth = element.getBoundingClientRect().width ?? 0;\n      firstColumnsWidths[i] = (firstColumnsWidths[i - 1] ?? 0) + cellWidth;\n    }\n\n    const lastColumnsWidths: number[] = [];\n    for (let i = props.visibleColumns.length - 1; i >= 0; i--) {\n      const element = props.cells[props.visibleColumns[i]];\n      const cellWidth = element.getBoundingClientRect().width ?? 0;\n      lastColumnsWidths[i] = (lastColumnsWidths[i + 1] ?? 0) + cellWidth;\n    }\n    lastColumnsWidths.reverse();\n\n    this.stickyWidthLeft = firstColumnsWidths[props.stickyColumnsFirst - 1] ?? 0;\n    this.stickyWidthRight = lastColumnsWidths[props.stickyColumnsLast - 1] ?? 0;\n    this.cellOffsets = props.visibleColumns.reduce(\n      (map, columnId, columnIndex) =>\n        map.set(columnId, {\n          first: firstColumnsWidths[columnIndex - 1] ?? 0,\n          last: lastColumnsWidths[props.visibleColumns.length - 1 - columnIndex - 1] ?? 0,\n        }),\n      new Map()\n    );\n  };\n\n  private isEnabled = (props: UpdateCellStylesProps): boolean => {\n    const noStickyColumns = props.stickyColumnsFirst + props.stickyColumnsLast === 0;\n    if (noStickyColumns) {\n      return false;\n    }\n\n    const wrapperWidth = props.wrapper.getBoundingClientRect().width;\n    const tableWidth = props.table.getBoundingClientRect().width;\n    const isWrapperScrollable = tableWidth > wrapperWidth;\n    if (!isWrapperScrollable) {\n      return false;\n    }\n\n    const totalStickySpace = this.stickyWidthLeft + this.stickyWidthRight;\n    const tablePaddingLeft = parseFloat(getComputedStyle(props.table).paddingLeft) || 0;\n    const tablePaddingRight = parseFloat(getComputedStyle(props.table).paddingRight) || 0;\n    const hasEnoughScrollableSpace =\n      totalStickySpace + MINIMUM_SCROLLABLE_SPACE + tablePaddingLeft + tablePaddingRight < wrapperWidth;\n    if (!hasEnoughScrollableSpace) {\n      return false;\n    }\n\n    return true;\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport InternalIcon from '../../icon/internal';\nimport { KeyCode } from '../../internal/keycode';\nimport { TableProps } from '../interfaces';\nimport { getAriaSort, getSortingIconName, getSortingStatus, isSorted } from './utils';\nimport styles from './styles.css.js';\nimport { Resizer } from '../resizer';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\nimport { InteractiveComponent } from '../thead';\nimport { StickyColumnsModel, useStickyCellStyles } from '../use-sticky-columns';\nimport { getStickyClassNames } from '../utils';\nimport { useInternalI18n } from '../../internal/i18n/context';\n\ninterface TableHeaderCellProps<ItemType> {\n  className?: string;\n  style?: React.CSSProperties;\n  tabIndex: number;\n  column: TableProps.ColumnDefinition<ItemType>;\n  activeSortingColumn?: TableProps.SortingColumn<ItemType>;\n  sortingDescending?: boolean;\n  sortingDisabled?: boolean;\n  wrapLines?: boolean;\n  hidden?: boolean;\n  onClick(detail: TableProps.SortingState<any>): void;\n  onResizeFinish: () => void;\n  colIndex: number;\n  updateColumn: (colIndex: number, newWidth: number) => void;\n  onFocus?: () => void;\n  onBlur?: () => void;\n  resizableColumns?: boolean;\n  isEditable?: boolean;\n  columnId: string;\n  stickyState: StickyColumnsModel;\n\n  focusedComponent?: InteractiveComponent | null;\n  onFocusedComponentChange?: (element: InteractiveComponent | null) => void;\n}\n\nexport function TableHeaderCell<ItemType>({\n  className,\n  style,\n  tabIndex,\n  column,\n  activeSortingColumn,\n  sortingDescending,\n  sortingDisabled,\n  wrapLines,\n  focusedComponent,\n  onFocusedComponentChange,\n  hidden,\n  onClick,\n  colIndex,\n  updateColumn,\n  resizableColumns,\n  onResizeFinish,\n  isEditable,\n  columnId,\n  stickyState,\n}: TableHeaderCellProps<ItemType>) {\n  const i18n = useInternalI18n('table');\n  const sortable = !!column.sortingComparator || !!column.sortingField;\n  const sorted = !!activeSortingColumn && isSorted(column, activeSortingColumn);\n  const sortingStatus = getSortingStatus(sortable, sorted, !!sortingDescending, !!sortingDisabled);\n  const handleClick = () =>\n    onClick({\n      sortingColumn: column,\n      isDescending: sorted ? !sortingDescending : false,\n    });\n\n  // Elements with role=\"button\" do not have the default behavior of <button>, where pressing\n  // Enter or Space will trigger a click event. Therefore we need to add this ourselves.\n  // The native <button> element cannot be used due to a misaligned implementation in Firefox:\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=843003\n  const handleKeyPress = ({ nativeEvent: e }: React.KeyboardEvent) => {\n    if (e.keyCode === KeyCode.enter || e.keyCode === KeyCode.space) {\n      e.preventDefault();\n      handleClick();\n    }\n  };\n\n  const headerId = useUniqueId('table-header-');\n\n  const stickyStyles = useStickyCellStyles({\n    stickyColumns: stickyState,\n    columnId,\n    getClassName: props => getStickyClassNames(styles, props),\n  });\n\n  return (\n    <th\n      className={clsx(\n        className,\n        {\n          [styles['header-cell-resizable']]: !!resizableColumns,\n          [styles['header-cell-sortable']]: sortingStatus,\n          [styles['header-cell-sorted']]: sortingStatus === 'ascending' || sortingStatus === 'descending',\n          [styles['header-cell-disabled']]: sortingDisabled,\n          [styles['header-cell-ascending']]: sortingStatus === 'ascending',\n          [styles['header-cell-descending']]: sortingStatus === 'descending',\n          [styles['header-cell-hidden']]: hidden,\n        },\n        stickyStyles.className\n      )}\n      aria-sort={sortingStatus && getAriaSort(sortingStatus)}\n      style={{ ...style, ...stickyStyles.style }}\n      scope=\"col\"\n      ref={stickyStyles.ref}\n    >\n      <div\n        className={clsx(styles['header-cell-content'], {\n          [styles['header-cell-fake-focus']]: focusedComponent?.type === 'column' && focusedComponent.col === colIndex,\n        })}\n        aria-label={\n          column.ariaLabel\n            ? column.ariaLabel({\n                sorted: sorted,\n                descending: sorted && !!sortingDescending,\n                disabled: !!sortingDisabled,\n              })\n            : undefined\n        }\n        {...(sortingStatus && !sortingDisabled\n          ? {\n              onKeyPress: handleKeyPress,\n              tabIndex: tabIndex,\n              role: 'button',\n              onClick: handleClick,\n              onFocus: () => onFocusedComponentChange?.({ type: 'column', col: colIndex }),\n              onBlur: () => onFocusedComponentChange?.(null),\n            }\n          : {})}\n      >\n        <div className={clsx(styles['header-cell-text'], wrapLines && styles['header-cell-text-wrap'])} id={headerId}>\n          {column.header}\n          {isEditable ? (\n            <span\n              className={styles['edit-icon']}\n              role=\"img\"\n              aria-label={i18n('columnDefinitions.editConfig.editIconAriaLabel', column.editConfig?.editIconAriaLabel)}\n            >\n              <InternalIcon name=\"edit\" />\n            </span>\n          ) : null}\n        </div>\n        {sortingStatus && (\n          <span className={styles['sorting-icon']}>\n            <InternalIcon name={getSortingIconName(sortingStatus)} />\n          </span>\n        )}\n      </div>\n      {resizableColumns && (\n        <>\n          <Resizer\n            tabIndex={tabIndex}\n            showFocusRing={focusedComponent?.type === 'resizer' && focusedComponent.col === colIndex}\n            onDragMove={newWidth => updateColumn(colIndex, newWidth)}\n            onFinish={onResizeFinish}\n            ariaLabelledby={headerId}\n            onFocus={() => onFocusedComponentChange?.({ type: 'resizer', col: colIndex })}\n            onBlur={() => onFocusedComponentChange?.(null)}\n            minWidth={typeof column.minWidth === 'string' ? parseInt(column.minWidth) : column.minWidth}\n          />\n        </>\n      )}\n    </th>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { TableProps } from './interfaces';\nimport SelectionControl from './selection-control';\nimport { focusMarkers, SelectionProps } from './use-selection';\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from '../internal/events';\nimport { getColumnKey, getStickyClassNames } from './utils';\nimport { TableHeaderCell } from './header-cell';\nimport { useColumnWidths } from './use-column-widths';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { selectionColumnId, StickyColumnsModel, useStickyCellStyles } from './use-sticky-columns';\nimport styles from './styles.css.js';\nimport cellStyles from './header-cell/styles.css.js';\nimport headerCellStyles from './header-cell/styles.css.js';\nimport ScreenreaderOnly from '../internal/components/screenreader-only';\n\nexport type InteractiveComponent =\n  | { type: 'selection' }\n  | { type: 'column'; col: number }\n  | { type: 'resizer'; col: number };\n\nexport interface TheadProps {\n  containerWidth: number | null;\n  selectionType: TableProps.SelectionType | undefined;\n  columnDefinitions: ReadonlyArray<TableProps.ColumnDefinition<any>>;\n  sortingColumn: TableProps.SortingColumn<any> | undefined;\n  sortingDescending: boolean | undefined;\n  sortingDisabled: boolean | undefined;\n  variant: TableProps.Variant;\n  wrapLines: boolean | undefined;\n  resizableColumns: boolean | undefined;\n  getSelectAllProps: () => SelectionProps;\n  onFocusMove: ((sourceElement: HTMLElement, fromIndex: number, direction: -1 | 1) => void) | undefined;\n  onResizeFinish: (newWidths: Record<string, number>) => void;\n  onSortingChange: NonCancelableEventHandler<TableProps.SortingState<any>> | undefined;\n  sticky?: boolean;\n  hidden?: boolean;\n  stuck?: boolean;\n  singleSelectionHeaderAriaLabel?: string;\n  stripedRows?: boolean;\n  stickyState: StickyColumnsModel;\n\n  focusedComponent?: InteractiveComponent | null;\n  onFocusedComponentChange?: (element: InteractiveComponent | null) => void;\n}\n\nconst Thead = React.forwardRef(\n  (\n    {\n      containerWidth,\n      selectionType,\n      getSelectAllProps,\n      columnDefinitions,\n      sortingColumn,\n      sortingDisabled,\n      sortingDescending,\n      resizableColumns,\n      variant,\n      wrapLines,\n      onFocusMove,\n      onSortingChange,\n      onResizeFinish,\n      singleSelectionHeaderAriaLabel,\n      stripedRows,\n      sticky = false,\n      hidden = false,\n      stuck = false,\n      stickyState,\n\n      focusedComponent,\n      onFocusedComponentChange,\n    }: TheadProps,\n    outerRef: React.Ref<HTMLTableRowElement>\n  ) => {\n    const isVisualRefresh = useVisualRefresh();\n\n    const headerCellClass = clsx(\n      headerCellStyles['header-cell'],\n      headerCellStyles[`header-cell-variant-${variant}`],\n      sticky && headerCellStyles['header-cell-sticky'],\n      stuck && headerCellStyles['header-cell-stuck'],\n      stripedRows && headerCellStyles['has-striped-rows'],\n      isVisualRefresh && headerCellStyles['is-visual-refresh']\n    );\n\n    const selectionCellClass = clsx(\n      styles['selection-control'],\n      styles['selection-control-header'],\n      isVisualRefresh && styles['is-visual-refresh']\n    );\n\n    const { columnWidths, totalWidth, updateColumn } = useColumnWidths();\n\n    const stickyStyles = useStickyCellStyles({\n      stickyColumns: stickyState,\n      columnId: selectionColumnId.toString(),\n      getClassName: props => getStickyClassNames(cellStyles, props),\n    });\n    return (\n      <thead className={clsx(!hidden && styles['thead-active'])}>\n        <tr {...focusMarkers.all} ref={outerRef} aria-rowindex={1}>\n          {selectionType ? (\n            <th\n              className={clsx(\n                headerCellClass,\n                selectionCellClass,\n                hidden && headerCellStyles['header-cell-hidden'],\n                stickyStyles.className\n              )}\n              style={stickyStyles.style}\n              ref={stickyStyles.ref}\n              scope=\"col\"\n            >\n              {selectionType === 'multi' ? (\n                <SelectionControl\n                  onFocusDown={event => {\n                    onFocusMove!(event.target as HTMLElement, -1, +1);\n                  }}\n                  focusedComponent={focusedComponent}\n                  onFocusedComponentChange={onFocusedComponentChange}\n                  {...getSelectAllProps()}\n                  {...(sticky ? { tabIndex: -1 } : {})}\n                />\n              ) : (\n                <ScreenreaderOnly>{singleSelectionHeaderAriaLabel}</ScreenreaderOnly>\n              )}\n            </th>\n          ) : null}\n\n          {columnDefinitions.map((column, colIndex) => {\n            let widthOverride;\n            if (resizableColumns) {\n              if (columnWidths) {\n                // use stateful value if available\n                widthOverride = columnWidths[getColumnKey(column, colIndex)];\n              }\n              if (colIndex === columnDefinitions.length - 1 && containerWidth && containerWidth > totalWidth) {\n                // let the last column grow and fill the container width\n                widthOverride = 'auto';\n              }\n            }\n            return (\n              <TableHeaderCell\n                key={getColumnKey(column, colIndex)}\n                className={headerCellClass}\n                style={{\n                  width: widthOverride || column.width,\n                  minWidth: sticky ? undefined : column.minWidth,\n                  maxWidth: resizableColumns || sticky ? undefined : column.maxWidth,\n                }}\n                tabIndex={sticky ? -1 : 0}\n                focusedComponent={focusedComponent}\n                onFocusedComponentChange={onFocusedComponentChange}\n                column={column}\n                activeSortingColumn={sortingColumn}\n                sortingDescending={sortingDescending}\n                sortingDisabled={sortingDisabled}\n                wrapLines={wrapLines}\n                hidden={hidden}\n                colIndex={colIndex}\n                columnId={column.id ?? colIndex.toString()}\n                updateColumn={updateColumn}\n                onResizeFinish={() => onResizeFinish(columnWidths)}\n                resizableColumns={resizableColumns}\n                onClick={detail => fireNonCancelableEvent(onSortingChange, detail)}\n                isEditable={!!column.editConfig}\n                stickyState={stickyState}\n              />\n            );\n          })}\n        </tr>\n      </thead>\n    );\n  }\n);\n\nexport default Thead;\n","\n    import './styles.scoped.css';\n    export default {\n  \"body-cell\": \"awsui_body-cell_c6tup_36iso_93\",\n  \"body-cell-wrap\": \"awsui_body-cell-wrap_c6tup_36iso_103\",\n  \"is-visual-refresh\": \"awsui_is-visual-refresh_c6tup_36iso_115\",\n  \"has-striped-rows\": \"awsui_has-striped-rows_c6tup_36iso_127\",\n  \"body-cell-edit-active\": \"awsui_body-cell-edit-active_c6tup_36iso_130\",\n  \"body-cell-editable\": \"awsui_body-cell-editable_c6tup_36iso_130\",\n  \"has-striped-rows-sticky-cell-pad-left\": \"awsui_has-striped-rows-sticky-cell-pad-left_c6tup_36iso_136\",\n  \"has-selection\": \"awsui_has-selection_c6tup_36iso_139\",\n  \"body-cell-first-row\": \"awsui_body-cell-first-row_c6tup_36iso_145\",\n  \"body-cell-last-row\": \"awsui_body-cell-last-row_c6tup_36iso_148\",\n  \"body-cell-selected\": \"awsui_body-cell-selected_c6tup_36iso_148\",\n  \"has-footer\": \"awsui_has-footer_c6tup_36iso_148\",\n  \"body-cell-shaded\": \"awsui_body-cell-shaded_c6tup_36iso_158\",\n  \"sticky-cell\": \"awsui_sticky-cell_c6tup_36iso_175\",\n  \"sticky-cell-pad-left\": \"awsui_sticky-cell-pad-left_c6tup_36iso_183\",\n  \"sticky-cell-last-right\": \"awsui_sticky-cell-last-right_c6tup_36iso_200\",\n  \"sticky-cell-last-left\": \"awsui_sticky-cell-last-left_c6tup_36iso_204\",\n  \"body-cell-next-selected\": \"awsui_body-cell-next-selected_c6tup_36iso_227\",\n  \"body-cell-prev-selected\": \"awsui_body-cell-prev-selected_c6tup_36iso_231\",\n  \"body-cell-success\": \"awsui_body-cell-success_c6tup_36iso_255\",\n  \"body-cell-editor\": \"awsui_body-cell-editor_c6tup_36iso_255\",\n  \"body-cell-success-form\": \"awsui_body-cell-success-form_c6tup_36iso_277\",\n  \"body-cell-editor-form\": \"awsui_body-cell-editor-form_c6tup_36iso_277\",\n  \"body-cell-success-row\": \"awsui_body-cell-success-row_c6tup_36iso_286\",\n  \"body-cell-editor-row\": \"awsui_body-cell-editor-row_c6tup_36iso_286\",\n  \"body-cell-success-controls\": \"awsui_body-cell-success-controls_c6tup_36iso_296\",\n  \"body-cell-editor-controls\": \"awsui_body-cell-editor-controls_c6tup_36iso_296\",\n  \"body-cell-has-success\": \"awsui_body-cell-has-success_c6tup_36iso_315\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { DependencyList, EffectCallback, useEffect, useRef } from 'react';\n\n// useEffect, which skips the initial render\nexport function useEffectOnUpdate(callback: EffectCallback, deps: DependencyList) {\n  const isFirstRender = useRef<boolean>(true);\n\n  useEffect(() => {\n    if (isFirstRender.current) {\n      isFirstRender.current = false;\n    } else {\n      return callback();\n    }\n    // This is a useEffect extension, will be validated at the call site\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, deps);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport styles from './styles.css.js';\nimport { StickyColumnsModel, useStickyCellStyles } from '../use-sticky-columns';\nimport { getStickyClassNames } from '../utils.js';\n\nexport interface TableTdElementProps {\n  className?: string;\n  style?: React.CSSProperties;\n  wrapLines: boolean | undefined;\n  isRowHeader?: boolean;\n  isFirstRow: boolean;\n  isLastRow: boolean;\n  isSelected: boolean;\n  isNextSelected: boolean;\n  isPrevSelected: boolean;\n  nativeAttributes?: Omit<\n    React.TdHTMLAttributes<HTMLTableCellElement> | React.ThHTMLAttributes<HTMLTableCellElement>,\n    'style' | 'className' | 'onClick'\n  >;\n  onClick?: () => void;\n  onMouseEnter?: () => void;\n  onMouseLeave?: () => void;\n  children?: React.ReactNode;\n  isEvenRow?: boolean;\n  stripedRows?: boolean;\n  hasSelection?: boolean;\n  hasFooter?: boolean;\n  columnId: string;\n  stickyState: StickyColumnsModel;\n  isVisualRefresh?: boolean;\n}\n\nexport const TableTdElement = React.forwardRef<HTMLTableCellElement, TableTdElementProps>(\n  (\n    {\n      className,\n      style,\n      children,\n      wrapLines,\n      isRowHeader,\n      isFirstRow,\n      isLastRow,\n      isSelected,\n      isNextSelected,\n      isPrevSelected,\n      nativeAttributes,\n      onClick,\n      onMouseEnter,\n      onMouseLeave,\n      isEvenRow,\n      stripedRows,\n      isVisualRefresh,\n      hasSelection,\n      hasFooter,\n      columnId,\n      stickyState,\n    },\n    ref\n  ) => {\n    let Element: 'th' | 'td' = 'td';\n    if (isRowHeader) {\n      Element = 'th';\n      nativeAttributes = {\n        ...nativeAttributes,\n        scope: 'row',\n      };\n    }\n\n    const stickyStyles = useStickyCellStyles({\n      stickyColumns: stickyState,\n      columnId,\n      getClassName: props => getStickyClassNames(styles, props),\n    });\n    return (\n      <Element\n        style={{ ...style, ...stickyStyles.style }}\n        className={clsx(\n          className,\n          styles['body-cell'],\n          wrapLines && styles['body-cell-wrap'],\n          isFirstRow && styles['body-cell-first-row'],\n          isLastRow && styles['body-cell-last-row'],\n          isSelected && styles['body-cell-selected'],\n          isNextSelected && styles['body-cell-next-selected'],\n          isPrevSelected && styles['body-cell-prev-selected'],\n          !isEvenRow && stripedRows && styles['body-cell-shaded'],\n          stripedRows && styles['has-striped-rows'],\n          isVisualRefresh && styles['is-visual-refresh'],\n          hasSelection && styles['has-selection'],\n          hasFooter && styles['has-footer'],\n          stickyStyles.className\n        )}\n        onClick={onClick}\n        onMouseEnter={onMouseEnter}\n        onMouseLeave={onMouseLeave}\n        ref={node => {\n          if (node) {\n            stickyStyles.ref(node);\n            if (ref) {\n              (ref as React.MutableRefObject<HTMLTableCellElement>).current = node;\n            }\n          }\n        }}\n        {...nativeAttributes}\n      >\n        {children}\n      </Element>\n    );\n  }\n);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef, useState } from 'react';\nimport Button from '../../button/internal';\nimport FormField from '../../form-field/internal';\nimport SpaceBetween from '../../space-between/internal';\nimport { useClickAway } from './click-away';\nimport { TableProps } from '../interfaces';\nimport styles from './styles.css.js';\nimport { Optional } from '../../internal/types';\nimport FocusLock, { FocusLockRef } from '../../internal/components/focus-lock';\nimport LiveRegion from '../../internal/components/live-region';\nimport { useInternalI18n } from '../../internal/i18n/context';\n\n// A function that does nothing\nconst noop = () => undefined;\n\ninterface InlineEditorProps<ItemType> {\n  ariaLabels: TableProps['ariaLabels'];\n  column: TableProps.ColumnDefinition<ItemType>;\n  item: ItemType;\n  onEditEnd: (cancelled: boolean) => void;\n  submitEdit: TableProps.SubmitEditFunction<ItemType>;\n  __onRender?: () => void;\n}\n\nexport function InlineEditor<ItemType>({\n  ariaLabels,\n  item,\n  column,\n  onEditEnd,\n  submitEdit,\n  __onRender,\n}: InlineEditorProps<ItemType>) {\n  const [currentEditLoading, setCurrentEditLoading] = useState(false);\n  const [currentEditValue, setCurrentEditValue] = useState<Optional<any>>();\n  const i18n = useInternalI18n('table');\n\n  const focusLockRef = useRef<FocusLockRef>(null);\n\n  const cellContext = {\n    currentValue: currentEditValue,\n    setValue: setCurrentEditValue,\n  };\n\n  function finishEdit(cancel = false) {\n    if (!cancel) {\n      setCurrentEditValue(undefined);\n    }\n    onEditEnd(cancel);\n  }\n\n  async function onSubmitClick(evt: React.FormEvent) {\n    evt.preventDefault();\n    if (currentEditValue === undefined) {\n      finishEdit();\n      return;\n    }\n\n    setCurrentEditLoading(true);\n    try {\n      await submitEdit(item, column, currentEditValue);\n      setCurrentEditLoading(false);\n      finishEdit();\n    } catch (e) {\n      setCurrentEditLoading(false);\n      focusLockRef.current?.focusFirst();\n    }\n  }\n\n  function onCancel() {\n    if (currentEditLoading) {\n      return;\n    }\n    finishEdit(true);\n  }\n\n  function handleEscape(event: React.KeyboardEvent): void {\n    if (event.key === 'Escape') {\n      onCancel();\n    }\n  }\n\n  const clickAwayRef = useClickAway(onCancel);\n\n  useEffect(() => {\n    if (__onRender) {\n      const timer = setTimeout(__onRender, 1);\n      return () => clearTimeout(timer);\n    }\n  }, [__onRender]);\n\n  // asserting non-undefined editConfig here because this component is unreachable otherwise\n  const {\n    ariaLabel = undefined,\n    validation = noop,\n    errorIconAriaLabel,\n    constraintText,\n    editingCell,\n  } = column.editConfig!;\n\n  return (\n    <FocusLock restoreFocus={true} ref={focusLockRef}>\n      <div\n        role=\"dialog\"\n        ref={clickAwayRef}\n        aria-label={ariaLabels?.activateEditLabel?.(column, item)}\n        onKeyDown={handleEscape}\n      >\n        <form onSubmit={onSubmitClick} className={styles['body-cell-editor-form']}>\n          <FormField\n            stretch={true}\n            label={ariaLabel}\n            constraintText={constraintText}\n            __hideLabel={true}\n            __disableGutters={true}\n            i18nStrings={{ errorIconAriaLabel }}\n            errorText={validation(item, currentEditValue)}\n          >\n            <div className={styles['body-cell-editor-row']}>\n              {editingCell(item, cellContext)}\n              <span className={styles['body-cell-editor-controls']}>\n                <SpaceBetween direction=\"horizontal\" size=\"xxs\">\n                  {!currentEditLoading ? (\n                    <Button\n                      ariaLabel={ariaLabels?.cancelEditLabel?.(column)}\n                      formAction=\"none\"\n                      iconName=\"close\"\n                      variant=\"inline-icon\"\n                      onClick={onCancel}\n                    />\n                  ) : null}\n                  <Button\n                    ariaLabel={ariaLabels?.submitEditLabel?.(column)}\n                    formAction=\"submit\"\n                    iconName=\"check\"\n                    variant=\"inline-icon\"\n                    loading={currentEditLoading}\n                  />\n                </SpaceBetween>\n                <LiveRegion>\n                  {currentEditLoading\n                    ? i18n('ariaLabels.submittingEditText', ariaLabels?.submittingEditText?.(column))\n                    : ''}\n                </LiveRegion>\n              </span>\n            </div>\n          </FormField>\n        </form>\n      </div>\n    </FocusLock>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef } from 'react';\nimport { containsOrEqual } from '../../internal/utils/dom';\nimport { useStableEventHandler } from '../../internal/hooks/use-stable-event-handler';\n\nexport function useClickAway(onClick: () => void) {\n  const awayRef = useRef<any>(null);\n  const onClickStable = useStableEventHandler(onClick);\n  useEffect(() => {\n    function handleClick(event: Event) {\n      if (!containsOrEqual(awayRef.current, event.target as Node)) {\n        onClickStable();\n      }\n    }\n    // contains returns wrong result if the next render would remove the element\n    // but capture phase happens before the render, so returns correct result\n    // Ref: https://github.com/facebook/react/issues/20325\n    document.addEventListener('click', handleClick, { capture: true });\n    return () => document.removeEventListener('click', handleClick, { capture: true });\n  }, [onClickStable]);\n  return awayRef;\n}\n\ninterface ClickAwayActive {\n  onClick: () => void;\n  children: React.ReactNode;\n}\nexport function ClickAway({ onClick, children }: ClickAwayActive) {\n  const onClickStable = useStableEventHandler(onClick);\n  const ref = useRef<HTMLSpanElement>(null);\n  useEffect(() => {\n    function handleClick(event: Event) {\n      if (!containsOrEqual(ref.current, event.target as Node)) {\n        onClickStable();\n      }\n    }\n    document.addEventListener('click', handleClick, true);\n    return () => document.removeEventListener('click', handleClick, true);\n  }, [onClickStable]);\n  return <span ref={ref}>{children}</span>;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport React, { useRef, useState } from 'react';\nimport { useEffectOnUpdate } from '../../internal/hooks/use-effect-on-update';\nimport Icon from '../../icon/internal';\nimport { TableProps } from '../interfaces';\nimport { TableTdElement, TableTdElementProps } from './td-element';\nimport { InlineEditor } from './inline-editor';\nimport LiveRegion from '../../internal/components/live-region/index.js';\nimport { useInternalI18n } from '../../internal/i18n/context';\n\nconst submitHandlerFallback = () => {\n  throw new Error('The function `handleSubmit` is required for editable columns');\n};\n\ninterface TableBodyCellProps<ItemType> extends TableTdElementProps {\n  column: TableProps.ColumnDefinition<ItemType>;\n  item: ItemType;\n  isEditing: boolean;\n  successfulEdit?: boolean;\n  onEditStart: () => void;\n  onEditEnd: (cancelled: boolean) => void;\n  submitEdit?: TableProps.SubmitEditFunction<ItemType>;\n  ariaLabels: TableProps['ariaLabels'];\n}\n\nfunction TableCellEditable<ItemType>({\n  className,\n  item,\n  column,\n  isEditing,\n  onEditStart,\n  onEditEnd,\n  submitEdit,\n  ariaLabels,\n  isVisualRefresh,\n  successfulEdit = false,\n  ...rest\n}: TableBodyCellProps<ItemType>) {\n  const i18n = useInternalI18n('table');\n  const editActivateRef = useRef<HTMLButtonElement>(null);\n  const tdNativeAttributes = {\n    'data-inline-editing-active': isEditing.toString(),\n  };\n\n  useEffectOnUpdate(() => {\n    if (!isEditing && editActivateRef.current) {\n      editActivateRef.current.focus();\n    }\n  }, [isEditing]);\n\n  // To improve the initial page render performance we only show the edit icon when necessary.\n  const [hasHover, setHasHover] = useState(false);\n  const [hasFocus, setHasFocus] = useState(false);\n  const showIcon = hasHover || hasFocus;\n\n  return (\n    <TableTdElement\n      {...rest}\n      nativeAttributes={tdNativeAttributes as TableTdElementProps['nativeAttributes']}\n      className={clsx(\n        className,\n        styles['body-cell-editable'],\n        isEditing && styles['body-cell-edit-active'],\n        successfulEdit && styles['body-cell-has-success'],\n        isVisualRefresh && styles['is-visual-refresh']\n      )}\n      onClick={!isEditing ? onEditStart : undefined}\n      onMouseEnter={() => setHasHover(true)}\n      onMouseLeave={() => setHasHover(false)}\n    >\n      {isEditing ? (\n        <InlineEditor\n          ariaLabels={ariaLabels}\n          column={column}\n          item={item}\n          onEditEnd={onEditEnd}\n          submitEdit={submitEdit ?? submitHandlerFallback}\n        />\n      ) : (\n        <>\n          {column.cell(item)}\n          {successfulEdit && (\n            <>\n              <span\n                className={styles['body-cell-success']}\n                aria-label={ariaLabels?.successfulEditLabel?.(column)}\n                role=\"img\"\n              >\n                <Icon name=\"status-positive\" variant=\"success\" />\n              </span>\n              <LiveRegion>\n                {i18n('ariaLabels.successfulEditLabel', ariaLabels?.successfulEditLabel?.(column))}\n              </LiveRegion>\n            </>\n          )}\n          <button\n            className={styles['body-cell-editor']}\n            aria-label={ariaLabels?.activateEditLabel?.(column, item)}\n            ref={editActivateRef}\n            onFocus={() => setHasFocus(true)}\n            onBlur={() => setHasFocus(false)}\n          >\n            {showIcon && <Icon name=\"edit\" />}\n          </button>\n        </>\n      )}\n    </TableTdElement>\n  );\n}\n\nexport function TableBodyCell<ItemType>({\n  isEditable,\n  ...rest\n}: TableBodyCellProps<ItemType> & { isEditable: boolean }) {\n  if (isEditable || rest.isEditing) {\n    return <TableCellEditable {...rest} />;\n  }\n  const { column, item } = rest;\n  return <TableTdElement {...rest}>{column.cell(item)}</TableTdElement>;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getOverflowParents } from '../internal/utils/scrollable-containers';\n\n/**\n * @param containerRef ref to surrounding container with sticky element\n * @param stickyRef ref to sticky element scrolled inside of containerRef\n * @param containerOffset offset between header and container\n *                        originating borders or paddings\n */\nexport default function stickyScrolling(\n  containerRef: React.MutableRefObject<HTMLElement | null>,\n  stickyRef: React.MutableRefObject<HTMLElement | null>\n) {\n  const scrollToTop = () => {\n    if (!containerRef.current || !stickyRef.current) {\n      return;\n    }\n    const scrollingOffset = calculateScrollingOffset(containerRef.current, stickyRef.current);\n    if (scrollingOffset > 0) {\n      scrollUpBy(scrollingOffset, containerRef.current);\n    }\n  };\n  const scrollToItem = (item: HTMLElement | null) => {\n    if (!item || !containerRef.current || !stickyRef.current) {\n      return;\n    }\n    const stickyBottom = stickyRef.current.getBoundingClientRect().bottom;\n    const scrollingOffset = stickyBottom - item.getBoundingClientRect().top;\n    if (scrollingOffset > 0) {\n      scrollUpBy(scrollingOffset, containerRef.current);\n    }\n  };\n  return {\n    scrollToTop,\n    scrollToItem,\n  };\n}\n\n/**\n * Calculates the scrolling offset between container and\n * sticky element with container offset caused by border\n * or padding\n * @param container\n * @param sticky element inside of container\n * @param containerOffset caused by borders or paddings\n */\nexport function calculateScrollingOffset(container: HTMLElement, sticky: HTMLElement) {\n  const stickyRect = sticky.getBoundingClientRect();\n  const containerRect = container.getBoundingClientRect();\n  return stickyRect.top - containerRect.top;\n}\n\n/**\n * Scrolls suitable parent of container up by amount of pixels\n * @param amount pixels to be scrolled up\n * @param container used to determine next parent element for scrolling\n */\nexport function scrollUpBy(amount: number, container: HTMLElement) {\n  const parent = getOverflowParents(container);\n  if (parent.length) {\n    // Take next overflow parent in stack\n    parent[0].scrollTop -= amount;\n  } else {\n    window.scrollTo({ top: window.pageYOffset - amount });\n  }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useLayoutEffect, RefObject, useCallback } from 'react';\nimport { useResizeObserver } from '../internal/hooks/container-queries/use-resize-observer';\nimport stickyScrolling, { calculateScrollingOffset, scrollUpBy } from './sticky-scrolling';\nimport { useMobile } from '../internal/hooks/use-mobile';\n\nfunction syncSizes(from: HTMLElement, to: HTMLElement) {\n  const fromCells = Array.prototype.slice.apply(from.children);\n  const toCells = Array.prototype.slice.apply(to.children);\n  for (let i = 0; i < fromCells.length; i++) {\n    let width = fromCells[i].style.width;\n    // use auto if it is set by resizable columns or real size otherwise\n    if (width !== 'auto') {\n      width = `${fromCells[i].offsetWidth}px`;\n    }\n    toCells[i].style.width = width;\n  }\n}\n\nexport const useStickyHeader = (\n  tableRef: RefObject<HTMLElement>,\n  theadRef: RefObject<HTMLElement>,\n  secondaryTheadRef: RefObject<HTMLElement>,\n  secondaryTableRef: RefObject<HTMLElement>,\n  tableWrapperRef: RefObject<HTMLElement>\n) => {\n  const isMobile = useMobile();\n  // Sync the sizes of the column header copies in the sticky header with the originals\n  const syncColumnHeaderWidths = useCallback(() => {\n    if (\n      tableRef.current &&\n      theadRef.current &&\n      secondaryTheadRef.current &&\n      secondaryTableRef.current &&\n      tableWrapperRef.current\n    ) {\n      syncSizes(theadRef.current, secondaryTheadRef.current);\n\n      // Using the tableRef offsetWidth instead of the theadRef because in VR\n      // the tableRef adds extra padding to the table and by default the theadRef will have a width\n      // without the padding and will make the sticky header width incorrect.\n      secondaryTableRef.current.style.width = `${tableRef.current.offsetWidth}px`;\n\n      tableWrapperRef.current.style.marginTop = `-${theadRef.current.offsetHeight}px`;\n    }\n  }, [theadRef, secondaryTheadRef, secondaryTableRef, tableWrapperRef, tableRef]);\n  useLayoutEffect(() => {\n    syncColumnHeaderWidths();\n  });\n  useResizeObserver(theadRef, syncColumnHeaderWidths);\n  const scrollToTop = () => {\n    if (!isMobile && theadRef.current && secondaryTheadRef.current && tableWrapperRef.current) {\n      const scrollDist = calculateScrollingOffset(theadRef.current, secondaryTheadRef.current);\n      if (scrollDist > 0) {\n        scrollUpBy(scrollDist, tableWrapperRef.current);\n      }\n    }\n  };\n  const { scrollToItem } = stickyScrolling(tableWrapperRef, secondaryTheadRef);\n  const scrollToRow = (itemNode: HTMLElement | null) => {\n    if (!isMobile) {\n      scrollToItem(itemNode);\n    }\n  };\n  return { scrollToRow, scrollToTop };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { forwardRef, useContext, useImperativeHandle, useRef, useState } from 'react';\nimport { StickyHeaderContext } from '../container/use-sticky-header';\nimport { TableProps } from './interfaces';\nimport Thead, { InteractiveComponent, TheadProps } from './thead';\nimport { useStickyHeader } from './use-sticky-header';\nimport styles from './styles.css.js';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\n\nexport interface StickyHeaderRef {\n  scrollToTop(): void;\n  scrollToRow(node: null | HTMLElement): void;\n  setFocus(element: InteractiveComponent | null): void;\n}\n\ninterface StickyHeaderProps {\n  variant: TableProps.Variant;\n  theadProps: TheadProps;\n  wrapperRef: React.RefObject<HTMLDivElement>;\n  theadRef: React.RefObject<HTMLTableRowElement>;\n  secondaryWrapperRef: React.RefObject<HTMLDivElement>;\n  tableRef: React.RefObject<HTMLTableElement>;\n  onScroll?: React.UIEventHandler<HTMLDivElement>;\n  contentDensity?: 'comfortable' | 'compact';\n  tableHasHeader?: boolean;\n}\n\nexport default forwardRef(StickyHeader);\n\nfunction StickyHeader(\n  {\n    variant,\n    theadProps,\n    wrapperRef,\n    theadRef,\n    secondaryWrapperRef,\n    onScroll,\n    tableRef,\n    tableHasHeader,\n    contentDensity,\n  }: StickyHeaderProps,\n  ref: React.Ref<StickyHeaderRef>\n) {\n  const secondaryTheadRef = useRef<HTMLTableRowElement>(null);\n  const secondaryTableRef = useRef<HTMLTableElement>(null);\n  const { isStuck } = useContext(StickyHeaderContext);\n\n  const [focusedComponent, setFocusedComponent] = useState<InteractiveComponent | null>(null);\n  const { scrollToRow, scrollToTop } = useStickyHeader(\n    tableRef,\n    theadRef,\n    secondaryTheadRef,\n    secondaryTableRef,\n    wrapperRef\n  );\n\n  useImperativeHandle(ref, () => ({\n    scrollToTop,\n    scrollToRow,\n    setFocus: setFocusedComponent,\n  }));\n\n  return (\n    <div\n      className={clsx(styles['header-secondary'], styles[`variant-${variant}`], {\n        [styles.stuck]: isStuck,\n        [styles['table-has-header']]: tableHasHeader,\n      })}\n      aria-hidden={true}\n      // Prevents receiving focus in Firefox. Focus on the overflowing table is sufficient\n      // to scroll the table horizontally\n      tabIndex={-1}\n      ref={secondaryWrapperRef}\n      onScroll={onScroll}\n    >\n      <table\n        className={clsx(\n          styles.table,\n          styles['table-layout-fixed'],\n          contentDensity === 'compact' && getVisualContextClassname('compact-table')\n        )}\n        role=\"table\"\n        ref={secondaryTableRef}\n      >\n        <Thead\n          ref={secondaryTheadRef}\n          sticky={true}\n          stuck={isStuck}\n          focusedComponent={focusedComponent}\n          {...theadProps}\n        />\n      </table>\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ResizeObserver } from '@juggle/resize-observer';\nimport { RefObject, useEffect, useState } from 'react';\nimport styles from './styles.css.js';\n\nimport { getOverflowParents } from '../internal/utils/scrollable-containers';\nimport { browserScrollbarSize } from '../internal/utils/browser-scrollbar-size';\nimport { supportsStickyPosition, getContainingBlock } from '../internal/utils/dom';\n\nexport const updatePosition = (\n  tableEl: HTMLElement | null,\n  wrapperEl: HTMLElement | null,\n  scrollbarEl: HTMLElement | null,\n  scrollbarContentEl: HTMLElement | null,\n  hasContainingBlock: boolean,\n  consideredFooterHeight: number\n) => {\n  if (!tableEl || !scrollbarEl || !wrapperEl) {\n    return;\n  }\n\n  const { width: tableWidth } = tableEl.getBoundingClientRect();\n  const { width: wrapperWidth } = wrapperEl.getBoundingClientRect();\n\n  // using 15 px as a height of transparent scrollbar on mac\n  const scrollbarHeight = browserScrollbarSize().height;\n  const areaIsScrollable = tableWidth > wrapperWidth;\n\n  if (!areaIsScrollable) {\n    scrollbarEl.classList.remove(styles['sticky-scrollbar-visible']);\n  } else {\n    // when scrollbar is not displayed scrollLeft property cannot be set by useScrollSync\n    // that's why syncing it separately\n    if (!scrollbarEl.classList.contains(styles['sticky-scrollbar-visible'])) {\n      requestAnimationFrame(() => {\n        scrollbarEl.scrollLeft = wrapperEl.scrollLeft;\n      });\n    }\n\n    scrollbarEl.classList.add(styles['sticky-scrollbar-visible']);\n    if (!scrollbarHeight) {\n      /* istanbul ignore next: covered by screenshot tests */\n      scrollbarEl.classList.add(styles['sticky-scrollbar-native-invisible']);\n    }\n  }\n\n  if (scrollbarHeight && scrollbarEl && scrollbarContentEl) {\n    scrollbarEl.style.height = `${scrollbarHeight}px`;\n    scrollbarContentEl.style.height = `${scrollbarHeight}px`;\n  }\n\n  if (tableEl && wrapperEl && scrollbarContentEl && scrollbarEl) {\n    const wrapperElRect = wrapperEl.getBoundingClientRect();\n    const tableElRect = tableEl.getBoundingClientRect();\n    scrollbarEl.style.width = `${wrapperElRect.width}px`;\n    scrollbarContentEl.style.width = `${tableElRect.width}px`;\n\n    // when using sticky scrollbars in containers\n    // we agreed to ignore dynamic bottom calculations for footer overlap\n    scrollbarEl.style.bottom = hasContainingBlock ? '0px' : `${consideredFooterHeight}px`;\n  }\n};\n\nexport function useStickyScrollbar(\n  scrollbarRef: RefObject<HTMLDivElement>,\n  scrollbarContentRef: RefObject<HTMLDivElement>,\n  tableRef: RefObject<HTMLTableElement>,\n  wrapperRef: RefObject<HTMLDivElement>,\n  footerHeight: number\n) {\n  // We don't take into account containing-block calculations because that would\n  // unnecessarily overcomplicate the position logic. For now, we assume that a\n  // containing block, if present, is below the app layout and above the overflow\n  // parent, which is a pretty safe assumption.\n  const [hasContainingBlock, setHasContainingBlock] = useState(false);\n  // We don't take into account footer height when the overflow parent is child of document body.\n  // Because in this case, we think the footer is outside the overflow parent.\n  const [hasOverflowParent, setHasOverflowParent] = useState(false);\n  const consideredFooterHeight = hasContainingBlock || hasOverflowParent ? 0 : footerHeight;\n\n  const wrapperEl = wrapperRef.current;\n  useEffect(() => {\n    if (wrapperEl && supportsStickyPosition()) {\n      setHasContainingBlock(!!getContainingBlock(wrapperEl));\n      setHasOverflowParent(!!getOverflowParents(wrapperEl)[0]);\n    }\n  }, [wrapperEl]);\n\n  // Update scrollbar position wrapper or table size change.\n  useEffect(() => {\n    if (supportsStickyPosition() && wrapperRef.current && tableRef.current) {\n      const observer = new ResizeObserver(() => {\n        if (scrollbarContentRef.current) {\n          updatePosition(\n            tableRef.current,\n            wrapperRef.current,\n            scrollbarRef.current,\n            scrollbarContentRef.current,\n            hasContainingBlock,\n            consideredFooterHeight\n          );\n        }\n      });\n      // Scrollbar width must be in sync with wrapper width.\n      observer.observe(wrapperRef.current);\n      // Scrollbar content width must be in sync with table width.\n      observer.observe(tableRef.current);\n      return () => {\n        observer.disconnect();\n      };\n    }\n  }, [scrollbarContentRef, scrollbarRef, tableRef, wrapperRef, consideredFooterHeight, hasContainingBlock]);\n\n  // Update scrollbar position when window resizes (vertically).\n  useEffect(() => {\n    if (supportsStickyPosition()) {\n      const resizeHandler = () => {\n        updatePosition(\n          tableRef.current,\n          wrapperRef.current,\n          scrollbarRef.current,\n          scrollbarContentRef.current,\n          hasContainingBlock,\n          consideredFooterHeight\n        );\n      };\n      resizeHandler();\n      window.addEventListener('resize', resizeHandler);\n      return () => {\n        window.removeEventListener('resize', resizeHandler);\n      };\n    }\n  }, [tableRef, wrapperRef, scrollbarRef, scrollbarContentRef, hasContainingBlock, consideredFooterHeight]);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { forwardRef } from 'react';\nimport { useAppLayoutContext } from '../internal/context/app-layout-context';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useStickyScrollbar } from './use-sticky-scrollbar';\nimport styles from './styles.css.js';\n\ninterface StickyScrollbarProps {\n  wrapperRef: React.RefObject<HTMLDivElement>;\n  tableRef: React.RefObject<HTMLTableElement>;\n  onScroll?: React.UIEventHandler<HTMLDivElement>;\n}\n\nexport default forwardRef(StickyScrollbar);\n\nfunction StickyScrollbar({ wrapperRef, tableRef, onScroll }: StickyScrollbarProps, ref: React.Ref<HTMLDivElement>) {\n  const scrollbarRef = React.useRef<HTMLDivElement>(null);\n  const scrollbarContentRef = React.useRef<HTMLDivElement>(null);\n  const mergedRef = useMergeRefs(ref, scrollbarRef);\n\n  /**\n   * Use the appropriate AppLayout context (Classic or Visual Refresh) to determine\n   * the offsetBottom value to be used in the useStickyScrollbar hook.\n   */\n  const { stickyOffsetBottom } = useAppLayoutContext();\n\n  useStickyScrollbar(scrollbarRef, scrollbarContentRef, tableRef, wrapperRef, stickyOffsetBottom);\n\n  return (\n    <div ref={mergedRef} className={styles['sticky-scrollbar']} onScroll={onScroll}>\n      <div ref={scrollbarContentRef} className={styles['sticky-scrollbar-content']} />\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useRef } from 'react';\nimport { createSingletonHandler } from './use-singleton-handler';\n\nconst useEventListenersSingleton = createSingletonHandler<Node | null>(setTarget => {\n  function handleMouseDown(event: MouseEvent) {\n    setTarget(event.target as Node);\n  }\n  function handleKeyDown() {\n    setTarget(null);\n  }\n  window.addEventListener('mousedown', handleMouseDown);\n  window.addEventListener('keydown', handleKeyDown);\n  return () => {\n    window.removeEventListener('mousedown', handleMouseDown);\n    window.removeEventListener('keydown', handleKeyDown);\n  };\n});\n\n/**\n * Captures last mouse down target and clears it on keydown.\n * @returns a callback to get the last detected mouse down target.\n */\nexport default function useMouseDownTarget() {\n  const mouseDownTargetRef = useRef<null | Node>(null);\n  useEventListenersSingleton(target => {\n    mouseDownTargetRef.current = target;\n  });\n  return () => mouseDownTargetRef.current;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { RefObject, useCallback, useEffect, useMemo } from 'react';\nimport { scrollElementIntoView } from '../internal/utils/scrollable-containers';\nimport { TableProps } from './interfaces';\n\nfunction iterateTableCells<T extends HTMLElement>(\n  table: T,\n  func: (cell: HTMLTableCellElement, rowIndex: number, columnIndex: number) => void\n) {\n  table.querySelectorAll('tr').forEach((row: HTMLTableRowElement, rowIndex: number) => {\n    row.querySelectorAll('td').forEach((cell, cellIndex) => {\n      func(cell, rowIndex, cellIndex);\n    });\n  });\n}\n\n/**\n * This hook is used to navigate between table cells using the keyboard arrow keys.\n * All the functionality is implemented in the hook, so the table component does not\n * need to implement any keyboard event handlers.\n * @param enable - Toggle functionality of the hook\n * @param tableRoot - A ref to a table container. Ideally the root element of the table (<table>); tbody is also acceptable.\n * @param columnDefinitions - The column definitions for the table.\n * @param numRows - The number of rows in the table.\n */\nfunction useTableFocusNavigation<T extends { editConfig?: TableProps.EditConfig<any> }>(\n  selectionType: TableProps['selectionType'],\n  tableRoot: RefObject<HTMLTableElement>,\n  columnDefinitions: Readonly<T[]>,\n  numRows: number\n) {\n  const focusableColumns = useMemo(() => {\n    const cols = columnDefinitions.map(column => !!column.editConfig);\n    if (selectionType) {\n      cols.unshift(false);\n    }\n    return cols;\n  }, [columnDefinitions, selectionType]);\n\n  const maxColumnIndex = focusableColumns.length - 1;\n  const minColumnIndex = selectionType ? 1 : 0;\n\n  const focusCell = useCallback(\n    (rowIndex: number, columnIndex: number) => {\n      if (tableRoot?.current) {\n        iterateTableCells(tableRoot.current, (cell, rIndex, cIndex) => {\n          if (rIndex === rowIndex && cIndex === columnIndex) {\n            const editButton = cell.querySelector('button:last-child') as HTMLButtonElement | null;\n\n            if (editButton) {\n              editButton.focus?.();\n              scrollElementIntoView(editButton);\n            }\n          }\n        });\n      }\n    },\n    [tableRoot]\n  );\n\n  const shiftFocus = useCallback(\n    (vertical: -1 | 0 | 1, horizontal: -1 | 0 | 1) => {\n      const focusedCell = tableRoot.current?.querySelector<HTMLTableCellElement>('td:focus-within');\n      if (!focusedCell) {\n        return;\n      }\n\n      const columnIndex = focusedCell.cellIndex;\n      const rowIndex = (focusedCell.parentElement as HTMLTableRowElement).rowIndex;\n\n      let newRowIndex = rowIndex;\n      let newColumnIndex = columnIndex;\n\n      if (vertical !== 0) {\n        newRowIndex = Math.min(numRows, Math.max(rowIndex + vertical, 0));\n      }\n\n      if (horizontal !== 0) {\n        while (newColumnIndex <= maxColumnIndex && newColumnIndex >= minColumnIndex) {\n          newColumnIndex += horizontal;\n          if (focusableColumns[newColumnIndex]) {\n            break;\n          }\n        }\n      }\n\n      if ((rowIndex !== newRowIndex || columnIndex !== newColumnIndex) && tableRoot.current) {\n        focusCell(newRowIndex, newColumnIndex);\n      }\n    },\n    [focusCell, focusableColumns, maxColumnIndex, minColumnIndex, numRows, tableRoot]\n  );\n\n  const handleArrowKeyEvents = useCallback(\n    (event: KeyboardEvent) => {\n      const abort =\n        !!tableRoot.current?.querySelector('[data-inline-editing-active = \"true\"]') ||\n        !document.activeElement?.closest('[data-inline-editing-active]');\n\n      if (abort) {\n        return;\n      }\n      switch (event.key) {\n        case 'ArrowUp':\n          event.preventDefault();\n          shiftFocus(-1, 0);\n          break;\n        case 'ArrowDown':\n          event.preventDefault();\n          shiftFocus(1, 0);\n          break;\n        case 'ArrowLeft':\n          event.preventDefault();\n          shiftFocus(0, -1);\n          break;\n        case 'ArrowRight':\n          event.preventDefault();\n          shiftFocus(0, 1);\n          break;\n        // istanbul ignore next (default case = do nothing, not testable)\n        default:\n          return;\n      }\n    },\n    [shiftFocus, tableRoot]\n  );\n\n  useEffect(() => {\n    if (!tableRoot.current) {\n      return;\n    }\n\n    const tableElement = tableRoot.current;\n    tableRoot.current.addEventListener('keydown', handleArrowKeyEvents);\n\n    return () => tableElement && tableElement.removeEventListener('keydown', handleArrowKeyEvents);\n  }, [focusableColumns, handleArrowKeyEvents, tableRoot]);\n}\n\nexport default useTableFocusNavigation;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { TableForwardRefType, TableProps } from './interfaces';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\nimport InternalContainer from '../container/internal';\nimport { getBaseProps } from '../internal/base-component';\nimport ToolsHeader from './tools-header';\nimport Thead, { TheadProps } from './thead';\nimport { TableBodyCell } from './body-cell';\nimport InternalStatusIndicator from '../status-indicator/internal';\nimport { useContainerQuery } from '../internal/hooks/container-queries';\nimport { supportsStickyPosition } from '../internal/utils/dom';\nimport SelectionControl from './selection-control';\nimport { checkSortingState, getColumnKey, getItemKey, getVisibleColumnDefinitions, toContainerVariant } from './utils';\nimport { useRowEvents } from './use-row-events';\nimport { focusMarkers, useFocusMove, useSelection } from './use-selection';\nimport { fireCancelableEvent, fireNonCancelableEvent } from '../internal/events';\nimport { isDevelopment } from '../internal/is-development';\nimport { checkColumnWidths, ColumnWidthsProvider, DEFAULT_WIDTH } from './use-column-widths';\nimport { useScrollSync } from '../internal/hooks/use-scroll-sync';\nimport { ResizeTracker } from './resizer';\nimport styles from './styles.css.js';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport StickyHeader, { StickyHeaderRef } from './sticky-header';\nimport StickyScrollbar from './sticky-scrollbar';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport useMouseDownTarget from '../internal/hooks/use-mouse-down-target';\nimport { useDynamicOverlap } from '../internal/hooks/use-dynamic-overlap';\nimport LiveRegion from '../internal/components/live-region';\nimport useTableFocusNavigation from './use-table-focus-navigation';\nimport { SomeRequired } from '../internal/types';\nimport { TableTdElement } from './body-cell/td-element';\nimport { useStickyColumns, selectionColumnId } from './use-sticky-columns';\n\ntype InternalTableProps<T> = SomeRequired<TableProps<T>, 'items' | 'selectedItems' | 'variant'> &\n  InternalBaseComponentProps;\n\nconst InternalTable = React.forwardRef(\n  <T,>(\n    {\n      header,\n      footer,\n      empty,\n      filter,\n      pagination,\n      preferences,\n      items,\n      columnDefinitions,\n      trackBy,\n      loading,\n      loadingText,\n      selectionType,\n      selectedItems,\n      isItemDisabled,\n      ariaLabels,\n      onSelectionChange,\n      onSortingChange,\n      sortingColumn,\n      sortingDescending,\n      sortingDisabled,\n      visibleColumns,\n      stickyHeader,\n      stickyHeaderVerticalOffset,\n      onRowClick,\n      onRowContextMenu,\n      wrapLines,\n      stripedRows,\n      contentDensity,\n      submitEdit,\n      onEditCancel,\n      resizableColumns,\n      onColumnWidthsChange,\n      variant,\n      __internalRootRef,\n      totalItemsCount,\n      firstIndex,\n      renderAriaLive,\n      stickyColumns,\n      columnDisplay,\n      ...rest\n    }: InternalTableProps<T>,\n    ref: React.Ref<TableProps.Ref>\n  ) => {\n    const baseProps = getBaseProps(rest);\n    stickyHeader = stickyHeader && supportsStickyPosition();\n\n    const [containerWidth, wrapperMeasureRef] = useContainerQuery<number>(({ width }) => width);\n    const wrapperRefObject = useRef(null);\n\n    const [tableWidth, tableMeasureRef] = useContainerQuery<number>(({ width }) => width);\n    const tableRefObject = useRef(null);\n\n    const secondaryWrapperRef = React.useRef<HTMLDivElement>(null);\n    const theadRef = useRef<HTMLTableRowElement>(null);\n    const stickyHeaderRef = React.useRef<StickyHeaderRef>(null);\n    const scrollbarRef = React.useRef<HTMLDivElement>(null);\n    const [currentEditCell, setCurrentEditCell] = useState<[number, number] | null>(null);\n    const [lastSuccessfulEditCell, setLastSuccessfulEditCell] = useState<[number, number] | null>(null);\n    const [currentEditLoading, setCurrentEditLoading] = useState(false);\n\n    useImperativeHandle(\n      ref,\n      () => ({\n        scrollToTop: stickyHeaderRef.current?.scrollToTop || (() => undefined),\n        cancelEdit: () => setCurrentEditCell(null),\n      }),\n      []\n    );\n\n    const handleScroll = useScrollSync([wrapperRefObject, scrollbarRef, secondaryWrapperRef]);\n\n    const { moveFocusDown, moveFocusUp, moveFocus } = useFocusMove(selectionType, items.length);\n    const { onRowClickHandler, onRowContextMenuHandler } = useRowEvents({ onRowClick, onRowContextMenu });\n\n    const visibleColumnDefinitions = getVisibleColumnDefinitions({\n      columnDefinitions,\n      columnDisplay,\n      visibleColumns,\n    });\n\n    const { isItemSelected, getSelectAllProps, getItemSelectionProps, updateShiftToggle } = useSelection({\n      items,\n      trackBy,\n      selectedItems,\n      selectionType,\n      isItemDisabled,\n      onSelectionChange,\n      ariaLabels,\n      loading,\n    });\n\n    if (isDevelopment) {\n      if (resizableColumns) {\n        checkColumnWidths(columnDefinitions);\n      }\n      if (sortingColumn?.sortingComparator) {\n        checkSortingState(columnDefinitions, sortingColumn.sortingComparator);\n      }\n    }\n\n    const isVisualRefresh = useVisualRefresh();\n    const computedVariant = isVisualRefresh\n      ? variant\n      : ['embedded', 'full-page'].indexOf(variant) > -1\n      ? 'container'\n      : variant;\n    const hasHeader = !!(header || filter || pagination || preferences);\n    const hasSelection = !!selectionType;\n    const hasFooter = !!footer;\n\n    const visibleColumnsWithSelection = useMemo(() => {\n      const columnIds = visibleColumnDefinitions.map((it, index) => it.id ?? index.toString());\n      return hasSelection ? [selectionColumnId.toString(), ...columnIds] : columnIds ?? [];\n    }, [visibleColumnDefinitions, hasSelection]);\n\n    const stickyState = useStickyColumns({\n      visibleColumns: visibleColumnsWithSelection,\n      stickyColumnsFirst: (stickyColumns?.first ?? 0) + (stickyColumns?.first && hasSelection ? 1 : 0),\n      stickyColumnsLast: stickyColumns?.last || 0,\n    });\n\n    const theadProps: TheadProps = {\n      containerWidth,\n      selectionType,\n      getSelectAllProps,\n      columnDefinitions: visibleColumnDefinitions,\n      variant: computedVariant,\n      wrapLines,\n      resizableColumns,\n      sortingColumn,\n      sortingDisabled,\n      sortingDescending,\n      onSortingChange,\n      onFocusMove: moveFocus,\n      onResizeFinish(newWidth) {\n        const widthsDetail = columnDefinitions.map(\n          (column, index) => newWidth[getColumnKey(column, index)] || (column.width as number) || DEFAULT_WIDTH\n        );\n        const widthsChanged = widthsDetail.some((width, index) => columnDefinitions[index].width !== width);\n        if (widthsChanged) {\n          fireNonCancelableEvent(onColumnWidthsChange, { widths: widthsDetail });\n        }\n      },\n      singleSelectionHeaderAriaLabel: ariaLabels?.selectionGroupLabel,\n      stripedRows,\n      stickyState,\n    };\n\n    const wrapperRef = useMergeRefs(wrapperMeasureRef, wrapperRefObject, stickyState.refs.wrapper);\n    const tableRef = useMergeRefs(tableMeasureRef, tableRefObject, stickyState.refs.table);\n\n    // Allows keyboard users to scroll horizontally with arrow keys by making the wrapper part of the tab sequence\n    const isWrapperScrollable = tableWidth && containerWidth && tableWidth > containerWidth;\n    const wrapperProps = isWrapperScrollable\n      ? { role: 'region', tabIndex: 0, 'aria-label': ariaLabels?.tableLabel }\n      : {};\n\n    const getMouseDownTarget = useMouseDownTarget();\n    const wrapWithInlineLoadingState = (submitEdit: TableProps['submitEdit']) => {\n      if (!submitEdit) {\n        return undefined;\n      }\n      return async (...args: Parameters<typeof submitEdit>) => {\n        setCurrentEditLoading(true);\n        try {\n          await submitEdit(...args);\n        } finally {\n          setCurrentEditLoading(false);\n        }\n      };\n    };\n\n    const hasDynamicHeight = computedVariant === 'full-page';\n    const overlapElement = useDynamicOverlap({ disabled: !hasDynamicHeight });\n    useTableFocusNavigation(selectionType, tableRefObject, visibleColumnDefinitions, items?.length);\n\n    const toolsHeaderWrapper = useRef(null);\n    // If is mobile, we take into consideration the AppLayout's mobile bar and we subtract the tools wrapper height so only the table header is sticky\n    const toolsHeaderHeight =\n      (toolsHeaderWrapper?.current as HTMLDivElement | null)?.getBoundingClientRect().height ?? 0;\n\n    return (\n      <ColumnWidthsProvider\n        tableRef={tableRefObject}\n        visibleColumnDefinitions={visibleColumnDefinitions}\n        resizableColumns={resizableColumns}\n        hasSelection={hasSelection}\n      >\n        <InternalContainer\n          {...baseProps}\n          __internalRootRef={__internalRootRef}\n          className={clsx(baseProps.className, styles.root)}\n          header={\n            <>\n              {hasHeader && (\n                <div\n                  ref={overlapElement}\n                  className={clsx(hasDynamicHeight && [styles['dark-header'], 'awsui-context-content-header'])}\n                >\n                  <div\n                    ref={toolsHeaderWrapper}\n                    className={clsx(styles['header-controls'], styles[`variant-${computedVariant}`])}\n                  >\n                    <ToolsHeader header={header} filter={filter} pagination={pagination} preferences={preferences} />\n                  </div>\n                </div>\n              )}\n              {stickyHeader && (\n                <StickyHeader\n                  ref={stickyHeaderRef}\n                  variant={computedVariant}\n                  theadProps={theadProps}\n                  wrapperRef={wrapperRefObject}\n                  theadRef={theadRef}\n                  secondaryWrapperRef={secondaryWrapperRef}\n                  tableRef={tableRefObject}\n                  onScroll={handleScroll}\n                  tableHasHeader={hasHeader}\n                  contentDensity={contentDensity}\n                />\n              )}\n            </>\n          }\n          disableHeaderPaddings={true}\n          disableContentPaddings={true}\n          variant={toContainerVariant(computedVariant)}\n          __disableFooterPaddings={true}\n          __disableFooterDivider={true}\n          __disableStickyMobile={false}\n          footer={\n            footer && (\n              <div className={clsx(styles['footer-wrapper'], styles[`variant-${computedVariant}`])}>\n                <div className={styles.footer}>{footer}</div>\n              </div>\n            )\n          }\n          __stickyHeader={stickyHeader}\n          __mobileStickyOffset={toolsHeaderHeight}\n          __stickyOffset={stickyHeaderVerticalOffset}\n          {...focusMarkers.root}\n        >\n          <div\n            ref={wrapperRef}\n            className={clsx(styles.wrapper, styles[`variant-${computedVariant}`], {\n              [styles['has-footer']]: hasFooter,\n              [styles['has-header']]: hasHeader,\n            })}\n            onScroll={handleScroll}\n            {...wrapperProps}\n          >\n            {!!renderAriaLive && !!firstIndex && (\n              <LiveRegion>\n                <span>{renderAriaLive({ totalItemsCount, firstIndex, lastIndex: firstIndex + items.length - 1 })}</span>\n              </LiveRegion>\n            )}\n            <table\n              ref={tableRef}\n              className={clsx(\n                styles.table,\n                resizableColumns && styles['table-layout-fixed'],\n                contentDensity === 'compact' && getVisualContextClassname('compact-table')\n              )}\n              // Browsers have weird mechanism to guess whether it's a data table or a layout table.\n              // If we state explicitly, they get it always correctly even with low number of rows.\n              role=\"table\"\n              aria-label={ariaLabels?.tableLabel}\n              aria-rowcount={totalItemsCount ? totalItemsCount + 1 : -1}\n            >\n              <Thead\n                ref={theadRef}\n                hidden={stickyHeader}\n                onFocusedComponentChange={component => stickyHeaderRef.current?.setFocus(component)}\n                {...theadProps}\n              />\n              <tbody>\n                {loading || items.length === 0 ? (\n                  <tr>\n                    <td\n                      colSpan={selectionType ? visibleColumnDefinitions.length + 1 : visibleColumnDefinitions.length}\n                      className={clsx(styles['cell-merged'], hasFooter && styles['has-footer'])}\n                    >\n                      <div\n                        className={styles['cell-merged-content']}\n                        style={{\n                          width:\n                            (supportsStickyPosition() && containerWidth && Math.floor(containerWidth)) || undefined,\n                        }}\n                      >\n                        {loading ? (\n                          <InternalStatusIndicator type=\"loading\" className={styles.loading} wrapText={true}>\n                            <LiveRegion visible={true}>{loadingText}</LiveRegion>\n                          </InternalStatusIndicator>\n                        ) : (\n                          <div className={styles.empty}>{empty}</div>\n                        )}\n                      </div>\n                    </td>\n                  </tr>\n                ) : (\n                  items.map((item, rowIndex) => {\n                    const firstVisible = rowIndex === 0;\n                    const lastVisible = rowIndex === items.length - 1;\n                    const isEven = rowIndex % 2 === 0;\n                    const isSelected = !!selectionType && isItemSelected(item);\n                    const isPrevSelected = !!selectionType && !firstVisible && isItemSelected(items[rowIndex - 1]);\n                    const isNextSelected = !!selectionType && !lastVisible && isItemSelected(items[rowIndex + 1]);\n                    return (\n                      <tr\n                        key={getItemKey(trackBy, item, rowIndex)}\n                        className={clsx(styles.row, isSelected && styles['row-selected'])}\n                        onFocus={({ currentTarget }) => {\n                          // When an element inside table row receives focus we want to adjust the scroll.\n                          // However, that behaviour is unwanted when the focus is received as result of a click\n                          // as it causes the click to never reach the target element.\n                          if (!currentTarget.contains(getMouseDownTarget())) {\n                            stickyHeaderRef.current?.scrollToRow(currentTarget);\n                          }\n                        }}\n                        {...focusMarkers.item}\n                        onClick={onRowClickHandler && onRowClickHandler.bind(null, rowIndex, item)}\n                        onContextMenu={onRowContextMenuHandler && onRowContextMenuHandler.bind(null, rowIndex, item)}\n                        aria-rowindex={firstIndex ? firstIndex + rowIndex + 1 : undefined}\n                      >\n                        {selectionType !== undefined && (\n                          <TableTdElement\n                            className={clsx(styles['selection-control'])}\n                            isVisualRefresh={isVisualRefresh}\n                            isFirstRow={firstVisible}\n                            isLastRow={lastVisible}\n                            isSelected={isSelected}\n                            isNextSelected={isNextSelected}\n                            isPrevSelected={isPrevSelected}\n                            wrapLines={false}\n                            isEvenRow={isEven}\n                            stripedRows={stripedRows}\n                            hasSelection={hasSelection}\n                            hasFooter={hasFooter}\n                            stickyState={stickyState}\n                            columnId={selectionColumnId.toString()}\n                          >\n                            <SelectionControl\n                              onFocusDown={moveFocusDown}\n                              onFocusUp={moveFocusUp}\n                              onShiftToggle={updateShiftToggle}\n                              {...getItemSelectionProps(item)}\n                            />\n                          </TableTdElement>\n                        )}\n                        {visibleColumnDefinitions.map((column, colIndex) => {\n                          const isEditing =\n                            !!currentEditCell && currentEditCell[0] === rowIndex && currentEditCell[1] === colIndex;\n                          const successfulEdit =\n                            !!lastSuccessfulEditCell &&\n                            lastSuccessfulEditCell[0] === rowIndex &&\n                            lastSuccessfulEditCell[1] === colIndex;\n                          const isEditable = !!column.editConfig && !currentEditLoading;\n                          return (\n                            <TableBodyCell\n                              key={getColumnKey(column, colIndex)}\n                              style={\n                                resizableColumns\n                                  ? {}\n                                  : {\n                                      width: column.width,\n                                      minWidth: column.minWidth,\n                                      maxWidth: column.maxWidth,\n                                    }\n                              }\n                              ariaLabels={ariaLabels}\n                              column={column}\n                              item={item}\n                              wrapLines={wrapLines}\n                              isEditable={isEditable}\n                              isEditing={isEditing}\n                              isRowHeader={column.isRowHeader}\n                              isFirstRow={firstVisible}\n                              isLastRow={lastVisible}\n                              isSelected={isSelected}\n                              isNextSelected={isNextSelected}\n                              isPrevSelected={isPrevSelected}\n                              successfulEdit={successfulEdit}\n                              onEditStart={() => {\n                                setLastSuccessfulEditCell(null);\n                                setCurrentEditCell([rowIndex, colIndex]);\n                              }}\n                              onEditEnd={editCancelled => {\n                                const eventCancelled = fireCancelableEvent(onEditCancel, {});\n                                if (!eventCancelled) {\n                                  setCurrentEditCell(null);\n                                  if (!editCancelled) {\n                                    setLastSuccessfulEditCell([rowIndex, colIndex]);\n                                  }\n                                }\n                              }}\n                              submitEdit={wrapWithInlineLoadingState(submitEdit)}\n                              hasFooter={hasFooter}\n                              stripedRows={stripedRows}\n                              isEvenRow={isEven}\n                              columnId={column.id ?? colIndex.toString()}\n                              stickyState={stickyState}\n                              isVisualRefresh={isVisualRefresh}\n                            />\n                          );\n                        })}\n                      </tr>\n                    );\n                  })\n                )}\n              </tbody>\n            </table>\n            {resizableColumns && <ResizeTracker />}\n          </div>\n          <StickyScrollbar\n            ref={scrollbarRef}\n            wrapperRef={wrapperRefObject}\n            tableRef={tableRefObject}\n            onScroll={handleScroll}\n          />\n        </InternalContainer>\n      </ColumnWidthsProvider>\n    );\n  }\n) as TableForwardRefType;\n\nexport default InternalTable;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { RefObject, useRef } from 'react';\nimport { supportsStickyPosition } from '../../utils/dom';\n\n/**\n * useScrollSync returns scroll event handler to be attached to synchronized scroll elements.\n *\n * For example\n *    const handleScroll = useScrollSync([ref1, ref2]);\n *    <div ref={ref1} onScroll={handleScroll}/>\n *    <div ref={ref2} onScroll={handleScroll}/>\n */\nexport function useScrollSync(refs: Array<RefObject<any>>, disabled = !supportsStickyPosition()) {\n  const activeElement = useRef<HTMLElement | null>(null);\n  const onScroll = (event: React.UIEvent) => {\n    const targetElement = event.target as HTMLElement;\n    // remembers the first element that fires onscroll to align with other elements against it\n    if (targetElement && (activeElement.current === null || activeElement.current === targetElement)) {\n      requestAnimationFrame(() => {\n        activeElement.current = targetElement;\n        refs.forEach(ref => {\n          const element = ref.current;\n          if (element && element !== targetElement) {\n            element.scrollLeft = targetElement.scrollLeft;\n          }\n        });\n        // unblock the ability to scroll the synced elements\n        requestAnimationFrame(() => {\n          activeElement.current = null;\n        });\n      });\n    }\n  };\n\n  return !disabled ? onScroll : undefined;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { fireNonCancelableEvent, fireCancelableEvent } from '../internal/events/index';\nimport { TableProps } from './interfaces';\nimport { findUpUntil } from '../internal/utils/dom';\nimport styles from './styles.css.js';\n\nexport function useRowEvents<T>({ onRowClick, onRowContextMenu }: Pick<TableProps, 'onRowClick' | 'onRowContextMenu'>) {\n  const onRowClickHandler = (rowIndex: number, item: T, event: React.MouseEvent) => {\n    const tableCell = findUpUntil(event.target as HTMLElement, element => element.tagName.toLowerCase() === 'td');\n    if (!tableCell || !tableCell.classList.contains(styles['selection-control'])) {\n      const details: TableProps.OnRowClickDetail<T> = { rowIndex, item };\n      fireNonCancelableEvent(onRowClick, details);\n    }\n  };\n  const onRowContextMenuHandler = (rowIndex: number, item: T, event: React.MouseEvent) => {\n    const details: TableProps.OnRowContextMenuDetail<T> = {\n      rowIndex,\n      item,\n      clientX: event.clientX,\n      clientY: event.clientY,\n    };\n    fireCancelableEvent(onRowContextMenu, details, event);\n  };\n\n  return {\n    onRowClickHandler: onRowClick && onRowClickHandler,\n    onRowContextMenuHandler: onRowContextMenu && onRowContextMenuHandler,\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { TableForwardRefType, TableProps } from './interfaces';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport InternalTable from './internal';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { TableProps };\nconst Table = React.forwardRef(\n  <T,>(\n    { items = [], selectedItems = [], variant = 'container', contentDensity = 'comfortable', ...props }: TableProps<T>,\n    ref: React.Ref<TableProps.Ref>\n  ) => {\n    const baseComponentProps = useBaseComponent('Table');\n    return (\n      <InternalTable\n        items={items}\n        selectedItems={selectedItems}\n        variant={variant}\n        contentDensity={contentDensity}\n        {...props}\n        {...baseComponentProps}\n        ref={ref}\n      />\n    );\n  }\n) as TableForwardRefType;\n\napplyDisplayName(Table, 'Table');\nexport default Table;\n","\n    import './styles.scoped.css';\n    export default {\n  \"button-dropdown\": \"awsui_button-dropdown_sne0l_93zuq_93\",\n  \"items-list-container\": \"awsui_items-list-container_sne0l_93zuq_97\",\n  \"awsui-motion-fade-in-0\": \"awsui_awsui-motion-fade-in-0_sne0l_93zuq_1\",\n  \"rotate-up\": \"awsui_rotate-up_sne0l_93zuq_114\",\n  \"rotate-down\": \"awsui_rotate-down_sne0l_93zuq_129\",\n  \"header\": \"awsui_header_sne0l_93zuq_144\",\n  \"title\": \"awsui_title_sne0l_93zuq_153\",\n  \"description\": \"awsui_description_sne0l_93zuq_154\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ButtonDropdownProps, LinkItem } from '../interfaces';\n\nexport const isItemGroup = (item: ButtonDropdownProps.ItemOrGroup): item is ButtonDropdownProps.ItemGroup =>\n  item && (item as ButtonDropdownProps.ItemGroup).items !== undefined;\n\nexport const isLinkItem = (item: LinkItem | ButtonDropdownProps.ItemOrGroup): item is LinkItem =>\n  item && (item as LinkItem).href !== undefined;\n\nexport const getItemTarget = (item: ButtonDropdownProps.Item) => (item.external ? '_blank' : undefined);\n\nexport function indexIncludes(source: number[], target: number[]) {\n  for (let index = 0; index < source.length; index++) {\n    if (source[index] !== target[index]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexport function indexEquals(left: number[], right: number[]) {\n  if (left.length !== right.length) {\n    return false;\n  }\n\n  for (let index = 0; index < left.length; index++) {\n    if (left[index] !== right[index]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"item-element\": \"awsui_item-element_93a1u_1yom4_93\",\n  \"disabled\": \"awsui_disabled_93a1u_1yom4_103\",\n  \"last\": \"awsui_last_93a1u_1yom4_110\",\n  \"highlighted\": \"awsui_highlighted_93a1u_1yom4_113\",\n  \"variant-icon\": \"awsui_variant-icon_93a1u_1yom4_117\",\n  \"variant-normal\": \"awsui_variant-normal_93a1u_1yom4_117\",\n  \"variant-primary\": \"awsui_variant-primary_93a1u_1yom4_117\",\n  \"is-focused\": \"awsui_is-focused_93a1u_1yom4_127\",\n  \"variant-navigation\": \"awsui_variant-navigation_93a1u_1yom4_131\",\n  \"first\": \"awsui_first_93a1u_1yom4_134\",\n  \"has-category-header\": \"awsui_has-category-header_93a1u_1yom4_134\",\n  \"menu-item\": \"awsui_menu-item_93a1u_1yom4_148\",\n  \"icon\": \"awsui_icon_93a1u_1yom4_166\",\n  \"external-icon\": \"awsui_external-icon_93a1u_1yom4_171\"\n};\n  ","\n    import './styles.scoped.css';\n    export default {\n  \"arrow\": \"awsui_arrow_xjuzf_rnb9d_185\",\n  \"arrow-outer\": \"awsui_arrow-outer_xjuzf_rnb9d_189\",\n  \"arrow-inner\": \"awsui_arrow-inner_xjuzf_rnb9d_189\",\n  \"arrow-position-right-top\": \"awsui_arrow-position-right-top_xjuzf_rnb9d_220\",\n  \"arrow-position-right-bottom\": \"awsui_arrow-position-right-bottom_xjuzf_rnb9d_220\",\n  \"arrow-position-left-top\": \"awsui_arrow-position-left-top_xjuzf_rnb9d_223\",\n  \"arrow-position-left-bottom\": \"awsui_arrow-position-left-bottom_xjuzf_rnb9d_223\",\n  \"arrow-position-top-center\": \"awsui_arrow-position-top-center_xjuzf_rnb9d_226\",\n  \"arrow-position-top-right\": \"awsui_arrow-position-top-right_xjuzf_rnb9d_226\",\n  \"arrow-position-top-left\": \"awsui_arrow-position-top-left_xjuzf_rnb9d_226\",\n  \"arrow-position-top-responsive\": \"awsui_arrow-position-top-responsive_xjuzf_rnb9d_226\",\n  \"arrow-position-bottom-center\": \"awsui_arrow-position-bottom-center_xjuzf_rnb9d_229\",\n  \"arrow-position-bottom-right\": \"awsui_arrow-position-bottom-right_xjuzf_rnb9d_229\",\n  \"arrow-position-bottom-left\": \"awsui_arrow-position-bottom-left_xjuzf_rnb9d_229\",\n  \"arrow-position-bottom-responsive\": \"awsui_arrow-position-bottom-responsive_xjuzf_rnb9d_229\",\n  \"body\": \"awsui_body_xjuzf_rnb9d_325\",\n  \"body-overflow-visible\": \"awsui_body-overflow-visible_xjuzf_rnb9d_341\",\n  \"has-dismiss\": \"awsui_has-dismiss_xjuzf_rnb9d_345\",\n  \"dismiss\": \"awsui_dismiss_xjuzf_rnb9d_350\",\n  \"dismiss-control\": \"awsui_dismiss-control_xjuzf_rnb9d_357\",\n  \"header-row\": \"awsui_header-row_xjuzf_rnb9d_361\",\n  \"header\": \"awsui_header_xjuzf_rnb9d_361\",\n  \"content\": \"awsui_content_xjuzf_rnb9d_387\",\n  \"content-overflow-visible\": \"awsui_content-overflow-visible_xjuzf_rnb9d_395\",\n  \"container\": \"awsui_container_xjuzf_rnb9d_491\",\n  \"container-body\": \"awsui_container-body_xjuzf_rnb9d_499\",\n  \"container-body-variant-annotation\": \"awsui_container-body-variant-annotation_xjuzf_rnb9d_516\",\n  \"container-body-size-small\": \"awsui_container-body-size-small_xjuzf_rnb9d_521\",\n  \"fixed-width\": \"awsui_fixed-width_xjuzf_rnb9d_524\",\n  \"container-body-size-medium\": \"awsui_container-body-size-medium_xjuzf_rnb9d_528\",\n  \"container-body-size-large\": \"awsui_container-body-size-large_xjuzf_rnb9d_535\",\n  \"container-arrow\": \"awsui_container-arrow_xjuzf_rnb9d_547\",\n  \"container-arrow-position-right-top\": \"awsui_container-arrow-position-right-top_xjuzf_rnb9d_551\",\n  \"container-arrow-position-right-bottom\": \"awsui_container-arrow-position-right-bottom_xjuzf_rnb9d_551\",\n  \"container-arrow-position-left-top\": \"awsui_container-arrow-position-left-top_xjuzf_rnb9d_563\",\n  \"container-arrow-position-left-bottom\": \"awsui_container-arrow-position-left-bottom_xjuzf_rnb9d_563\",\n  \"container-arrow-position-top-center\": \"awsui_container-arrow-position-top-center_xjuzf_rnb9d_575\",\n  \"container-arrow-position-top-right\": \"awsui_container-arrow-position-top-right_xjuzf_rnb9d_575\",\n  \"container-arrow-position-top-left\": \"awsui_container-arrow-position-top-left_xjuzf_rnb9d_575\",\n  \"container-arrow-position-top-responsive\": \"awsui_container-arrow-position-top-responsive_xjuzf_rnb9d_575\",\n  \"container-arrow-position-bottom-center\": \"awsui_container-arrow-position-bottom-center_xjuzf_rnb9d_591\",\n  \"container-arrow-position-bottom-right\": \"awsui_container-arrow-position-bottom-right_xjuzf_rnb9d_595\",\n  \"container-arrow-position-bottom-left\": \"awsui_container-arrow-position-bottom-left_xjuzf_rnb9d_599\",\n  \"awsui-motion-fade-in\": \"awsui_awsui-motion-fade-in_xjuzf_rnb9d_1\",\n  \"refresh\": \"awsui_refresh_xjuzf_rnb9d_717\",\n  \"root\": \"awsui_root_xjuzf_rnb9d_739\",\n  \"trigger\": \"awsui_trigger_xjuzf_rnb9d_753\",\n  \"trigger-type-text\": \"awsui_trigger-type-text_xjuzf_rnb9d_760\",\n  \"trigger-inner-text\": \"awsui_trigger-inner-text_xjuzf_rnb9d_789\",\n  \"popover-content\": \"awsui_popover-content_xjuzf_rnb9d_793\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport styles from './styles.css.js';\nimport { InternalPosition } from './interfaces';\n\nexport interface ArrowProps {\n  position: InternalPosition | null;\n}\n\nconst Arrow = (props: ArrowProps) => (\n  <div className={clsx(styles.arrow, props.position && styles[`arrow-position-${props.position}`])}>\n    <div className={styles['arrow-outer']} />\n    <div className={styles['arrow-inner']} />\n  </div>\n);\n\nexport default React.memo(Arrow);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { PopoverProps, InternalPosition, BoundingOffset, BoundingBox } from '../interfaces';\n\n// A structure describing how the popover should be positioned\nexport interface CalculatePosition {\n  scrollable?: boolean;\n  internalPosition: InternalPosition;\n  boundingOffset: BoundingOffset;\n}\n\ninterface ElementGroup {\n  body: BoundingBox;\n  trigger: BoundingOffset;\n  arrow: BoundingBox;\n}\n\nconst ARROW_OFFSET = 12;\n\nexport const PRIORITY_MAPPING: Record<PopoverProps.Position, InternalPosition[]> = {\n  top: [\n    'top-center',\n    'top-right',\n    'top-left',\n    'bottom-center',\n    'bottom-right',\n    'bottom-left',\n    'right-top',\n    'right-bottom',\n    'left-top',\n    'left-bottom',\n  ],\n  bottom: [\n    'bottom-center',\n    'bottom-right',\n    'bottom-left',\n    'top-center',\n    'top-right',\n    'top-left',\n    'right-top',\n    'right-bottom',\n    'left-top',\n    'left-bottom',\n  ],\n  left: [\n    'left-top',\n    'left-bottom',\n    'right-top',\n    'right-bottom',\n    'bottom-center',\n    'top-center',\n    'bottom-left',\n    'top-left',\n    'bottom-right',\n    'top-right',\n  ],\n  right: [\n    'right-top',\n    'right-bottom',\n    'left-top',\n    'left-bottom',\n    'bottom-center',\n    'top-center',\n    'bottom-right',\n    'top-right',\n    'bottom-left',\n    'top-left',\n  ],\n};\n\nconst RECTANGLE_CALCULATIONS: Record<InternalPosition, (r: ElementGroup) => BoundingOffset> = {\n  'top-center': ({ body, trigger, arrow }) => {\n    return {\n      top: trigger.top - body.height - arrow.height,\n      left: trigger.left + trigger.width / 2 - body.width / 2,\n      width: body.width,\n      height: body.height,\n    };\n  },\n  'top-right': ({ body, trigger, arrow }) => {\n    return {\n      top: trigger.top - body.height - arrow.height,\n      left: trigger.left,\n      width: body.width,\n      height: body.height,\n    };\n  },\n  'top-left': ({ body, trigger, arrow }) => {\n    return {\n      top: trigger.top - body.height - arrow.height,\n      left: trigger.left + trigger.width - body.width,\n      width: body.width,\n      height: body.height,\n    };\n  },\n  'bottom-center': ({ body, trigger, arrow }) => {\n    return {\n      top: trigger.top + trigger.height + arrow.height,\n      left: trigger.left + trigger.width / 2 - body.width / 2,\n      width: body.width,\n      height: body.height,\n    };\n  },\n  'bottom-right': ({ body, trigger, arrow }) => {\n    return {\n      top: trigger.top + trigger.height + arrow.height,\n      left: trigger.left,\n      width: body.width,\n      height: body.height,\n    };\n  },\n  'bottom-left': ({ body, trigger, arrow }) => {\n    return {\n      top: trigger.top + trigger.height + arrow.height,\n      left: trigger.left + trigger.width - body.width,\n      width: body.width,\n      height: body.height,\n    };\n  },\n  'right-top': ({ body, trigger, arrow }) => {\n    return {\n      top: trigger.top + trigger.height / 2 - ARROW_OFFSET - arrow.height,\n      left: trigger.left + trigger.width + arrow.height,\n      width: body.width,\n      height: body.height,\n    };\n  },\n  'right-bottom': ({ body, trigger, arrow }) => {\n    return {\n      top: trigger.top + trigger.height / 2 - body.height + ARROW_OFFSET + arrow.height,\n      left: trigger.left + trigger.width + arrow.height,\n      width: body.width,\n      height: body.height,\n    };\n  },\n  'left-top': ({ body, trigger, arrow }) => {\n    return {\n      top: trigger.top + trigger.height / 2 - ARROW_OFFSET - arrow.height,\n      left: trigger.left - body.width - arrow.height,\n      width: body.width,\n      height: body.height,\n    };\n  },\n  'left-bottom': ({ body, trigger, arrow }) => {\n    return {\n      top: trigger.top + trigger.height / 2 - body.height + ARROW_OFFSET + arrow.height,\n      left: trigger.left - body.width - arrow.height,\n      width: body.width,\n      height: body.height,\n    };\n  },\n};\n\n/**\n * Returns whether one rectangle fits in another.\n */\nfunction canRectFit(inner: BoundingOffset, outer: BoundingOffset): boolean {\n  return (\n    inner.left >= outer.left &&\n    inner.top >= outer.top &&\n    inner.left + inner.width <= outer.left + outer.width &&\n    inner.top + inner.height <= outer.top + outer.height\n  );\n}\n\nfunction fitIntoContainer(inner: BoundingOffset, outer: BoundingOffset): BoundingOffset {\n  let { left, width, top, height } = inner;\n\n  // Adjust left boundary.\n  if (left < outer.left) {\n    width = left + width - outer.left;\n    left = outer.left;\n  }\n  // Adjust right boundary.\n  else if (left + width > outer.left + outer.width) {\n    width = outer.left + outer.width - left;\n  }\n  // Adjust top boundary.\n  if (top < outer.top) {\n    height = top + height - outer.top;\n    top = outer.top;\n  }\n  // Adjust bottom boundary.\n  else if (top + height > outer.top + outer.height) {\n    height = outer.top + outer.height - top;\n  }\n\n  return { left, width, top, height };\n}\n\nfunction getLargestRect(rect1: BoundingOffset, rect2: BoundingOffset): BoundingOffset {\n  const area1 = rect1.height * rect1.width;\n  const area2 = rect2.height * rect2.width;\n  return area1 >= area2 ? rect1 : rect2;\n}\n\n/**\n * Returns the area of the intersection of passed in rectangles or a null, if there is no intersection\n */\nexport function intersectRectangles(rectangles: BoundingOffset[]): number | null {\n  let boundingOffset: BoundingOffset | null = null;\n  for (const currentRect of rectangles) {\n    if (!boundingOffset) {\n      boundingOffset = currentRect;\n      continue;\n    }\n    const left = Math.max(boundingOffset.left, currentRect.left);\n    const top = Math.max(boundingOffset.top, currentRect.top);\n    const right = Math.min(boundingOffset.left + boundingOffset.width, currentRect.left + currentRect.width);\n    const bottom = Math.min(boundingOffset.top + boundingOffset.height, currentRect.top + currentRect.height);\n    if (right < left || bottom < top) {\n      return null;\n    }\n    boundingOffset = {\n      left,\n      top,\n      width: right - left,\n      height: bottom - top,\n    };\n  }\n  return boundingOffset && boundingOffset.height * boundingOffset.width;\n}\n\n/**\n * A functions that returns the correct popover position based on screen dimensions.\n */\nexport function calculatePosition(\n  preferred: PopoverProps.Position,\n  trigger: BoundingOffset,\n  arrow: BoundingBox,\n  body: BoundingBox,\n  container: BoundingOffset,\n  viewport: BoundingOffset,\n  // the popover is only bound by the viewport if it is rendered in a portal\n  renderWithPortal?: boolean\n): CalculatePosition {\n  let bestPositionOutsideViewport: CalculatePosition | null = null;\n  let largestArea = 0;\n\n  // Attempt to position the popover based on the priority list for this position,\n  // trying to fit it inside the container and inside the viewport.\n  for (const internalPosition of PRIORITY_MAPPING[preferred]) {\n    const boundingOffset = RECTANGLE_CALCULATIONS[internalPosition]({ body, trigger, arrow });\n    const fitsInContainer = renderWithPortal || canRectFit(boundingOffset, container);\n    const fitsInViewport = canRectFit(boundingOffset, viewport);\n    if (fitsInContainer && fitsInViewport) {\n      return { internalPosition, boundingOffset };\n    }\n    const boundingRectangles = [boundingOffset, viewport];\n    if (!renderWithPortal) {\n      boundingRectangles.push(container);\n    }\n    const availableArea = intersectRectangles(boundingRectangles);\n    if (availableArea && availableArea > largestArea) {\n      bestPositionOutsideViewport = { internalPosition, boundingOffset };\n      largestArea = availableArea;\n    }\n  }\n\n  // Use best possible placement.\n  const internalPosition = bestPositionOutsideViewport?.internalPosition || 'right-top';\n  // Get default rect for that placement.\n  const defaultOffset = RECTANGLE_CALCULATIONS[internalPosition]({ body, trigger, arrow });\n  // Get largest possible rect that fits into viewport or container.\n  const optimisedOffset = fitIntoContainer(\n    defaultOffset,\n    renderWithPortal ? viewport : getLargestRect(container, viewport)\n  );\n  // If largest possible rect is smaller than original - set body scroll.\n  const scrollable = optimisedOffset.height < defaultOffset.height;\n\n  return { internalPosition, boundingOffset: optimisedOffset, scrollable };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { CSSProperties, useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { getContainingBlock, nodeContains } from '../internal/utils/dom';\nimport { useResizeObserver } from '../internal/hooks/container-queries';\nimport { BoundingOffset, InternalPosition, Offset, PopoverProps } from './interfaces';\nimport { calculatePosition } from './utils/positions';\nimport styles from './styles.css.js';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\n\nexport interface PopoverContainerProps {\n  /** References the element the container is positioned against. */\n  trackRef: React.RefObject<Element>;\n  /**\n    Used to update the container position in case track or track position changes:\n    \n    const trackRef = useRef<Element>(null)\n    return (<>\n      <Track style={getPosition(selectedItemId)} ref={trackRef} />\n      <PopoverContainer trackRef={trackRef} trackKey={selectedItemId} .../>\n    </>)\n  */\n  trackKey?: string | number;\n  position: PopoverProps.Position;\n  zIndex?: React.CSSProperties['zIndex'];\n  arrow: (position: InternalPosition | null) => React.ReactNode;\n  children: React.ReactNode;\n  renderWithPortal?: boolean;\n  size: PopoverProps.Size;\n  fixedWidth: boolean;\n  variant?: 'annotation';\n}\n\nconst INITIAL_STYLES: CSSProperties = { position: 'absolute', top: -9999, left: -9999 };\n\nexport default function PopoverContainer({\n  position,\n  trackRef,\n  trackKey,\n  arrow,\n  children,\n  zIndex,\n  renderWithPortal,\n  size,\n  fixedWidth,\n  variant,\n}: PopoverContainerProps) {\n  const bodyRef = useRef<HTMLDivElement | null>(null);\n  const contentRef = useRef<HTMLDivElement | null>(null);\n  const popoverRef = useRef<HTMLDivElement | null>(null);\n  const arrowRef = useRef<HTMLDivElement | null>(null);\n\n  const [popoverStyle, setPopoverStyle] = useState<CSSProperties>(INITIAL_STYLES);\n  const [internalPosition, setInternalPosition] = useState<InternalPosition | null>(null);\n  const isRefresh = useVisualRefresh();\n\n  // Store the handler in a ref so that it can still be replaced from outside of the listener closure.\n  const positionHandlerRef = useRef<() => void>(() => {});\n\n  // Updates the position handler.\n  const updatePositionHandler = useCallback(() => {\n    if (!trackRef.current || !popoverRef.current || !bodyRef.current || !contentRef.current || !arrowRef.current) {\n      return;\n    }\n\n    // Get important elements\n    const popover = popoverRef.current;\n    const body = bodyRef.current;\n    const arrow = arrowRef.current;\n    const document = popover.ownerDocument;\n    const track = trackRef.current;\n\n    // If the popover body isn't being rendered for whatever reason (e.g. \"display: none\" or JSDOM),\n    // or track does not belong to the document - bail on calculating dimensions.\n    if (popover.offsetWidth === 0 || popover.offsetHeight === 0 || !nodeContains(document.body, track)) {\n      return;\n    }\n\n    // Imperatively move body off-screen to give it room to expand.\n    // Not doing this in React because this recalculation should happen\n    // in the span of a single frame without rerendering anything.\n    const prevTop = popover.style.top;\n    const prevLeft = popover.style.left;\n    popover.style.top = '0';\n    popover.style.left = '0';\n    // Imperatively remove body styles that can remain from the previous computation.\n    body.style.maxHeight = '';\n    body.style.overflowX = '';\n    body.style.overflowY = '';\n\n    // Get rects representing key elements\n    // Use getComputedStyle for arrowRect to avoid modifications made by transform\n    const viewportRect = getViewportRect(document.defaultView!);\n    const trackRect = track.getBoundingClientRect();\n    const arrowRect = {\n      width: parseFloat(getComputedStyle(arrow).width),\n      height: parseFloat(getComputedStyle(arrow).height),\n    };\n    const containingBlock = getContainingBlock(popover);\n    const containingBlockRect = containingBlock ? containingBlock.getBoundingClientRect() : viewportRect;\n\n    const bodyBorderWidth = getBorderWidth(body);\n    const contentRect = contentRef.current.getBoundingClientRect();\n    const contentBoundingBox = {\n      width: contentRect.width + 2 * bodyBorderWidth,\n      height: contentRect.height + 2 * bodyBorderWidth,\n    };\n\n    // Calculate the arrow direction and viewport-relative position of the popover.\n    const {\n      scrollable,\n      internalPosition: newInternalPosition,\n      boundingOffset,\n    } = calculatePosition(\n      position,\n      trackRect,\n      arrowRect,\n      contentBoundingBox,\n      containingBlock ? containingBlockRect : getDocumentRect(document),\n      viewportRect,\n      renderWithPortal\n    );\n\n    // Get the position of the popover relative to the offset parent.\n    const popoverOffset = toRelativePosition(boundingOffset, containingBlockRect);\n\n    // Cache the distance between the trigger and the popover (which stays the same as you scroll),\n    // and use that to recalculate the new popover position.\n    const trackRelativeOffset = toRelativePosition(popoverOffset, toRelativePosition(trackRect, containingBlockRect));\n\n    // Bring back the container to its original position to prevent any flashing.\n    popover.style.top = prevTop;\n    popover.style.left = prevLeft;\n\n    // Allow popover body to scroll if can't fit the popover into the container/viewport otherwise.\n    if (scrollable) {\n      body.style.maxHeight = boundingOffset.height + 'px';\n      body.style.overflowX = 'hidden';\n      body.style.overflowY = 'auto';\n    }\n\n    // Position the popover\n    setInternalPosition(newInternalPosition);\n    setPopoverStyle({ top: popoverOffset.top, left: popoverOffset.left });\n\n    positionHandlerRef.current = () => {\n      const newTrackOffset = toRelativePosition(\n        track.getBoundingClientRect(),\n        containingBlock ? containingBlock.getBoundingClientRect() : viewportRect\n      );\n      setPopoverStyle({\n        top: newTrackOffset.top + trackRelativeOffset.top,\n        left: newTrackOffset.left + trackRelativeOffset.left,\n      });\n    };\n  }, [position, trackRef, renderWithPortal]);\n\n  // Recalculate position when properties change.\n  useLayoutEffect(() => {\n    updatePositionHandler();\n  }, [updatePositionHandler, trackKey]);\n\n  // Recalculate position when content size changes.\n  useResizeObserver(contentRef, () => updatePositionHandler());\n\n  // Recalculate position on DOM events.\n  useLayoutEffect(() => {\n    /*\n      This is a heuristic. Some layout changes are caused by user clicks (e.g. toggling the tools panel, submitting a form),\n      and by tracking the click event we can adapt the popover's position to the new layout.\n\n      TODO: extend this to Enter and Spacebar?\n    */\n    const updatePosition = () => requestAnimationFrame(() => updatePositionHandler());\n    const refreshPosition = () => requestAnimationFrame(() => positionHandlerRef.current());\n\n    window.addEventListener('click', updatePosition);\n    window.addEventListener('resize', updatePosition);\n    window.addEventListener('scroll', refreshPosition, true);\n    return () => {\n      window.removeEventListener('click', updatePosition);\n      window.removeEventListener('resize', updatePosition);\n      window.removeEventListener('scroll', refreshPosition, true);\n    };\n  }, [updatePositionHandler]);\n\n  return (\n    <div\n      ref={popoverRef}\n      style={{ ...popoverStyle, zIndex }}\n      className={clsx(styles.container, isRefresh && styles.refresh)}\n    >\n      <div\n        ref={arrowRef}\n        className={clsx(styles[`container-arrow`], styles[`container-arrow-position-${internalPosition}`])}\n        aria-hidden={true}\n      >\n        {arrow(internalPosition)}\n      </div>\n\n      <div\n        ref={bodyRef}\n        className={clsx(styles['container-body'], styles[`container-body-size-${size}`], {\n          [styles['fixed-width']]: fixedWidth,\n          [styles[`container-body-variant-${variant}`]]: variant,\n        })}\n      >\n        <div ref={contentRef}>{children}</div>\n      </div>\n    </div>\n  );\n}\n\nfunction getBorderWidth(element: HTMLElement) {\n  return parseInt(getComputedStyle(element).borderWidth) || 0;\n}\n\n/**\n * Convert a viewport-relative offset to an element-relative offset.\n */\nfunction toRelativePosition(element: Offset, parent: Offset): Offset {\n  return {\n    top: element.top - parent.top,\n    left: element.left - parent.left,\n  };\n}\n\n/**\n * Get a BoundingOffset that represents the visible viewport.\n */\nfunction getViewportRect(window: Window): BoundingOffset {\n  return {\n    top: 0,\n    left: 0,\n    width: window.innerWidth,\n    height: window.innerHeight,\n  };\n}\n\nfunction getDocumentRect(document: Document): BoundingOffset {\n  const { top, left } = document.documentElement.getBoundingClientRect();\n  return {\n    top,\n    left,\n    width: document.documentElement.scrollWidth,\n    height: document.documentElement.scrollHeight,\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { KeyCode } from '../internal/keycode';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { ButtonProps } from '../button/interfaces';\nimport { InternalButton } from '../button/internal';\nimport FocusLock from '../internal/components/focus-lock';\n\nimport styles from './styles.css.js';\nimport { useInternalI18n } from '../internal/i18n/context';\n\nexport interface PopoverBodyProps {\n  dismissButton: boolean;\n  dismissAriaLabel: string | undefined;\n  onDismiss: () => void;\n\n  header: React.ReactNode | undefined;\n  children: React.ReactNode;\n  variant?: 'annotation';\n  overflowVisible?: 'content' | 'both';\n\n  className?: string;\n  ariaLabelledby?: string;\n}\n\nexport default function PopoverBody({\n  dismissButton: showDismissButton,\n  dismissAriaLabel,\n  header,\n  children,\n  onDismiss,\n  variant,\n  overflowVisible,\n  className,\n  ariaLabelledby,\n}: PopoverBodyProps) {\n  const i18n = useInternalI18n('popover');\n  const labelledById = useUniqueId('awsui-popover-');\n  const dismissButtonFocused = useRef(false);\n  const dismissButtonRef = useRef<ButtonProps.Ref>(null);\n\n  const onKeyDown = useCallback(\n    (event: React.KeyboardEvent) => {\n      if (event.keyCode === KeyCode.escape) {\n        onDismiss();\n      }\n    },\n    [onDismiss]\n  );\n\n  // Implement our own auto-focus rather than using FocusLock's,\n  // because we also want to focus the dismiss button when it\n  // is added dyamically (e.g. in chart popovers)\n  useEffect(() => {\n    if (showDismissButton && !dismissButtonFocused.current) {\n      dismissButtonRef.current?.focus({ preventScroll: true });\n    }\n    dismissButtonFocused.current = showDismissButton;\n  }, [showDismissButton]);\n\n  const dismissButton = (showDismissButton ?? null) && (\n    <div className={styles.dismiss}>\n      <InternalButton\n        variant=\"icon\"\n        formAction=\"none\"\n        iconName=\"close\"\n        className={styles['dismiss-control']}\n        ariaLabel={i18n('dismissAriaLabel', dismissAriaLabel)}\n        onClick={() => onDismiss()}\n        ref={dismissButtonRef}\n      />\n    </div>\n  );\n\n  const isDialog = showDismissButton;\n  const shouldTrapFocus = showDismissButton && variant !== 'annotation';\n\n  const dialogProps = isDialog\n    ? {\n        role: 'dialog',\n        'aria-modal': shouldTrapFocus ? true : undefined,\n        'aria-labelledby': ariaLabelledby ?? (header ? labelledById : undefined),\n      }\n    : {};\n\n  return (\n    <div\n      className={clsx(styles.body, className, {\n        [styles['body-overflow-visible']]: overflowVisible === 'both',\n      })}\n      onKeyDown={onKeyDown}\n      {...dialogProps}\n    >\n      <FocusLock disabled={!shouldTrapFocus} autoFocus={false}>\n        {header && (\n          <div className={clsx(styles['header-row'], showDismissButton && styles['has-dismiss'])}>\n            {dismissButton}\n            <div className={styles.header} id={labelledById}>\n              <h2>{header}</h2>\n            </div>\n          </div>\n        )}\n        <div className={!header && showDismissButton ? styles['has-dismiss'] : undefined}>\n          {!header && dismissButton}\n          <div className={clsx(styles.content, { [styles['content-overflow-visible']]: !!overflowVisible })}>\n            {children}\n          </div>\n        </div>\n      </FocusLock>\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { KeyboardEventHandler, useRef, useState } from 'react';\n\nimport Arrow from '../popover/arrow';\nimport PopoverContainer from '../popover/container';\nimport PopoverBody from '../popover/body';\nimport Portal from '../internal/components/portal';\nimport { usePortalModeClasses } from '../internal/hooks/use-portal-mode-classes';\nimport { useReducedMotion } from '../internal/hooks/use-visual-mode';\n\nexport interface TooltipProps {\n  children?: React.ReactNode;\n  content?: React.ReactNode;\n  position?: 'top' | 'right' | 'bottom' | 'left';\n}\n\nconst DEFAULT_OPEN_TIMEOUT_IN_MS = 120;\n\nexport default function Tooltip({ children, content, position = 'right' }: TooltipProps) {\n  const ref = useRef<HTMLSpanElement | null>(null);\n  const isReducedMotion = useReducedMotion(ref);\n  const { open, triggerProps } = useTooltipOpen(isReducedMotion ? 0 : DEFAULT_OPEN_TIMEOUT_IN_MS);\n  const portalClasses = usePortalModeClasses(ref);\n\n  return (\n    <span ref={ref} {...triggerProps}>\n      {children}\n      {open && (\n        <Portal>\n          <span className={portalClasses}>\n            <PopoverContainer\n              size=\"small\"\n              fixedWidth={false}\n              position={position}\n              trackRef={ref}\n              arrow={position => <Arrow position={position} />}\n              renderWithPortal={true}\n              zIndex={7000}\n            >\n              <PopoverBody\n                dismissButton={false}\n                dismissAriaLabel={undefined}\n                header={null}\n                onDismiss={() => {}}\n                overflowVisible=\"both\"\n              >\n                <span data-testid=\"button-dropdown-disabled-reason\" role=\"tooltip\">\n                  {content}\n                </span>\n              </PopoverBody>\n            </PopoverContainer>\n          </span>\n        </Portal>\n      )}\n    </span>\n  );\n}\n\nfunction useTooltipOpen(timeout: number) {\n  const handle = useRef<number>();\n  const [isOpen, setIsOpen] = useState(false);\n\n  const close = () => {\n    clearTimeout(handle.current);\n    setIsOpen(false);\n  };\n  const open = () => setIsOpen(true);\n  const openDelayed = () => {\n    handle.current = setTimeout(open, timeout);\n  };\n  const onKeyDown: KeyboardEventHandler = e => {\n    if (isOpen && isEscape(e.key)) {\n      e.preventDefault();\n      e.stopPropagation();\n      close();\n    }\n  };\n\n  const onFocus = openDelayed;\n  const onBlur = close;\n\n  return {\n    open: isOpen,\n    triggerProps: {\n      onBlur,\n      onFocus,\n      onKeyDown,\n    },\n  };\n}\n\nconst isEscape = (key: string) => key === 'Escape' || key === 'Esc';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\n\nexport default function useHiddenDescription(description?: string) {\n  const id = useUniqueId();\n  return {\n    targetProps: {\n      'aria-describedby': description ? id : undefined,\n    },\n    descriptionEl: description ? (\n      <span id={id} hidden={true}>\n        {description}\n      </span>\n    ) : null,\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nexport interface GetMenuItemPropsParams {\n  disabled: boolean;\n  parent?: boolean;\n  expanded?: boolean;\n}\n/**\n * @returns attributes for a menuitem widget given parameters\n */\nexport const getMenuItemProps: (params: GetMenuItemPropsParams) => React.HTMLProps<HTMLElement> = ({\n  disabled,\n  parent,\n  expanded,\n}: GetMenuItemPropsParams) => ({\n  role: 'menuitem',\n  'aria-disabled': disabled ? 'true' : undefined,\n  'aria-haspopup': parent ? 'true' : undefined,\n  'aria-expanded': expanded ? 'true' : parent ? 'false' : undefined,\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport { ItemProps } from '../interfaces';\nimport { isLinkItem } from '../utils/utils';\nimport styles from './styles.css.js';\nimport Tooltip from '../tooltip';\n\nimport { ButtonDropdownProps } from '../interfaces';\nimport { getItemTarget } from '../utils/utils';\nimport useHiddenDescription from '../utils/use-hidden-description';\nimport InternalIcon, { InternalIconProps } from '../../icon/internal';\nimport { useDropdownContext } from '../../internal/components/dropdown/context';\nimport { getMenuItemProps } from '../utils/menu-item';\n\nconst ItemElement = ({\n  item,\n  disabled,\n  onItemActivate,\n  highlighted,\n  highlightItem,\n  first = false,\n  last,\n  hasCategoryHeader,\n  isKeyboardHighlighted = false,\n  variant = 'normal',\n}: ItemProps) => {\n  const isLink = isLinkItem(item);\n  const onClick = (event: React.MouseEvent) => {\n    // Stop propagation to parent node and handle event exclusively in here. This ensures\n    // that no group will interfere with the default behavior of links\n    event.stopPropagation();\n    if (!isLink) {\n      event.preventDefault();\n    }\n    if (!disabled) {\n      onItemActivate(item, event);\n    }\n  };\n\n  const onHover = (event: React.SyntheticEvent) => {\n    event.preventDefault();\n    highlightItem(item);\n  };\n\n  return (\n    <li\n      className={clsx(styles['item-element'], styles[`variant-${variant}`], {\n        [styles.highlighted]: highlighted,\n        [styles.disabled]: disabled,\n        [styles.first]: first,\n        [styles.last]: last,\n        [styles['has-category-header']]: hasCategoryHeader,\n        [styles['is-focused']]: isKeyboardHighlighted,\n      })}\n      role=\"presentation\"\n      data-testid={item.id}\n      data-description={item.description}\n      onClick={onClick}\n      onMouseEnter={onHover}\n      onTouchStart={onHover}\n    >\n      <MenuItem item={item} disabled={disabled} highlighted={highlighted} />\n    </li>\n  );\n};\n\ninterface MenuItemProps {\n  item: ButtonDropdownProps.Item;\n  disabled: boolean;\n  highlighted: boolean;\n}\n\nfunction MenuItem({ item, disabled, highlighted }: MenuItemProps) {\n  const menuItemRef = useRef<(HTMLSpanElement & HTMLAnchorElement) | null>(null);\n\n  useEffect(() => {\n    if (highlighted && menuItemRef.current) {\n      menuItemRef.current.focus();\n    }\n  }, [highlighted]);\n\n  const isDisabledWithReason = disabled && item.disabledReason;\n  const { targetProps, descriptionEl } = useHiddenDescription(item.disabledReason);\n  const menuItemProps: React.HTMLAttributes<HTMLSpanElement & HTMLAnchorElement> = {\n    className: styles['menu-item'],\n    lang: item.lang,\n    ref: menuItemRef,\n    // We are using the roving tabindex technique to manage the focus state of the dropdown.\n    // The current element will always have tabindex=0 which means that it can be tabbed to,\n    // while all other items have tabindex=-1 so we can focus them when necessary.\n    tabIndex: highlighted ? 0 : -1,\n    ...getMenuItemProps({ disabled }),\n    ...(isDisabledWithReason ? targetProps : {}),\n  };\n\n  const menuItem = isLinkItem(item) ? (\n    <a\n      {...menuItemProps}\n      href={!disabled ? item.href : undefined}\n      target={getItemTarget(item)}\n      rel={item.external ? 'noopener noreferrer' : undefined}\n    >\n      <MenuItemContent item={item} disabled={disabled} />\n    </a>\n  ) : (\n    <span {...menuItemProps}>\n      <MenuItemContent item={item} disabled={disabled} />\n    </span>\n  );\n\n  const { position } = useDropdownContext();\n  const tooltipPosition = position === 'bottom-left' || position === 'top-left' ? 'left' : 'right';\n  return isDisabledWithReason ? (\n    <Tooltip content={item.disabledReason} position={tooltipPosition}>\n      {menuItem}\n      {descriptionEl}\n    </Tooltip>\n  ) : (\n    menuItem\n  );\n}\n\nconst MenuItemContent = ({ item, disabled }: { item: ButtonDropdownProps.Item; disabled: boolean }) => {\n  const hasIcon = !!(item.iconName || item.iconUrl || item.iconSvg);\n  const hasExternal = isLinkItem(item) && item.external;\n  return (\n    <>\n      {hasIcon && <MenuItemIcon name={item.iconName} url={item.iconUrl} svg={item.iconSvg} alt={item.iconAlt} />}{' '}\n      {item.text} {hasExternal && <ExternalIcon disabled={disabled} ariaLabel={item.externalIconAriaLabel} />}\n    </>\n  );\n};\n\nconst MenuItemIcon = (props: InternalIconProps) => (\n  <span className={styles.icon}>\n    <InternalIcon {...props} />\n  </span>\n);\n\nconst ExternalIcon = ({ disabled, ariaLabel }: { disabled: boolean; ariaLabel?: string }) => {\n  const icon = <InternalIcon variant={disabled ? 'disabled' : 'normal'} name=\"external\" />;\n  return (\n    <span className={styles['external-icon']} role={ariaLabel ? 'img' : undefined} aria-label={ariaLabel}>\n      {icon}\n    </span>\n  );\n};\n\nexport default ItemElement;\n","\n    import './styles.scoped.css';\n    export default {\n  \"header\": \"awsui_header_16mm3_9deb9_93\",\n  \"disabled\": \"awsui_disabled_16mm3_9deb9_108\",\n  \"expandable-header\": \"awsui_expandable-header_16mm3_9deb9_112\",\n  \"rolled-down\": \"awsui_rolled-down_16mm3_9deb9_123\",\n  \"highlighted\": \"awsui_highlighted_16mm3_9deb9_126\",\n  \"is-focused\": \"awsui_is-focused_16mm3_9deb9_139\",\n  \"variant-navigation\": \"awsui_variant-navigation_16mm3_9deb9_143\",\n  \"category\": \"awsui_category_16mm3_9deb9_155\",\n  \"expandable\": \"awsui_expandable_16mm3_9deb9_112\",\n  \"expand-icon\": \"awsui_expand-icon_16mm3_9deb9_176\",\n  \"expand-icon-up\": \"awsui_expand-icon-up_16mm3_9deb9_183\",\n  \"expand-icon-right\": \"awsui_expand-icon-right_16mm3_9deb9_186\",\n  \"items-list-container\": \"awsui_items-list-container_16mm3_9deb9_200\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\n\nimport InternalIcon from '../../icon/internal';\nimport ItemsList from '../items-list';\nimport Dropdown from '../../internal/components/dropdown';\nimport { CategoryProps } from '../interfaces';\nimport useHiddenDescription from '../utils/use-hidden-description';\nimport Tooltip from '../tooltip.js';\nimport { getMenuItemProps } from '../utils/menu-item';\n\nconst ExpandableCategoryElement = ({\n  item,\n  onItemActivate,\n  onGroupToggle,\n  targetItem,\n  isHighlighted,\n  isKeyboardHighlight,\n  isExpanded,\n  highlightItem,\n  disabled,\n  expandToViewport,\n  variant,\n}: CategoryProps) => {\n  const highlighted = isHighlighted(item);\n  const expanded = isExpanded(item);\n  const isKeyboardHighlighted = isKeyboardHighlight(item);\n  const triggerRef = React.useRef<HTMLSpanElement>(null);\n  const ref = useRef<HTMLLIElement>(null);\n\n  useEffect(() => {\n    if (triggerRef.current && highlighted && !expanded) {\n      triggerRef.current.focus();\n    }\n  }, [expanded, highlighted]);\n\n  const onClick: React.MouseEventHandler = event => {\n    if (!disabled) {\n      event.preventDefault();\n      onGroupToggle(item, event);\n      triggerRef.current?.focus();\n    }\n  };\n\n  const onHover = (event: React.SyntheticEvent) => {\n    event.preventDefault();\n    highlightItem(item);\n  };\n\n  const isDisabledWithReason = !!item.disabledReason && item.disabled;\n  const { targetProps, descriptionEl } = useHiddenDescription(item.disabledReason);\n  const trigger = item.text && (\n    <span\n      className={clsx(styles.header, styles['expandable-header'], styles[`variant-${variant}`], {\n        [styles.disabled]: disabled,\n        [styles.highlighted]: highlighted,\n        [styles['is-focused']]: isKeyboardHighlighted,\n      })}\n      // We are using the roving tabindex technique to manage the focus state of the dropdown.\n      // The current element will always have tabindex=0 which means that it can be tabbed to,\n      // while all other items have tabindex=-1 so we can focus them when necessary.\n      tabIndex={highlighted ? 0 : -1}\n      ref={triggerRef}\n      {...getMenuItemProps({ parent: true, expanded, disabled })}\n      {...(isDisabledWithReason ? targetProps : {})}\n    >\n      {item.text}\n      <span className={clsx(styles['expand-icon'], styles['expand-icon-right'])}>\n        <InternalIcon name=\"caret-down-filled\" />\n      </span>\n    </span>\n  );\n\n  let content: React.ReactNode;\n  // If the category element is disabled, we do not render a dropdown.\n  // Screenreaders are confused by additional sections\n  if (isDisabledWithReason) {\n    content = (\n      <Tooltip content={item.disabledReason}>\n        {trigger}\n        {descriptionEl}\n      </Tooltip>\n    );\n  } else if (disabled) {\n    content = trigger;\n  } else {\n    content = (\n      <Dropdown\n        open={expanded}\n        stretchWidth={false}\n        interior={true}\n        expandToViewport={expandToViewport}\n        trigger={trigger}\n      >\n        {item.items && expanded && (\n          <ul role=\"menu\" aria-label={item.text} className={clsx(styles['items-list-container'])}>\n            <ItemsList\n              items={item.items}\n              onItemActivate={onItemActivate}\n              onGroupToggle={onGroupToggle}\n              targetItem={targetItem}\n              isHighlighted={isHighlighted}\n              isKeyboardHighlight={isKeyboardHighlight}\n              isExpanded={isExpanded}\n              highlightItem={highlightItem}\n              variant={variant}\n            />\n          </ul>\n        )}\n      </Dropdown>\n    );\n  }\n\n  return (\n    <li\n      className={clsx(styles.category, styles[`variant-${variant}`], styles.expandable, {\n        [styles.expanded]: expanded,\n        [styles.disabled]: disabled,\n        [styles.highlighted]: highlighted,\n      })}\n      role=\"presentation\"\n      data-testid={item.id}\n      ref={ref}\n      onClick={onClick}\n      onMouseEnter={onHover}\n      onTouchStart={onHover}\n    >\n      {content}\n    </li>\n  );\n};\n\nexport default ExpandableCategoryElement;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { CategoryProps } from '../interfaces';\nimport React from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport ItemsList from '../items-list';\n\nconst CategoryElement = ({\n  item,\n  onItemActivate,\n  onGroupToggle,\n  targetItem,\n  isHighlighted,\n  isKeyboardHighlight,\n  isExpanded,\n  highlightItem,\n  disabled,\n  variant,\n}: CategoryProps) => {\n  // Hide the category title element from screen readers because it will be\n  // provided as an ARIA label.\n  return (\n    <li\n      className={clsx(styles.category, styles[`variant-${variant}`], disabled && styles.disabled)}\n      role=\"presentation\"\n      aria-disabled={disabled ? 'true' : undefined}\n    >\n      {item.text && (\n        <p className={clsx(styles.header, { [styles.disabled]: disabled })} aria-hidden=\"true\">\n          {item.text}\n        </p>\n      )}\n      <ul className={clsx(styles['items-list-container'])} role=\"group\" aria-label={item.text}>\n        {item.items && (\n          <ItemsList\n            items={item.items}\n            onItemActivate={onItemActivate}\n            onGroupToggle={onGroupToggle}\n            targetItem={targetItem}\n            isHighlighted={isHighlighted}\n            isKeyboardHighlight={isKeyboardHighlight}\n            isExpanded={isExpanded}\n            highlightItem={highlightItem}\n            categoryDisabled={disabled}\n            hasCategoryHeader={!!item.text}\n            variant={variant}\n          />\n        )}\n      </ul>\n    </li>\n  );\n};\n\nexport default CategoryElement;\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_14cnr_4y745_93\",\n  \"trigger\": \"awsui_trigger_14cnr_4y745_108\",\n  \"dropdown\": \"awsui_dropdown_14cnr_4y745_111\",\n  \"nowrap\": \"awsui_nowrap_14cnr_4y745_122\",\n  \"open\": \"awsui_open_14cnr_4y745_125\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\n\nexport interface MobileExpandableGroupProps {\n  /**\n   * Trigger element.\n   */\n  trigger: React.ReactNode;\n  /**\n   * mobile expandable groups content elements.\n   */\n  children?: React.ReactNode;\n  /**\n   * Open state of the mobile expandable groups.\n   */\n  open?: boolean;\n}\n\nconst MobileExpandableGroup = ({ children, trigger, open }: MobileExpandableGroupProps) => {\n  return (\n    <div className={clsx(styles.root)}>\n      <div className={styles.trigger}>{trigger}</div>\n      <div className={clsx(styles.dropdown, { [styles.open]: open })} data-open={open}>\n        {children}\n      </div>\n    </div>\n  );\n};\n\nexport default MobileExpandableGroup;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect } from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\n\nimport InternalIcon from '../../icon/internal';\nimport ItemsList from '../items-list';\nimport MobileExpandableGroup from '../mobile-expandable-group/mobile-expandable-group';\nimport { CategoryProps } from '../interfaces';\nimport Tooltip from '../tooltip.js';\nimport useHiddenDescription from '../utils/use-hidden-description.js';\nimport { getMenuItemProps } from '../utils/menu-item.js';\n\nconst MobileExpandableCategoryElement = ({\n  item,\n  onItemActivate,\n  onGroupToggle,\n  targetItem,\n  isHighlighted,\n  isKeyboardHighlight,\n  isExpanded,\n  highlightItem,\n  disabled,\n  variant,\n}: CategoryProps) => {\n  const highlighted = isHighlighted(item);\n  const expanded = isExpanded(item);\n  const isKeyboardHighlighted = isKeyboardHighlight(item);\n  const triggerRef = React.useRef<HTMLSpanElement>(null);\n\n  useEffect(() => {\n    if (triggerRef.current && highlighted && !expanded) {\n      triggerRef.current.focus();\n    }\n  }, [expanded, highlighted]);\n\n  const onClick = (e: React.MouseEvent) => {\n    if (!disabled) {\n      e.preventDefault();\n      onGroupToggle(item, e);\n    }\n  };\n\n  const onHover = (event: React.SyntheticEvent) => {\n    event.preventDefault();\n    highlightItem(item);\n  };\n\n  const isDisabledWithReason = !!item.disabledReason && item.disabled;\n  const { targetProps, descriptionEl } = useHiddenDescription(item.disabledReason);\n  const trigger = item.text && (\n    <span\n      className={clsx(styles.header, styles['expandable-header'], styles[`variant-${variant}`], {\n        [styles.highlighted]: highlighted,\n        [styles['rolled-down']]: expanded,\n        [styles.disabled]: disabled,\n        [styles['is-focused']]: isKeyboardHighlighted,\n      })}\n      // We are using the roving tabindex technique to manage the focus state of the dropdown.\n      // The current element will always have tabindex=0 which means that it can be tabbed to,\n      // while all other items have tabindex=-1 so we can focus them when necessary.\n      tabIndex={highlighted ? 0 : -1}\n      ref={triggerRef}\n      {...getMenuItemProps({ parent: true, disabled, expanded })}\n      {...(isDisabledWithReason ? targetProps : {})}\n    >\n      {item.text}\n      <span\n        className={clsx(styles['expand-icon'], {\n          [styles['expand-icon-up']]: expanded,\n        })}\n      >\n        <InternalIcon name=\"caret-down-filled\" />\n      </span>\n    </span>\n  );\n\n  let content: React.ReactNode;\n\n  if (isDisabledWithReason) {\n    content = (\n      <>\n        {descriptionEl}\n        <Tooltip content={item.disabledReason}>{trigger}</Tooltip>\n      </>\n    );\n  } else if (disabled) {\n    content = trigger;\n  } else {\n    content = (\n      <MobileExpandableGroup open={expanded} trigger={trigger}>\n        {item.items && expanded && (\n          <ul role=\"menu\" aria-label={item.text} className={clsx(styles['items-list-container'])}>\n            <ItemsList\n              items={item.items}\n              onItemActivate={onItemActivate}\n              onGroupToggle={onGroupToggle}\n              targetItem={targetItem}\n              isHighlighted={isHighlighted}\n              isKeyboardHighlight={isKeyboardHighlight}\n              isExpanded={isExpanded}\n              highlightItem={highlightItem}\n              hasCategoryHeader={true}\n              variant={variant}\n            />\n          </ul>\n        )}\n      </MobileExpandableGroup>\n    );\n  }\n\n  return (\n    <li\n      className={clsx(styles.category, styles[`variant-${variant}`], styles.expandable, {\n        [styles.expanded]: expanded,\n        [styles.disabled]: disabled,\n        [styles.highlighted]: highlighted || expanded,\n        [styles.expandable]: true,\n      })}\n      role=\"presentation\"\n      onClick={onClick}\n      onMouseEnter={onHover}\n      onTouchStart={onHover}\n      data-testid={item.id}\n    >\n      {content}\n    </li>\n  );\n};\n\nexport default MobileExpandableCategoryElement;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { ItemListProps } from './interfaces';\nimport ItemElement from './item-element';\nimport ExpandableCategoryElement from './category-elements/expandable-category-element';\nimport CategoryElement from './category-elements/category-element';\nimport { isItemGroup } from './utils/utils';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport MobileExpandableCategoryElement from './category-elements/mobile-expandable-category-element';\n\nexport default function ItemsList({\n  items,\n  onItemActivate,\n  onGroupToggle,\n  targetItem,\n  isHighlighted,\n  isKeyboardHighlight,\n  isExpanded,\n  highlightItem,\n  categoryDisabled = false,\n  hasExpandableGroups = false,\n  hasCategoryHeader = false,\n  expandToViewport = false,\n  variant = 'normal',\n}: ItemListProps) {\n  const isMobile = useMobile();\n\n  const elements = items.map((item, index) => {\n    if (!isItemGroup(item)) {\n      return (\n        <ItemElement\n          key={index}\n          item={item}\n          onItemActivate={onItemActivate}\n          disabled={item.disabled ?? categoryDisabled}\n          highlighted={isHighlighted(item)}\n          isKeyboardHighlighted={isKeyboardHighlight(item)}\n          highlightItem={highlightItem}\n          first={index === 0 || isItemGroup(items[index - 1])}\n          last={index === items.length - 1 || isItemGroup(items[index + 1])}\n          hasCategoryHeader={hasCategoryHeader}\n          variant={variant}\n        />\n      );\n    }\n    if (hasExpandableGroups) {\n      return item.text ? (\n        isMobile ? (\n          <MobileExpandableCategoryElement\n            key={index}\n            item={item}\n            onItemActivate={onItemActivate}\n            onGroupToggle={onGroupToggle}\n            targetItem={targetItem}\n            isHighlighted={isHighlighted}\n            isKeyboardHighlight={isKeyboardHighlight}\n            isExpanded={isExpanded}\n            highlightItem={highlightItem}\n            disabled={item.disabled ?? false}\n            variant={variant}\n          />\n        ) : (\n          <ExpandableCategoryElement\n            key={index}\n            item={item}\n            onItemActivate={onItemActivate}\n            onGroupToggle={onGroupToggle}\n            targetItem={targetItem}\n            isHighlighted={isHighlighted}\n            isKeyboardHighlight={isKeyboardHighlight}\n            isExpanded={isExpanded}\n            highlightItem={highlightItem}\n            disabled={item.disabled ?? false}\n            expandToViewport={expandToViewport}\n            variant={variant}\n          />\n        )\n      ) : null;\n    }\n    return (\n      <CategoryElement\n        key={index}\n        item={item}\n        onItemActivate={onItemActivate}\n        onGroupToggle={onGroupToggle}\n        targetItem={targetItem}\n        isHighlighted={isHighlighted}\n        isKeyboardHighlight={isKeyboardHighlight}\n        isExpanded={isExpanded}\n        highlightItem={highlightItem}\n        disabled={item.disabled ?? false}\n        variant={variant}\n      />\n    );\n  });\n\n  return <>{elements}</>;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isItemGroup } from './utils';\nimport { ButtonDropdownProps } from '../interfaces';\n\n// The function turns a tree of items into a structure optimized for lookup of\n// items and corresponding indices as well as iteration on indices in the given order.\n\n// As trees are multidimensional, the index is represented as an array\nexport type TreeIndex = number[];\n\ninterface ItemsTreeApi {\n  // Returns an item for the given tree index or null if not found\n  getItem: (index: TreeIndex) => ButtonDropdownProps.ItemOrGroup | null;\n  // Returns the tree index of the given item. The item must be present\n  // in the tree (referential comparison), or an error will be thrown\n  getItemIndex: (item: ButtonDropdownProps.ItemOrGroup) => TreeIndex;\n  // Returns the index of next or previous sequential node or null if out of bounds\n  getSequentialIndex: (index: TreeIndex, direction: -1 | 1) => TreeIndex | null;\n  // Returns parent tree index of a given item or null if no parent is present\n  getParentIndex: (item: ButtonDropdownProps.ItemOrGroup) => TreeIndex | null;\n}\n\nexport default function createItemsTree(items: ButtonDropdownProps.Items): ItemsTreeApi {\n  const itemToIndex = new Map<ButtonDropdownProps.ItemOrGroup, string>();\n  const indexToItem = new Map<string, ButtonDropdownProps.ItemOrGroup>();\n  const flatIndices: string[] = [];\n\n  traverseItems(items, (item, index) => {\n    const indexKey = stringifyIndex(index);\n    itemToIndex.set(item, indexKey);\n    indexToItem.set(indexKey, item);\n    flatIndices.push(indexKey);\n  });\n\n  return {\n    getItem: (index: TreeIndex): ButtonDropdownProps.ItemOrGroup | null => {\n      const indexKey = stringifyIndex(index);\n\n      return indexToItem.get(indexKey) || null;\n    },\n    getItemIndex: (item: ButtonDropdownProps.ItemOrGroup): TreeIndex => {\n      const indexKey = itemToIndex.get(item);\n\n      if (!indexKey) {\n        throw new Error('Invariant violation: item is not found.');\n      }\n\n      return parseIndex(indexKey);\n    },\n    getSequentialIndex: (index: TreeIndex, direction: -1 | 1): TreeIndex | null => {\n      const indexKey = stringifyIndex(index);\n      const position = flatIndices.indexOf(indexKey);\n\n      const nextIndexKey = flatIndices[position + direction];\n\n      if (!nextIndexKey) {\n        return null;\n      }\n\n      return parseIndex(nextIndexKey);\n    },\n    getParentIndex: (item: ButtonDropdownProps.ItemOrGroup): TreeIndex | null => {\n      const indexKey = itemToIndex.get(item);\n\n      if (!indexKey) {\n        throw new Error('Invariant violation: item is not found.');\n      }\n\n      const index = parseIndex(indexKey);\n\n      // No parent\n      if (index.length === 1) {\n        return null;\n      }\n\n      return index.slice(0, index.length - 1);\n    },\n  };\n}\n\nfunction traverseItems(\n  items: ButtonDropdownProps.Items,\n  act: (item: ButtonDropdownProps.ItemOrGroup, index: TreeIndex) => void,\n  parentIndex: TreeIndex = []\n) {\n  items.forEach((item, index) => {\n    const itemIndex = [...parentIndex, index];\n    act(item, itemIndex);\n\n    if (isItemGroup(item)) {\n      traverseItems(item.items, act, itemIndex);\n    }\n  });\n}\n\nfunction stringifyIndex(index: TreeIndex): string {\n  return index.join('-');\n}\n\nfunction parseIndex(index: string): TreeIndex {\n  return index.split('-').map(it => parseInt(it));\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isItemGroup, indexEquals } from './utils';\nimport { ButtonDropdownProps } from '../interfaces';\nimport { TreeIndex } from './create-items-tree';\n\n// While every menu item except the edge ones have successors and predecessors,\n// there are rules determining what items are eligible for highlighting for the\n// given set of conditions. The function implements all these rules.\n\ninterface MoveHighlightProps {\n  startIndex: TreeIndex;\n  expandedIndex: TreeIndex;\n  getNext: (index: TreeIndex) => {\n    index: TreeIndex;\n    item: ButtonDropdownProps.ItemOrGroup;\n    parent?: ButtonDropdownProps.ItemOrGroup;\n  } | null;\n  hasExpandableGroups: boolean;\n  isInRestrictedView: boolean;\n}\n\nexport default function moveHighlight({\n  startIndex,\n  expandedIndex,\n  getNext,\n  hasExpandableGroups,\n  isInRestrictedView,\n}: MoveHighlightProps): TreeIndex | null {\n  const tryMove = (currentIndex: TreeIndex): TreeIndex | null => {\n    const next = getNext(currentIndex);\n\n    if (!next) {\n      return null;\n    }\n\n    // Prevents stepping into disabled expandable groups. However,\n    // it's possible to navigate nested groups.\n    if (next.parent?.disabled && hasExpandableGroups) {\n      return tryMove(next.index);\n    }\n\n    // it is not allowed to highlight groups when non-expandable\n    if (isItemGroup(next.item) && !hasExpandableGroups) {\n      return tryMove(next.index);\n    }\n\n    // can only move within same parent unless is in restricted view\n    if (hasExpandableGroups && !isInRestrictedView && !isSameParent(startIndex, next.index)) {\n      return tryMove(next.index);\n    }\n\n    // in restricted view can only navigate to children if group is expanded\n    if (\n      hasExpandableGroups &&\n      isInRestrictedView &&\n      !isSameLevel(next.index, expandedIndex) &&\n      !isIncluded(expandedIndex, next.index)\n    ) {\n      return tryMove(next.index);\n    }\n\n    return next.index;\n  };\n\n  return tryMove(startIndex);\n}\n\nfunction isSameParent(left: TreeIndex, right: TreeIndex) {\n  return indexEquals(left.slice(0, -1), right.slice(0, -1));\n}\n\nfunction isSameLevel(left: TreeIndex, right: TreeIndex) {\n  return left.length === right.length;\n}\n\nfunction isIncluded(parent: TreeIndex, child: TreeIndex) {\n  return indexEquals(parent, child.slice(0, -1));\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { useOpenState } from '../../internal/components/options-list/utils/use-open-state';\nimport { ButtonDropdownProps, ButtonDropdownSettings, GroupToggle, HighlightProps, ItemActivate } from '../interfaces';\nimport { fireCancelableEvent, CancelableEventHandler, isPlainLeftClick } from '../../internal/events';\nimport { KeyCode } from '../../internal/keycode';\nimport { getItemTarget, isItemGroup, isLinkItem } from './utils';\nimport useHighlightedMenu from './use-highlighted-menu';\n\ninterface UseButtonDropdownOptions extends ButtonDropdownSettings {\n  items: ButtonDropdownProps.Items;\n  onItemClick?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;\n  onItemFollow?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;\n  onReturnFocus: () => void;\n  expandToViewport?: boolean;\n}\n\ninterface UseButtonDropdownApi extends HighlightProps {\n  isOpen: boolean;\n  onKeyDown: (event: React.KeyboardEvent) => void;\n  onKeyUp: (event: React.KeyboardEvent) => void;\n  onItemActivate: ItemActivate;\n  onGroupToggle: GroupToggle;\n  toggleDropdown: (options?: { moveHighlightOnOpen?: boolean }) => void;\n  setIsUsingMouse: (isUsingMouse: boolean) => void;\n}\n\nexport function useButtonDropdown({\n  items,\n  onItemClick,\n  onItemFollow,\n  onReturnFocus,\n  hasExpandableGroups,\n  isInRestrictedView = false,\n  expandToViewport = false,\n}: UseButtonDropdownOptions): UseButtonDropdownApi {\n  const {\n    targetItem,\n    isHighlighted,\n    isKeyboardHighlight,\n    isExpanded,\n    highlightItem,\n    moveHighlight,\n    expandGroup,\n    collapseGroup,\n    reset,\n    setIsUsingMouse,\n  } = useHighlightedMenu({\n    items,\n    hasExpandableGroups,\n    isInRestrictedView,\n  });\n\n  const { isOpen, closeDropdown, ...openStateProps } = useOpenState({ onClose: reset });\n  const toggleDropdown = (options: { moveHighlightOnOpen?: boolean } = {}) => {\n    const moveHighlightOnOpen = options.moveHighlightOnOpen ?? true;\n    if (!isOpen && moveHighlightOnOpen) {\n      moveHighlight(1);\n    }\n    openStateProps.toggleDropdown();\n  };\n\n  const onGroupToggle: GroupToggle = item => (!isExpanded(item) ? expandGroup(item) : collapseGroup());\n\n  const onItemActivate: ItemActivate = (item, event) => {\n    const details = {\n      id: item.id || 'undefined',\n      href: item.href,\n      external: item.external,\n      target: getItemTarget(item),\n    };\n    if (onItemFollow && item.href && isPlainLeftClick(event)) {\n      fireCancelableEvent(onItemFollow, details, event);\n    }\n    if (onItemClick) {\n      fireCancelableEvent(onItemClick, details, event);\n    }\n    onReturnFocus();\n    closeDropdown();\n  };\n\n  const doVerticalNavigation = (direction: -1 | 1) => {\n    if (isOpen) {\n      moveHighlight(direction);\n    }\n  };\n\n  const openAndSelectFirst = (event: React.KeyboardEvent) => {\n    toggleDropdown();\n    event.preventDefault();\n  };\n\n  const actOnParentDropdown = (event: React.KeyboardEvent) => {\n    // if there is no highlighted item we act on the trigger by opening or closing dropdown\n    if (!targetItem) {\n      if (isOpen && !isInRestrictedView) {\n        toggleDropdown();\n      } else {\n        openAndSelectFirst(event);\n      }\n    } else {\n      if (isItemGroup(targetItem)) {\n        onGroupToggle(targetItem, event);\n      } else {\n        onItemActivate(targetItem, event);\n      }\n    }\n  };\n\n  const activate = (event: React.KeyboardEvent, isEnter?: boolean) => {\n    setIsUsingMouse(false);\n\n    // if item is a link we rely on default behavior of an anchor, no need to prevent\n    if (targetItem && isLinkItem(targetItem) && isEnter) {\n      return;\n    }\n\n    event.preventDefault();\n    actOnParentDropdown(event);\n  };\n\n  const onKeyDown = (event: React.KeyboardEvent) => {\n    setIsUsingMouse(false);\n    switch (event.keyCode) {\n      case KeyCode.down: {\n        doVerticalNavigation(1);\n        event.preventDefault();\n        break;\n      }\n      case KeyCode.up: {\n        doVerticalNavigation(-1);\n        event.preventDefault();\n        break;\n      }\n      case KeyCode.space: {\n        // Prevent scrolling the list of items and highlighting the trigger\n        event.preventDefault();\n        break;\n      }\n      case KeyCode.enter: {\n        if (!targetItem?.disabled) {\n          activate(event, true);\n        }\n        break;\n      }\n      case KeyCode.left:\n      case KeyCode.right: {\n        if (targetItem && !targetItem.disabled && isItemGroup(targetItem) && !isExpanded(targetItem)) {\n          expandGroup();\n        } else if (hasExpandableGroups) {\n          collapseGroup();\n        }\n\n        event.preventDefault();\n        break;\n      }\n      case KeyCode.escape: {\n        onReturnFocus();\n        closeDropdown();\n        event.preventDefault();\n        break;\n      }\n      case KeyCode.tab: {\n        // When expanded to viewport the focus can't move naturally to the next element.\n        // Returning the focus to the trigger instead.\n        if (expandToViewport) {\n          onReturnFocus();\n        }\n        closeDropdown();\n        break;\n      }\n    }\n  };\n  const onKeyUp = (event: React.KeyboardEvent) => {\n    // We need to handle activating items with Space separately because there is a bug\n    // in Firefox where changing the focus during a Space keydown event it will trigger\n    // unexpected click events on the new element: https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n    if (event.keyCode === KeyCode.space && !targetItem?.disabled) {\n      activate(event);\n    }\n  };\n\n  return {\n    isOpen,\n    targetItem,\n    isHighlighted,\n    isKeyboardHighlight,\n    isExpanded,\n    highlightItem,\n    onKeyDown,\n    onKeyUp,\n    onItemActivate,\n    onGroupToggle,\n    toggleDropdown,\n    setIsUsingMouse,\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useState, useMemo, useCallback } from 'react';\n\nimport { indexIncludes, indexEquals } from './utils';\nimport { ButtonDropdownProps, HighlightProps } from '../interfaces';\nimport createItemsTree, { TreeIndex } from './create-items-tree';\nimport moveHighlightOneStep from './move-highlight';\n\ninterface UseHighlightedMenuOptions {\n  items: ButtonDropdownProps.Items;\n  hasExpandableGroups: boolean;\n  isInRestrictedView?: boolean;\n}\n\ninterface UseHighlightedMenuApi extends HighlightProps {\n  moveHighlight: (direction: -1 | 1) => void;\n  expandGroup: (group?: ButtonDropdownProps.ItemGroup) => void;\n  collapseGroup: () => void;\n  reset: () => void;\n  setIsUsingMouse: (isUsingMouse: boolean) => void;\n}\n\nexport default function useHighlightedMenu({\n  items,\n  hasExpandableGroups,\n  isInRestrictedView = false,\n}: UseHighlightedMenuOptions): UseHighlightedMenuApi {\n  const [targetIndex, setTargetIndex] = useState<TreeIndex>([]);\n  const [expandedIndex, setExpandedIndex] = useState<TreeIndex>([]);\n  const [isUsingMouse, setIsUsingMouse] = useState<boolean>(true);\n\n  const { getItem, getItemIndex, getSequentialIndex, getParentIndex } = useMemo(() => createItemsTree(items), [items]);\n\n  const targetItem = useMemo(() => getItem(targetIndex), [targetIndex, getItem]);\n\n  const isHighlighted = useCallback(\n    (item: ButtonDropdownProps.ItemOrGroup) => {\n      const index = getItemIndex(item);\n      return indexIncludes(index, targetIndex);\n    },\n    [targetIndex, getItemIndex]\n  );\n\n  // check if keyboard focus is on the element\n  const isKeyboardHighlight = useCallback(\n    (item: ButtonDropdownProps.ItemOrGroup) => {\n      const index = getItemIndex(item);\n      return !isUsingMouse && indexEquals(index, targetIndex);\n    },\n    [targetIndex, getItemIndex, isUsingMouse]\n  );\n\n  const isExpanded = useCallback(\n    (group: ButtonDropdownProps.ItemGroup) => {\n      const index = getItemIndex(group);\n\n      return indexIncludes(index, expandedIndex);\n    },\n    [expandedIndex, getItemIndex]\n  );\n\n  const moveHighlight = useCallback(\n    (direction: -1 | 1) => {\n      const getNext = (index: TreeIndex) => {\n        const nextIndex = getSequentialIndex(index, direction);\n        const item = getItem(nextIndex || [-1]);\n\n        if (!nextIndex || !item) {\n          return null;\n        }\n\n        const parentIndex = getParentIndex(item);\n        const parentItem = parentIndex && getItem(parentIndex);\n\n        return { index: nextIndex, item, parent: parentItem || undefined };\n      };\n\n      const nextIndex = moveHighlightOneStep({\n        startIndex: targetIndex,\n        expandedIndex,\n        getNext,\n        hasExpandableGroups,\n        isInRestrictedView,\n      });\n\n      if (nextIndex) {\n        setTargetIndex(nextIndex);\n      }\n    },\n    [targetIndex, expandedIndex, getItem, getSequentialIndex, getParentIndex, hasExpandableGroups, isInRestrictedView]\n  );\n\n  const highlightItem = useCallback(\n    (item: ButtonDropdownProps.ItemOrGroup) => {\n      setTargetIndex(getItemIndex(item));\n    },\n    [getItemIndex]\n  );\n\n  const expandGroup = useCallback(\n    (group?: ButtonDropdownProps.ItemGroup) => {\n      const groupIndex = group ? getItemIndex(group) : targetIndex;\n      const firstChildIndex = [...groupIndex, 0];\n\n      // move to the first child item unless in restricted mode\n      setTargetIndex(isInRestrictedView ? groupIndex : firstChildIndex);\n      setExpandedIndex(groupIndex);\n    },\n    [targetIndex, getItemIndex, isInRestrictedView]\n  );\n\n  const collapseGroup = useCallback(() => {\n    if (expandedIndex.length > 0) {\n      setTargetIndex(expandedIndex);\n      setExpandedIndex(expandedIndex.slice(0, -1));\n    }\n  }, [expandedIndex]);\n\n  const reset = useCallback(() => {\n    setTargetIndex([]);\n    setExpandedIndex([]);\n  }, []);\n\n  return {\n    targetItem,\n    isHighlighted,\n    isKeyboardHighlight,\n    isExpanded,\n    moveHighlight,\n    highlightItem,\n    expandGroup,\n    collapseGroup,\n    reset,\n    setIsUsingMouse,\n  };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef } from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { ButtonDropdownProps, InternalButtonDropdownProps } from './interfaces';\nimport { getBaseProps } from '../internal/base-component';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport Dropdown from '../internal/components/dropdown';\nimport ItemsList from './items-list';\nimport { useButtonDropdown } from './utils/use-button-dropdown';\nimport OptionsList from '../internal/components/options-list';\nimport { InternalButton } from '../button/internal';\nimport { ButtonProps } from '../button/interfaces';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport InternalBox from '../box/internal';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\n\nconst InternalButtonDropdown = React.forwardRef(\n  (\n    {\n      items,\n      variant = 'normal',\n      loading = false,\n      loadingText,\n      disabled = false,\n      expandableGroups = false,\n      children,\n      onItemClick,\n      onItemFollow,\n      customTriggerBuilder,\n      expandToViewport,\n      ariaLabel,\n      title,\n      description,\n      preferCenter,\n      __internalRootRef,\n      ...props\n    }: InternalButtonDropdownProps,\n    ref: React.Ref<ButtonDropdownProps.Ref>\n  ) => {\n    const isInRestrictedView = useMobile();\n    const dropdownId = useUniqueId('dropdown');\n    for (const item of items) {\n      checkSafeUrl('ButtonDropdown', item.href);\n    }\n\n    const {\n      isOpen,\n      targetItem,\n      isHighlighted,\n      isKeyboardHighlight,\n      isExpanded,\n      highlightItem,\n      onKeyDown,\n      onKeyUp,\n      onItemActivate,\n      onGroupToggle,\n      toggleDropdown,\n      setIsUsingMouse,\n    } = useButtonDropdown({\n      items,\n      onItemClick,\n      onItemFollow,\n      onReturnFocus: () => dropdownRef.current?.focus(),\n      expandToViewport,\n      hasExpandableGroups: expandableGroups,\n      isInRestrictedView,\n    });\n\n    const handleMouseEvent = () => {\n      setIsUsingMouse(true);\n    };\n\n    const baseProps = getBaseProps(props);\n\n    const dropdownRef = useRef<HTMLElement>(null);\n\n    useForwardFocus(ref, dropdownRef);\n\n    const clickHandler = () => {\n      if (!loading && !disabled) {\n        // Prevent moving highlight on mobiles to avoid disabled state reason popup if defined.\n        toggleDropdown({ moveHighlightOnOpen: !isInRestrictedView });\n      }\n    };\n\n    const canBeOpened = !loading && !disabled;\n\n    const triggerVariant = variant === 'navigation' ? undefined : variant;\n    const iconProps: Partial<ButtonProps & { __iconClass?: string }> =\n      variant === 'icon'\n        ? {\n            iconName: 'ellipsis',\n          }\n        : {\n            iconName: 'caret-down-filled',\n            iconAlign: 'right',\n            __iconClass: canBeOpened && isOpen ? styles['rotate-up'] : styles['rotate-down'],\n          };\n\n    const trigger = customTriggerBuilder ? (\n      customTriggerBuilder(clickHandler, dropdownRef, disabled, isOpen, ariaLabel)\n    ) : (\n      <InternalButton\n        ref={dropdownRef}\n        {...iconProps}\n        variant={triggerVariant}\n        loading={loading}\n        loadingText={loadingText}\n        disabled={disabled}\n        onClick={(event: Event) => {\n          event.preventDefault();\n          clickHandler();\n        }}\n        ariaLabel={ariaLabel}\n        aria-haspopup={true}\n        ariaExpanded={canBeOpened && isOpen}\n        formAction=\"none\"\n      >\n        {children}\n      </InternalButton>\n    );\n\n    const hasHeader = title || description;\n    const headerId = useUniqueId('awsui-button-dropdown__header');\n\n    return (\n      <div\n        {...baseProps}\n        onKeyDown={onKeyDown}\n        onKeyUp={onKeyUp}\n        onMouseDown={handleMouseEvent}\n        onMouseMove={handleMouseEvent}\n        className={clsx(styles['button-dropdown'], styles[`variant-${variant}`], baseProps.className)}\n        aria-owns={expandToViewport && isOpen ? dropdownId : undefined}\n        ref={__internalRootRef}\n      >\n        <Dropdown\n          open={canBeOpened && isOpen}\n          stretchWidth={false}\n          stretchTriggerHeight={variant === 'navigation'}\n          expandToViewport={expandToViewport}\n          preferCenter={preferCenter}\n          onDropdownClose={() => toggleDropdown()}\n          trigger={trigger}\n          dropdownId={dropdownId}\n        >\n          {hasHeader && (\n            <div className={styles.header} id={headerId}>\n              {title && (\n                <div className={styles.title}>\n                  <InternalBox\n                    fontSize=\"heading-s\"\n                    fontWeight=\"bold\"\n                    color=\"inherit\"\n                    tagOverride=\"h2\"\n                    margin={{ vertical: 'n', horizontal: 'n' }}\n                  >\n                    {title}\n                  </InternalBox>\n                </div>\n              )}\n              {description && (\n                <InternalBox fontSize=\"body-s\">\n                  <span className={styles.description}>{description}</span>\n                </InternalBox>\n              )}\n            </div>\n          )}\n          <OptionsList\n            open={canBeOpened && isOpen}\n            position=\"static\"\n            role=\"menu\"\n            decreaseTopMargin={true}\n            ariaLabelledby={hasHeader ? headerId : undefined}\n            statusType=\"finished\"\n          >\n            <ItemsList\n              items={items}\n              onItemActivate={onItemActivate}\n              onGroupToggle={onGroupToggle}\n              hasExpandableGroups={expandableGroups}\n              targetItem={targetItem}\n              isHighlighted={isHighlighted}\n              isKeyboardHighlight={isKeyboardHighlight}\n              isExpanded={isExpanded}\n              highlightItem={highlightItem}\n              expandToViewport={expandToViewport}\n              variant={variant}\n            />\n          </OptionsList>\n        </Dropdown>\n      </div>\n    );\n  }\n);\n\nexport default InternalButtonDropdown;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { ButtonDropdownProps } from './interfaces';\nimport InternalButtonDropdown from './internal';\nimport { getBaseProps } from '../internal/base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { ButtonDropdownProps };\n\nconst ButtonDropdown = React.forwardRef(\n  (\n    {\n      items,\n      variant = 'normal',\n      loading = false,\n      loadingText,\n      disabled = false,\n      expandableGroups = false,\n      expandToViewport = false,\n      ariaLabel,\n      children,\n      onItemClick,\n      onItemFollow,\n      ...props\n    }: ButtonDropdownProps,\n    ref: React.Ref<ButtonDropdownProps.Ref>\n  ) => {\n    const baseComponentProps = useBaseComponent('ButtonDropdown');\n    const baseProps = getBaseProps(props);\n    return (\n      <InternalButtonDropdown\n        {...baseProps}\n        {...baseComponentProps}\n        ref={ref}\n        items={items}\n        variant={variant}\n        loading={loading}\n        loadingText={loadingText}\n        disabled={disabled}\n        expandableGroups={expandableGroups}\n        expandToViewport={expandToViewport}\n        ariaLabel={ariaLabel}\n        onItemClick={onItemClick}\n        onItemFollow={onItemFollow}\n      >\n        {children}\n      </InternalButtonDropdown>\n    );\n  }\n);\n\napplyDisplayName(ButtonDropdown, 'ButtonDropdown');\nexport default ButtonDropdown;\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_1sdq3_qway9_93\",\n  \"input\": \"awsui_input_1sdq3_qway9_109\",\n  \"results\": \"awsui_results_1sdq3_qway9_113\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React from 'react';\nimport styles from './styles.css.js';\nimport LiveRegion from '../internal/components/live-region';\n\n// Debounce delay for live region (based on testing with VoiceOver)\nconst LIVE_REGION_DELAY = 2000;\n\ninterface SearchResultsProps {\n  id: string;\n  children: string;\n}\n\nexport function SearchResults({ id, children }: SearchResultsProps) {\n  return (\n    <span className={styles.results}>\n      <LiveRegion delay={LIVE_REGION_DELAY} visible={true}>\n        <span id={id}>{children}</span>\n      </LiveRegion>\n    </span>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useRef } from 'react';\nimport InternalInput from '../input/internal';\nimport { getBaseProps } from '../internal/base-component';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport styles from './styles.css.js';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { TextFilterProps } from './interfaces';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { SearchResults } from './search-results';\n\ntype InternalTextFilterProps = TextFilterProps & InternalBaseComponentProps;\n\nconst InternalTextFilter = React.forwardRef(\n  (\n    {\n      filteringText,\n      filteringAriaLabel,\n      filteringPlaceholder,\n      filteringClearAriaLabel,\n      disabled,\n      countText,\n      onChange,\n      onDelayedChange,\n      __internalRootRef,\n      ...rest\n    }: InternalTextFilterProps,\n    ref: React.Ref<TextFilterProps.Ref>\n  ) => {\n    const baseProps = getBaseProps(rest);\n    const inputRef = useRef<HTMLInputElement>(null);\n    useForwardFocus(ref, inputRef);\n\n    const searchResultsId = useUniqueId('text-filter-search-results');\n    const showResults = filteringText && countText && !disabled;\n\n    return (\n      <div {...baseProps} className={clsx(baseProps.className, styles.root)} ref={__internalRootRef}>\n        <InternalInput\n          ref={inputRef}\n          className={styles.input}\n          type=\"search\"\n          ariaLabel={filteringAriaLabel}\n          placeholder={filteringPlaceholder}\n          value={filteringText}\n          disabled={disabled}\n          autoComplete={false}\n          ariaDescribedby={showResults ? searchResultsId : undefined}\n          clearAriaLabel={filteringClearAriaLabel}\n          onChange={event => fireNonCancelableEvent(onChange, { filteringText: event.detail.value })}\n          __onDelayedInput={event => fireNonCancelableEvent(onDelayedChange, { filteringText: event.detail.value })}\n        />\n        {showResults ? <SearchResults id={searchResultsId}>{countText}</SearchResults> : null}\n      </div>\n    );\n  }\n);\n\nexport default InternalTextFilter;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { TextFilterProps } from './interfaces';\nimport InternalTextFilter from './internal';\n\nexport { TextFilterProps };\n\nconst TextFilter = React.forwardRef((props: TextFilterProps, ref: React.Ref<TextFilterProps.Ref>) => {\n  const baseComponentProps = useBaseComponent('TextFilter');\n  return <InternalTextFilter {...props} {...baseComponentProps} ref={ref} />;\n});\n\napplyDisplayName(TextFilter, 'TextFilter');\nexport default TextFilter;\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_fvjdu_39qva_93\",\n  \"button\": \"awsui_button_fvjdu_39qva_113\",\n  \"dots\": \"awsui_dots_fvjdu_39qva_114\",\n  \"button-disabled\": \"awsui_button-disabled_fvjdu_39qva_136\",\n  \"arrow\": \"awsui_arrow_fvjdu_39qva_141\",\n  \"page-number\": \"awsui_page-number_fvjdu_39qva_151\",\n  \"button-current\": \"awsui_button-current_fvjdu_39qva_157\",\n  \"page-item\": \"awsui_page-item_fvjdu_39qva_174\",\n  \"root-disabled\": \"awsui_root-disabled_fvjdu_39qva_190\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport InternalIcon from '../icon/internal';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { getBaseProps } from '../internal/base-component';\nimport styles from './styles.css.js';\nimport { getPaginationState, range } from './utils';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { PaginationProps } from './interfaces';\nimport { useInternalI18n } from '../internal/i18n/context';\n\nconst defaultAriaLabels: Required<PaginationProps.Labels> = {\n  nextPageLabel: '',\n  paginationLabel: '',\n  previousPageLabel: '',\n  pageLabel: pageNumber => `${pageNumber}`,\n};\n\ninterface PageButtonProps {\n  className?: string;\n  ariaLabel: string;\n  disabled?: boolean;\n  pageIndex: number;\n  isCurrent?: boolean;\n  children?: React.ReactNode;\n  onClick: (requestedIndex: number) => void;\n}\n\nfunction PageButton({\n  className,\n  ariaLabel,\n  disabled,\n  pageIndex,\n  isCurrent = false,\n  children,\n  onClick,\n}: PageButtonProps) {\n  function handleClick(event: React.MouseEvent) {\n    event.preventDefault();\n    onClick(pageIndex);\n  }\n  return (\n    <li className={styles['page-item']}>\n      <button\n        className={clsx(\n          className,\n          styles.button,\n          disabled && styles['button-disabled'],\n          isCurrent && styles['button-current']\n        )}\n        type=\"button\"\n        aria-label={ariaLabel}\n        disabled={disabled}\n        onClick={handleClick}\n        aria-current={isCurrent}\n      >\n        {children}\n      </button>\n    </li>\n  );\n}\n\nfunction PageNumber({ pageIndex, ...rest }: PageButtonProps) {\n  return (\n    <PageButton className={styles['page-number']} pageIndex={pageIndex} {...rest}>\n      {pageIndex}\n    </PageButton>\n  );\n}\n\ntype InternalPaginationProps = PaginationProps & InternalBaseComponentProps;\n\nexport default function InternalPagination({\n  openEnd,\n  currentPageIndex,\n  ariaLabels,\n  pagesCount,\n  disabled,\n  onChange,\n  onNextPageClick,\n  onPreviousPageClick,\n  __internalRootRef = null,\n  ...rest\n}: InternalPaginationProps) {\n  const baseProps = getBaseProps(rest);\n  const { leftDots, leftIndex, rightIndex, rightDots } = getPaginationState(currentPageIndex, pagesCount, openEnd);\n\n  const i18n = useInternalI18n('pagination');\n\n  const nextPageLabel = i18n('ariaLabels.nextPageLabel', ariaLabels?.nextPageLabel) ?? defaultAriaLabels.nextPageLabel;\n  const paginationLabel =\n    i18n('ariaLabels.paginationLabel', ariaLabels?.paginationLabel) ?? defaultAriaLabels.paginationLabel;\n  const previousPageLabel =\n    i18n('ariaLabels.previousPageLabel', ariaLabels?.previousPageLabel) ?? defaultAriaLabels.previousPageLabel;\n  const pageNumberLabelFn =\n    i18n('ariaLabels.pageLabel', ariaLabels?.pageLabel, format => pageNumber => format({ pageNumber })) ??\n    defaultAriaLabels.pageLabel;\n\n  function handlePrevPageClick(requestedPageIndex: number) {\n    handlePageClick(requestedPageIndex);\n    fireNonCancelableEvent(onPreviousPageClick, {\n      requestedPageAvailable: true,\n      requestedPageIndex: requestedPageIndex,\n    });\n  }\n\n  function handleNextPageClick(requestedPageIndex: number) {\n    handlePageClick(requestedPageIndex);\n    fireNonCancelableEvent(onNextPageClick, {\n      requestedPageAvailable: currentPageIndex < pagesCount,\n      requestedPageIndex: requestedPageIndex,\n    });\n  }\n\n  function handlePageClick(requestedPageIndex: number) {\n    fireNonCancelableEvent(onChange, { currentPageIndex: requestedPageIndex });\n  }\n\n  return (\n    <ul\n      aria-label={paginationLabel}\n      {...baseProps}\n      className={clsx(baseProps.className, styles.root, disabled && styles['root-disabled'])}\n      ref={__internalRootRef}\n    >\n      <PageButton\n        className={styles.arrow}\n        pageIndex={currentPageIndex - 1}\n        ariaLabel={previousPageLabel ?? defaultAriaLabels.nextPageLabel}\n        disabled={disabled || currentPageIndex === 1}\n        onClick={handlePrevPageClick}\n      >\n        <InternalIcon name=\"angle-left\" variant={disabled ? 'disabled' : 'normal'} />\n      </PageButton>\n      <PageNumber\n        pageIndex={1}\n        isCurrent={currentPageIndex === 1}\n        disabled={disabled}\n        ariaLabel={pageNumberLabelFn(1)}\n        onClick={handlePageClick}\n      />\n      {leftDots && <li className={styles.dots}>...</li>}\n      {range(leftIndex, rightIndex).map(pageIndex => (\n        <PageNumber\n          key={pageIndex}\n          isCurrent={currentPageIndex === pageIndex}\n          pageIndex={pageIndex}\n          disabled={disabled}\n          ariaLabel={pageNumberLabelFn(pageIndex)}\n          onClick={handlePageClick}\n        />\n      ))}\n      {rightDots && <li className={styles.dots}>...</li>}\n      {!openEnd && pagesCount > 1 && (\n        <PageNumber\n          isCurrent={currentPageIndex === pagesCount}\n          pageIndex={pagesCount}\n          disabled={disabled}\n          ariaLabel={pageNumberLabelFn(pagesCount)}\n          onClick={handlePageClick}\n        />\n      )}\n      <PageButton\n        className={styles.arrow}\n        pageIndex={currentPageIndex + 1}\n        ariaLabel={nextPageLabel ?? defaultAriaLabels.nextPageLabel}\n        disabled={disabled || (!openEnd && (pagesCount === 0 || currentPageIndex === pagesCount))}\n        onClick={handleNextPageClick}\n      >\n        <InternalIcon name=\"angle-right\" variant={disabled ? 'disabled' : 'normal'} />\n      </PageButton>\n    </ul>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// TODO [mjawors] _.range\nexport function range(from: number, to: number) {\n  const result = [];\n  for (let i = from; i <= to; i++) {\n    result.push(i);\n  }\n  return result;\n}\n\nexport function getPaginationState(currentPageIndex: number, totalPagesCount: number, isOpenEnd?: boolean) {\n  // Total number of elements handled here\n  const numberOfControls = 7;\n  // Max number of controls that can be displayed on the left and right hand side of the current page.\n  // Works only for odd numbers\n  const leftDelta = Math.floor(numberOfControls / 2);\n  let rightDelta = leftDelta;\n  // upper and lower limits for pages range\n  const lowerLimit = 2;\n  let upperLimit = totalPagesCount - 1;\n\n  if (isOpenEnd) {\n    rightDelta++;\n    upperLimit = totalPagesCount + 1;\n  }\n\n  // Left and right indices based on delta calculation\n  let leftIndex = currentPageIndex - leftDelta;\n  let rightIndex = currentPageIndex + rightDelta;\n\n  // adjust page indexes if page index is too small\n  if (leftIndex < lowerLimit) {\n    rightIndex += lowerLimit - leftIndex;\n    leftIndex = lowerLimit;\n  }\n\n  // adjust page indexes if page index is to big\n  if (rightIndex > upperLimit) {\n    leftIndex -= rightIndex - upperLimit;\n    rightIndex = upperLimit;\n  }\n\n  // adjust indexes one more time to avoid out of range errors\n  leftIndex = Math.max(leftIndex, 2);\n  rightIndex = Math.min(rightIndex, upperLimit);\n\n  // consider adding dots\n  const leftDots = leftIndex > 2;\n  const rightDots = isOpenEnd || rightIndex < upperLimit;\n\n  if (leftDots) {\n    leftIndex++;\n  }\n\n  if (rightDots) {\n    rightIndex--;\n  }\n\n  return { leftDots, rightDots, leftIndex, rightIndex };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { PaginationProps } from './interfaces';\nimport InternalPagination from './internal';\n\nexport { PaginationProps };\n\nexport default function Pagination(props: PaginationProps) {\n  const baseComponentProps = useBaseComponent('Pagination');\n  return <InternalPagination {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(Pagination, 'Pagination');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { ModalProps } from './interfaces';\nimport InternalModal from './internal';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { ModalProps };\n\nexport default function Modal({ size = 'medium', ...props }: ModalProps) {\n  const baseComponentProps = useBaseComponent('Modal');\n  return <InternalModal size={size} {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(Modal, 'Modal');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport InternalColumnLayout from './internal';\nimport { getExternalProps } from '../internal/utils/external-props';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { ColumnLayoutProps } from './interfaces';\n\nexport { ColumnLayoutProps };\n\nexport default function ColumnLayout({\n  columns = 1,\n  variant = 'default',\n  borders = 'none',\n  disableGutters = false,\n  ...props\n}: ColumnLayoutProps) {\n  const baseComponentProps = useBaseComponent('ColumnLayout');\n  const externalProps = getExternalProps(props);\n  return (\n    <InternalColumnLayout\n      columns={columns}\n      variant={variant}\n      borders={borders}\n      disableGutters={disableGutters}\n      {...externalProps}\n      {...baseComponentProps}\n    />\n  );\n}\n\napplyDisplayName(ColumnLayout, 'ColumnLayout');\n","function defaultFilteringFunction(item, filteringText, filteringFields) {\n    if (filteringText.length === 0) {\n        return true;\n    }\n    filteringFields = filteringFields || Object.keys(item);\n    var lowFilteringText = filteringText.toLowerCase();\n    return filteringFields.some(function (key) {\n        return String(item[key])\n            .toLowerCase()\n            .indexOf(lowFilteringText) > -1;\n    });\n}\nexport function filter(items, filteringText, _a) {\n    if (filteringText === void 0) { filteringText = ''; }\n    var _b = _a.filteringFunction, filteringFunction = _b === void 0 ? defaultFilteringFunction : _b, fields = _a.fields;\n    return items.filter(function (item) { return filteringFunction(item, filteringText, fields); });\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport function parseIsoDate(isoDate) {\n    if (typeof isoDate === 'string') {\n        if (isoDate.includes('T')) {\n            return new Date(isoDate);\n        }\n        else {\n            return new Date(isoDate + 'T00:00:00');\n        }\n    }\n    return new Date(NaN);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { parseIsoDate } from './parse-iso-date.js';\n/**\n * Compares dates up to a day.\n * @param date - item value as Date.\n * @param dateToCompare - token value as ISO8601 date string.\n * @returns diff in milliseconds between date and dateToCompare with a step of one day.\n */\nexport function compareDates(date, dateToCompare) {\n    if (date instanceof Date && typeof dateToCompare === 'string') {\n        return startOfDay(date).getTime() - startOfDay(parseIsoDate(dateToCompare)).getTime();\n    }\n    return NaN;\n}\n/**\n * Compares dates up to a millisecond.\n * @param date - item value as Date.\n * @param dateToCompare - token value as ISO8601 date string.\n * @returns diff in milliseconds between date and dateToCompare with a step of one millisecond.\n */\nexport function compareTimestamps(date, dateToCompare) {\n    if (date instanceof Date && typeof dateToCompare === 'string') {\n        return date.getTime() - parseIsoDate(dateToCompare).getTime();\n    }\n    return NaN;\n}\nfunction startOfDay(date) {\n    var copy = new Date(date.getTime());\n    copy.setHours(0, 0, 0, 0);\n    return copy;\n}\n","import { compareDates, compareTimestamps } from '../date-utils/compare-dates.js';\nvar filterUsingOperator = function (itemValue, tokenValue, _a) {\n    var operator = _a.operator, match = _a.match;\n    if (match === 'date' || match === 'datetime') {\n        var comparator = match === 'date' ? compareDates : compareTimestamps;\n        var comparisonResult = comparator(itemValue, tokenValue);\n        switch (operator) {\n            case '<':\n                return comparisonResult < 0;\n            case '<=':\n                return comparisonResult <= 0;\n            case '>':\n                return comparisonResult > 0;\n            case '>=':\n                return comparisonResult >= 0;\n            case '=':\n                return comparisonResult === 0;\n            case '!=':\n                return comparisonResult !== 0;\n            default:\n                return false;\n        }\n    }\n    else if (typeof match === 'function') {\n        return match(itemValue, tokenValue);\n    }\n    else if (match) {\n        throw new Error('Unsupported `operator.match` type given.');\n    }\n    switch (operator) {\n        case '<':\n            return itemValue < tokenValue;\n        case '<=':\n            return itemValue <= tokenValue;\n        case '>':\n            return itemValue > tokenValue;\n        case '>=':\n            return itemValue >= tokenValue;\n        case '=':\n            // eslint-disable-next-line eqeqeq\n            return itemValue == tokenValue;\n        case '!=':\n            // eslint-disable-next-line eqeqeq\n            return itemValue != tokenValue;\n        case ':':\n            return (itemValue + '').toLowerCase().indexOf((tokenValue + '').toLowerCase()) > -1;\n        case '!:':\n            return (itemValue + '').toLowerCase().indexOf((tokenValue + '').toLowerCase()) === -1;\n    }\n};\nfunction freeTextFilter(value, item, operator, filteringPropertiesMap) {\n    var matches = Object.keys(filteringPropertiesMap).some(function (propertyKey) {\n        var operators = filteringPropertiesMap[propertyKey].operators;\n        return (!!operators[operator] && filterUsingOperator(item[propertyKey], value, { operator: ':' }));\n    });\n    return operator === ':' ? matches : !matches;\n}\nfunction filterByToken(token, item, filteringPropertiesMap) {\n    if (token.propertyKey) {\n        // token refers to a unknown property or uses an unsupported operator\n        if (!(token.propertyKey in filteringPropertiesMap) ||\n            !(token.operator in filteringPropertiesMap[token.propertyKey].operators)) {\n            return false;\n        }\n        var operator = filteringPropertiesMap[token.propertyKey].operators[token.operator];\n        var itemValue = (operator === null || operator === void 0 ? void 0 : operator.match)\n            ? item[token.propertyKey]\n            : fixupFalsyValues(item[token.propertyKey]);\n        return filterUsingOperator(itemValue, token.value, operator !== null && operator !== void 0 ? operator : { operator: token.operator });\n    }\n    return freeTextFilter(token.value, item, token.operator, filteringPropertiesMap);\n}\nfunction defaultFilteringFunction(filteringPropertiesMap) {\n    return function (item, _a) {\n        var tokens = _a.tokens, operation = _a.operation;\n        var result = operation === 'and' ? true : !tokens.length;\n        for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n            var token = tokens_1[_i];\n            result =\n                operation === 'and'\n                    ? result && filterByToken(token, item, filteringPropertiesMap)\n                    : result || filterByToken(token, item, filteringPropertiesMap);\n        }\n        return result;\n    };\n}\nexport function propertyFilter(items, query, _a) {\n    var filteringFunction = _a.filteringFunction, filteringProperties = _a.filteringProperties;\n    var filteringPropertiesMap = filteringProperties.reduce(function (acc, _a) {\n        var _b;\n        var key = _a.key, operators = _a.operators, defaultOperator = _a.defaultOperator;\n        var operatorMap = (_b = {}, _b[defaultOperator !== null && defaultOperator !== void 0 ? defaultOperator : '='] = { operator: defaultOperator !== null && defaultOperator !== void 0 ? defaultOperator : '=' }, _b);\n        operators === null || operators === void 0 ? void 0 : operators.forEach(function (op) {\n            if (typeof op === 'string') {\n                operatorMap[op] = { operator: op };\n            }\n            else {\n                operatorMap[op.operator] = { operator: op.operator, match: op.match };\n            }\n        });\n        acc[key] = {\n            operators: operatorMap,\n        };\n        return acc;\n    }, {});\n    var filter = filteringFunction || defaultFilteringFunction(filteringPropertiesMap);\n    return items.filter(function (item) { return filter(item, query); });\n}\nexport var fixupFalsyValues = function (value) {\n    if (typeof value === 'boolean') {\n        return value + '';\n    }\n    if (value || value === 0) {\n        return value;\n    }\n    return '';\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar DEFAULT_PAGE_SIZE = 10;\nexport function paginate(items, currentPage, pageSize) {\n    if (pageSize === void 0) { pageSize = DEFAULT_PAGE_SIZE; }\n    return items.slice((currentPage - 1) * pageSize, currentPage * pageSize);\n}\nexport function normalizePageIndex(currentIndex, pagesCount) {\n    if (!currentIndex || currentIndex < 1 || currentIndex > pagesCount) {\n        return 1;\n    }\n    return currentIndex;\n}\nexport function getPagesCount(items, pageSize) {\n    if (pageSize === void 0) { pageSize = DEFAULT_PAGE_SIZE; }\n    return Math.ceil(items.length / pageSize);\n}\n","import { filter } from './filter.js';\nimport { propertyFilter } from './property-filter.js';\nimport { sort } from './sort.js';\nimport { getPagesCount, normalizePageIndex, paginate } from './paginate.js';\nexport function processItems(items, _a, _b) {\n    var filteringText = _a.filteringText, sortingState = _a.sortingState, currentPageIndex = _a.currentPageIndex, propertyFilteringQuery = _a.propertyFilteringQuery;\n    var filtering = _b.filtering, sorting = _b.sorting, pagination = _b.pagination, propertyFiltering = _b.propertyFiltering;\n    var result = items;\n    var pagesCount;\n    var actualPageIndex;\n    var filteredItemsCount;\n    if (propertyFiltering) {\n        result = propertyFilter(result, propertyFilteringQuery || { tokens: [], operation: 'and' }, propertyFiltering);\n        filteredItemsCount = result.length;\n    }\n    if (filtering) {\n        result = filter(result, filteringText, filtering);\n        filteredItemsCount = result.length;\n    }\n    if (sorting) {\n        result = sort(result, sortingState);\n    }\n    var allPageResult = result;\n    if (pagination) {\n        pagesCount = getPagesCount(result, pagination.pageSize);\n        actualPageIndex = normalizePageIndex(currentPageIndex, pagesCount);\n        result = paginate(result, actualPageIndex, pagination.pageSize);\n    }\n    return { items: result, allPageItems: allPageResult, pagesCount: pagesCount, filteredItemsCount: filteredItemsCount, actualPageIndex: actualPageIndex };\n}\nexport var getTrackableValue = function (trackBy, item) {\n    if (!trackBy) {\n        return item;\n    }\n    if (typeof trackBy === 'function') {\n        return trackBy(item);\n    }\n    return item[trackBy];\n};\nexport var processSelectedItems = function (items, selectedItems, trackBy) {\n    var selectedSet = new Set();\n    selectedItems.forEach(function (item) { return selectedSet.add(getTrackableValue(trackBy, item)); });\n    return items.filter(function (item) { return selectedSet.has(getTrackableValue(trackBy, item)); });\n};\nexport var itemsAreEqual = function (items1, items2, trackBy) {\n    if (items1.length !== items2.length) {\n        return false;\n    }\n    var set1 = new Set();\n    items1.forEach(function (item) { return set1.add(getTrackableValue(trackBy, item)); });\n    return items2.every(function (item) { return set1.has(getTrackableValue(trackBy, item)); });\n};\n","function getSorter(sortingField) {\n    return function (row1, row2) {\n        var _a, _b;\n        // Use empty string as a default value, because it works well to compare with both strings and numbers:\n        // Every number can be casted to a string, but not every string can be casted to a meaningful number,\n        // sometimes it is NaN.\n        var value1 = (_a = row1[sortingField]) !== null && _a !== void 0 ? _a : '';\n        var value2 = (_b = row2[sortingField]) !== null && _b !== void 0 ? _b : '';\n        if (typeof value1 === 'string' && typeof value2 === 'string') {\n            return value1.localeCompare(value2);\n        }\n        // use loose comparison to handle inconsistent data types\n        // eslint-disable-next-line eqeqeq\n        return value1 < value2 ? -1 : value1 == value2 ? 0 : 1;\n    };\n}\nexport function sort(items, state) {\n    if (!state) {\n        return items;\n    }\n    var sortingColumn = state.sortingColumn;\n    var comparator = 'sortingComparator' in sortingColumn\n        ? sortingColumn.sortingComparator\n        : sortingColumn.sortingField\n            ? getSorter(sortingColumn.sortingField)\n            : undefined;\n    if (!comparator) {\n        return items;\n    }\n    var sorted = items.slice();\n    var direction = state.isDescending ? -1 : 1;\n    sorted.sort(function (a, b) { return comparator(a, b) * direction; });\n    return sorted;\n}\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport { fixupFalsyValues } from './operations/property-filter.js';\nexport function collectionReducer(state, action) {\n    var newState = __assign({}, state);\n    switch (action.type) {\n        case 'selection':\n            newState.selectedItems = action.selectedItems;\n            break;\n        case 'filtering':\n            newState.currentPageIndex = 1;\n            newState.filteringText = action.filteringText;\n            break;\n        case 'sorting':\n            newState.currentPageIndex = 1;\n            newState.sortingState = action.sortingState;\n            break;\n        case 'pagination':\n            newState.currentPageIndex = action.pageIndex;\n            break;\n        case 'property-filtering':\n            newState.currentPageIndex = 1;\n            newState.propertyFilteringQuery = action.query;\n            break;\n    }\n    return newState;\n}\nexport function createActions(_a) {\n    var dispatch = _a.dispatch, collectionRef = _a.collectionRef;\n    return {\n        setFiltering: function (filteringText) {\n            dispatch({ type: 'filtering', filteringText: filteringText });\n            collectionRef.current && collectionRef.current.scrollToTop();\n        },\n        setSorting: function (state) {\n            dispatch({ type: 'sorting', sortingState: state });\n            collectionRef.current && collectionRef.current.scrollToTop();\n        },\n        setCurrentPage: function (pageIndex) {\n            dispatch({ type: 'pagination', pageIndex: pageIndex });\n            collectionRef.current && collectionRef.current.scrollToTop();\n        },\n        setSelectedItems: function (selectedItems) {\n            dispatch({ type: 'selection', selectedItems: selectedItems });\n        },\n        setPropertyFiltering: function (query) {\n            dispatch({ type: 'property-filtering', query: query });\n            collectionRef.current && collectionRef.current.scrollToTop();\n        },\n    };\n}\nexport function createSyncProps(options, _a, actions, collectionRef, _b) {\n    var _c, _d;\n    var filteringText = _a.filteringText, sortingState = _a.sortingState, selectedItems = _a.selectedItems, currentPageIndex = _a.currentPageIndex, propertyFilteringQuery = _a.propertyFilteringQuery;\n    var pagesCount = _b.pagesCount, actualPageIndex = _b.actualPageIndex, allItems = _b.allItems, allPageItems = _b.allPageItems;\n    var empty = options.filtering\n        ? allItems.length\n            ? options.filtering.noMatch\n            : options.filtering.empty\n        : null;\n    empty = options.propertyFiltering\n        ? allItems.length\n            ? options.propertyFiltering.noMatch\n            : options.propertyFiltering.empty\n        : empty;\n    var filteringOptions = options.propertyFiltering\n        ? options.propertyFiltering.filteringProperties.reduce(function (acc, property) {\n            Object.keys(allItems.reduce(function (acc, item) {\n                acc['' + fixupFalsyValues(item[property.key])] = true;\n                return acc;\n            }, {})).forEach(function (value) {\n                if (value !== '') {\n                    acc.push({\n                        propertyKey: property.key,\n                        value: value,\n                    });\n                }\n            });\n            return acc;\n        }, [])\n        : [];\n    return {\n        collectionProps: __assign(__assign(__assign(__assign({ empty: empty }, (options.sorting\n            ? {\n                onSortingChange: function (_a) {\n                    var detail = _a.detail;\n                    actions.setSorting(detail);\n                },\n                sortingColumn: sortingState === null || sortingState === void 0 ? void 0 : sortingState.sortingColumn,\n                sortingDescending: sortingState === null || sortingState === void 0 ? void 0 : sortingState.isDescending,\n            }\n            : {})), (options.selection\n            ? {\n                onSelectionChange: function (_a) {\n                    var selectedItems = _a.detail.selectedItems;\n                    actions.setSelectedItems(selectedItems);\n                },\n                selectedItems: selectedItems,\n                trackBy: options.selection.trackBy,\n            }\n            : {})), { ref: collectionRef }), (((_c = options.pagination) === null || _c === void 0 ? void 0 : _c.pageSize)\n            ? {\n                totalItemsCount: allPageItems.length,\n                firstIndex: ((actualPageIndex !== null && actualPageIndex !== void 0 ? actualPageIndex : currentPageIndex) - 1) * options.pagination.pageSize + 1,\n            }\n            : {})),\n        filterProps: {\n            filteringText: filteringText,\n            onChange: function (_a) {\n                var filteringText = _a.detail.filteringText;\n                actions.setFiltering(filteringText);\n            },\n        },\n        propertyFilterProps: {\n            query: propertyFilteringQuery,\n            onChange: function (_a) {\n                var query = _a.detail;\n                actions.setPropertyFiltering(query);\n            },\n            filteringProperties: ((_d = options.propertyFiltering) === null || _d === void 0 ? void 0 : _d.filteringProperties) || [],\n            filteringOptions: filteringOptions,\n        },\n        paginationProps: {\n            currentPageIndex: actualPageIndex !== null && actualPageIndex !== void 0 ? actualPageIndex : currentPageIndex,\n            // pagesCount is always calculated when options.pagination is present\n            pagesCount: pagesCount,\n            onChange: function (_a) {\n                var currentPageIndex = _a.detail.currentPageIndex;\n                actions.setCurrentPage(currentPageIndex);\n            },\n        },\n    };\n}\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useRef } from 'react';\nimport { processItems, processSelectedItems, itemsAreEqual } from './operations/index.js';\nimport { createSyncProps } from './utils.js';\nimport { useCollectionState } from './use-collection-state.js';\nexport function useCollection(allItems, options) {\n    var collectionRef = useRef(null);\n    var _a = useCollectionState(options, collectionRef), state = _a[0], actions = _a[1];\n    var _b = processItems(allItems, state, options), items = _b.items, allPageItems = _b.allPageItems, pagesCount = _b.pagesCount, filteredItemsCount = _b.filteredItemsCount, actualPageIndex = _b.actualPageIndex;\n    if (options.selection && !options.selection.keepSelection) {\n        var newSelectedItems = processSelectedItems(items, state.selectedItems, options.selection.trackBy);\n        if (!itemsAreEqual(newSelectedItems, state.selectedItems, options.selection.trackBy)) {\n            // This is a recommended pattern for how to handle the state, dependent on the incoming props\n            // https://reactjs.org/docs/hooks-faq.html#how-do-i-implement-getderivedstatefromprops\n            actions.setSelectedItems(newSelectedItems);\n        }\n    }\n    return __assign({ items: items, allPageItems: allPageItems, filteredItemsCount: filteredItemsCount, actions: actions }, createSyncProps(options, state, actions, collectionRef, {\n        actualPageIndex: actualPageIndex,\n        pagesCount: pagesCount,\n        allItems: allItems,\n        allPageItems: allPageItems,\n    }));\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useReducer } from 'react';\nimport { createActions, collectionReducer } from './utils.js';\nexport function useCollectionState(options, collectionRef) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n    var _k = useReducer(collectionReducer, {\n        selectedItems: (_b = (_a = options.selection) === null || _a === void 0 ? void 0 : _a.defaultSelectedItems) !== null && _b !== void 0 ? _b : [],\n        sortingState: (_c = options.sorting) === null || _c === void 0 ? void 0 : _c.defaultState,\n        currentPageIndex: (_e = (_d = options.pagination) === null || _d === void 0 ? void 0 : _d.defaultPage) !== null && _e !== void 0 ? _e : 1,\n        filteringText: (_g = (_f = options.filtering) === null || _f === void 0 ? void 0 : _f.defaultFilteringText) !== null && _g !== void 0 ? _g : '',\n        propertyFilteringQuery: (_j = (_h = options.propertyFiltering) === null || _h === void 0 ? void 0 : _h.defaultQuery) !== null && _j !== void 0 ? _j : { tokens: [], operation: 'and' },\n    }), state = _k[0], dispatch = _k[1];\n    return [\n        state,\n        createActions({\n            dispatch: dispatch,\n            collectionRef: collectionRef,\n        }),\n    ];\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport InternalStatusIndicator, { StatusIndicatorProps } from './internal';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { StatusIndicatorProps };\n\nexport default function StatusIndicator({ type = 'success', wrapText = true, ...props }: StatusIndicatorProps) {\n  const baseComponentProps = useBaseComponent('StatusIndicator');\n  return <InternalStatusIndicator type={type} wrapText={wrapText} {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(StatusIndicator, 'StatusIndicator');\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React from \"react\";\nimport StatusIndicator from \"@awsui/components-react/status-indicator\";\n\nfunction Status(props) {\n  let status_type = \"\";\n\n  if (props.status === \"approved\") {\n    status_type = \"success\";\n  } else if (\n    props.status === \"rejected\" ||\n    props.status === \"revoked\" \n  ) {\n    status_type = \"error\";\n  } else if (props.status === \"pending\" || props.status === \"scheduled\") {\n    status_type = \"pending\";\n  } else if (props.status === \"error\") {\n    status_type = \"warning\";\n  } else if (props.status === \"in progress\") {\n    status_type = \"in-progress\";\n  } else if (props.status === \"expired\") {\n    status_type = \"stopped\";\n  } else if (props.status === \"cancelled\" || props.status === \"ended\") { \n    status_type = \"info\";\n  } else {\n    status_type = \"info\";\n  }\n\n  return <StatusIndicator type={status_type}>{props.status}</StatusIndicator>;\n}\n\nexport default Status;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useState, useEffect } from \"react\";\nimport {\n  Box,\n  Button,\n  Header,\n  Pagination,\n  Table,\n  TextFilter,\n  SpaceBetween,\n  CollectionPreferences,\n  Modal,\n  Textarea,\n  FormField,\n  ButtonDropdown,\n  ColumnLayout,\n} from \"@awsui/components-react\";\nimport { useCollection } from \"@awsui/collection-hooks\";\nimport { API, graphqlOperation } from \"aws-amplify\";\nimport {\n  onUpdateRequests,\n  onCreateRequests,\n} from \"../../graphql/subscriptions\";\nimport { updateStatus, sessions, getRequest, getSetting } from \"../Shared/RequestService\";\nimport { useHistory } from \"react-router-dom\";\nimport Status from \"../Shared/Status\";\nimport \"../../index.css\";\n\nconst COLUMN_DEFINITIONS = [\n  {\n    id: \"id\",\n    sortingField: \"id\",\n    header: \"Id\",\n    cell: (item) => item.id,\n    width: 50,\n  },\n  {\n    id: \"email\",\n    sortingField: \"email\",\n    header: \"Requester\",\n    cell: (item) => item.email,\n    minWidth: 160,\n  },\n  {\n    id: \"account\",\n    sortingField: \"account\",\n    header: \"Account\",\n    cell: (item) => item.accountName,\n    minWidth: 10,\n  },\n  {\n    id: \"role\",\n    sortingField: \"role\",\n    header: \"Role\",\n    cell: (item) => item.role,\n    minWidth: 10,\n  },\n  {\n    id: \"startTime\",\n    sortingField: \"startTime\",\n    header: \"StartTime\",\n    cell: (item) => item.startTime,\n    minWidth: 160,\n  },\n  {\n    id: \"duration\",\n    sortingField: \"duration\",\n    header: \"Duration\",\n    cell: (item) => `${item.duration} hours`,\n    maxWidth: 120,\n  },\n  {\n    id: \"justification\",\n    sortingField: \"justification\",\n    header: \"Justification\",\n    cell: (item) => item.justification,\n    maxWidth: 200,\n  },\n  {\n    id: \"ticketNo\",\n    sortingField: \"ticketNo\",\n    header: \"TicketNo\",\n    cell: (item) => item.ticketNo || \"-\",\n    minWidth: 10,\n  },\n  {\n    id: \"status\",\n    sortingField: \"status\",\n    header: \"Status\",\n    cell: (item) => <Status status={item.status} />,\n    minWidth: 10,\n  },\n];\n\nconst MyCollectionPreferences = ({ preferences, setPreferences }) => {\n  return (\n    <CollectionPreferences\n      title=\"Preferences\"\n      confirmLabel=\"Confirm\"\n      cancelLabel=\"Cancel\"\n      preferences={preferences}\n      onConfirm={({ detail }) => setPreferences(detail)}\n      pageSizePreference={{\n        title: \"Page size\",\n        options: [\n          { value: 10, label: \"10 Requests\" },\n          { value: 30, label: \"30 Requests\" },\n          { value: 50, label: \"50 Requests\" },\n        ],\n      }}\n      wrapLinesPreference={{\n        label: \"Wrap lines\",\n        description: \"Check to see all the text and wrap the lines\",\n      }}\n      visibleContentPreference={{\n        title: \"Select visible columns\",\n        options: [\n          {\n            label: \"Request properties\",\n            options: [\n              // { id: \"id\", label: \"Id\", editable: false },\n              { id: \"email\", label: \"Requester\" },\n              { id: \"account\", label: \"Account\" },\n              { id: \"role\", label: \"Role\" },\n              { id: \"duration\", label: \"Duration\" },\n              { id: \"startTime\", label: \"StartTime\" },\n              { id: \"justification\", label: \"Justification\" },\n              { id: \"ticketNo\", label: \"TicketNo\" },\n              { id: \"status\", label: \"Status\" },\n            ],\n          },\n        ],\n      }}\n    />\n  );\n};\n\nfunction EmptyState({ title, subtitle, action }) {\n  return (\n    <Box textAlign=\"center\">\n      <Box variant=\"strong\">{title}</Box>\n      <Box variant=\"p\" padding={{ bottom: \"s\" }}>\n        {subtitle}\n      </Box>\n      {action}\n    </Box>\n  );\n}\n\nconst ValueWithLabel = ({ label, children }) => (\n  <div>\n    <div className=\"headings\">\n      <Box color=\"inherit\" fontSize=\"body-m\">\n        {label}\n      </Box>\n    </div>\n    <div>{children}</div>\n  </div>\n);\n\nfunction Approvals(props) {\n  const [allItems, setAllItems] = useState([]);\n  const [preferences, setPreferences] = useState({\n    pageSize: 10,\n    visibleContent: [\n      // \"id\",\n      \"email\",\n      \"account\",\n      \"role\",\n      \"duration\",\n      \"startTime\",\n      \"justification\",\n      \"ticketNo\",\n      \"status\",\n    ],\n  });\n  const {\n    items,\n    actions,\n    filteredItemsCount,\n    collectionProps,\n    filterProps,\n    paginationProps,\n  } = useCollection(allItems, {\n    filtering: {\n      empty: (\n        <EmptyState\n          title=\"No approvals\"\n          subtitle=\"No approvals to display.\"\n          action={<Button onClick={handleView}>View all sessions</Button>}\n        />\n      ),\n      noMatch: (\n        <EmptyState\n          title=\"No matches\"\n          subtitle=\"Your search didn't return any records.\"\n          action={\n            <Button onClick={() => actions.setFiltering(\"\")}>\n              Clear filter\n            </Button>\n          }\n        />\n      ),\n    },\n    pagination: { pageSize: preferences.pageSize },\n    sorting: {},\n    selection: {},\n  });\n\n  const { selectedItems } = collectionProps;\n  const history = useHistory();\n  const [confirmLoading, setConfirmLoading] = useState(false);\n  const [refreshLoading, setRefreshLoading] = useState(false);\n  const [tableLoading, setTableLoading] = useState(true);\n  const [visible, setVisible] = useState(false);\n  const [action, setAction] = useState();\n  const [comment, setComment] = useState();\n  const [commentError, setCommentError] = useState();\n  const [modalHeader, setmodalHeader] = useState(\"TEAM\");\n  const [commentRequired, setCommentRequired] = useState(true);\n\n\n  useEffect(() => {\n    views();\n    props.addNotification([]);\n    approveEvent();\n    getSettings()\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  function views() {\n    let filter = {\n      and: [{ email: { ne: props.user } }, { status: { eq: \"pending\" } }, { approvers: { contains: props.user } }],\n    };\n    sessions(filter).then((items) => {\n      items.sort((a, b) => (a.createdAt < b.createdAt ? 1 : -1));\n      setAllItems(items);\n      setTableLoading(false);\n      setConfirmLoading(false);\n      setVisible(false);\n      setRefreshLoading(false);\n      setComment();\n    });\n  }\n  function getSettings(){\n    getSetting(\"settings\").then((data) => {\n      if (data !== null) {\n        setCommentRequired(data.comments);\n        if (data.approval) {\n          createEvent();\n        }\n        }\n      else {\n        createEvent();\n      }\n    });\n  }\n\n  function approveEvent() {\n    API.graphql(graphqlOperation(onUpdateRequests)).subscribe({\n      next: () => {\n        views();\n      },\n      error: (error) => console.warn(error),\n    });\n  }\n\n  function createEvent() {\n    API.graphql(graphqlOperation(onCreateRequests)).subscribe({\n      next: ({ value }) => {\n        views();\n      },\n      error: (error) => console.warn(error),\n    });\n  }\n\n  function handleView() {\n    history.push(\"/sessions/active\");\n    props.setActiveHref(\"/sessions/active\");\n  }\n\n  function handleSelect(data) {\n    setVisible(true);\n    setAction(data.detail.id);\n    data.detail.id === \"approved\"\n      ? setmodalHeader(\"Approve\")\n      : setmodalHeader(\"Reject\");\n  }\n\n  function handleRefresh() {\n    setRefreshLoading(true);\n    setTableLoading(true);\n    props.addNotification([]);\n    views();\n  }\n\n  function submit() {\n    setConfirmLoading(true);\n    getRequest(selectedItems[0].id).then((item) => {\n      if (item.status !== \"pending\") {\n        views();\n        props.addNotification([\n          {\n            type: \"info\",\n            content: `TEAM request expired or actioned by another approver`,\n            dismissible: true,\n            onDismiss: () => props.addNotification([]),\n          },\n        ]);\n      } else {\n        const data = {\n          id: selectedItems[0].id,\n          status: action,\n          comment: comment,\n        };\n        updateStatus(data).then(() => {\n          views();\n          props.addNotification([\n            {\n              type: \"success\",\n              content: `TEAM request ${action}`,\n              dismissible: true,\n              onDismiss: () => props.addNotification([]),\n            },\n          ]);\n        });\n      }\n    });\n  }\n\n  function handleAction() {\n    (!comment && commentRequired) || (comment && !(/[\\p{L}\\p{N}]/u.test(comment[0]))) ? setCommentError(\"Enter valid reason for approving or rejecting request\") : submit();\n  }\n\n  return (\n    <div className=\"container\">\n      <Table\n        {...collectionProps}\n        resizableColumns=\"true\"\n        loading={tableLoading}\n        loadingText=\"Fetching requests\"\n        header={\n          <Header\n            counter={\n              selectedItems.length\n                ? `(${selectedItems.length}/${allItems.length})`\n                : `(${allItems.length})`\n            }\n            actions={\n              <SpaceBetween size=\"s\" direction=\"horizontal\">\n                <Button\n                  iconName=\"refresh\"\n                  onClick={handleRefresh}\n                  loading={refreshLoading}\n                />\n\n                <ButtonDropdown\n                  items={[\n                    {\n                      text: \"Approve\",\n                      id: \"approved\",\n                      disabled: selectedItems.length === 0,\n                    },\n                    {\n                      text: \"Reject\",\n                      id: \"rejected\",\n                      disabled: selectedItems.length === 0,\n                    },\n                  ]}\n                  onItemClick={(props) => handleSelect(props)}\n                >\n                  Actions\n                </ButtonDropdown>\n                <Button\n                  disabled={selectedItems.length === 0}\n                  onClick={() => setVisible(true)}\n                >\n                  View details\n                </Button>\n              </SpaceBetween>\n            }\n            description=\"Approve or reject elevated access requests\"\n          >\n            Approval Requests\n          </Header>\n        }\n        filter={\n          <TextFilter\n            {...filterProps}\n            filteringPlaceholder=\"Find request...\"\n            countText={filteredItemsCount}\n          />\n        }\n        columnDefinitions={COLUMN_DEFINITIONS}\n        visibleColumns={preferences.visibleContent}\n        pagination={<Pagination {...paginationProps} />}\n        preferences={\n          <MyCollectionPreferences\n            preferences={preferences}\n            setPreferences={setPreferences}\n          />\n        }\n        items={items}\n        selectionType=\"single\"\n      />\n      <div>\n        {selectedItems.length ? (\n          <Modal\n            onDismiss={() => {\n              setVisible(false);\n              setAction(\"\");\n              setmodalHeader(\"PIM\");\n            }}\n            visible={visible}\n            closeAriaLabel=\"Close modal\"\n            size=\"large\"\n            footer={\n              <Box float=\"right\">\n                <SpaceBetween direction=\"horizontal\" size=\"xs\">\n                  <Button\n                    variant=\"link\"\n                    onClick={() => {\n                      setVisible(false);\n                      setAction(\"\");\n                      setmodalHeader(\"PIM\");\n                    }}\n                  >\n                    Cancel\n                  </Button>\n                  <>\n                    {action && (\n                      <Button\n                        variant=\"primary\"\n                        loading={confirmLoading}\n                        onClick={() => handleAction()}\n                      >\n                        Confirm\n                      </Button>\n                    )}\n                  </>\n                </SpaceBetween>\n              </Box>\n            }\n            header={`${modalHeader} Request`}\n          >\n            <SpaceBetween size=\"l\">\n              <ColumnLayout columns={3} variant=\"text-grid\">\n                <SpaceBetween size=\"l\">\n                  <ValueWithLabel\n                    label=\"Requester\"\n                    children={`${selectedItems[0].email}`}\n                  />\n                  <ValueWithLabel label=\"Status\">\n                    <Status status={selectedItems[0].status} />\n                  </ValueWithLabel>\n                </SpaceBetween>\n                <SpaceBetween size=\"l\">\n                  <ValueWithLabel\n                    label=\"Account\"\n                    children={`${selectedItems[0].accountName} (${selectedItems[0].accountId})`}\n                  />\n                  <ValueWithLabel\n                    label=\"Role\"\n                    children={`${selectedItems[0].role}`}\n                  />\n                  <ValueWithLabel\n                    label=\"Ticket no\"\n                    children={`${selectedItems[0].ticketNo}`}\n                  />\n                </SpaceBetween>\n                <SpaceBetween size=\"l\">\n                  <ValueWithLabel\n                    label=\"Start time\"\n                    children={`${selectedItems[0].startTime}`}\n                  />\n                  <ValueWithLabel\n                    label=\"Duration\"\n                    children={`${selectedItems[0].duration}`}\n                  />\n                  <ValueWithLabel\n                    label=\"Justification\"\n                    children={`${selectedItems[0].justification}`}\n                  />\n                </SpaceBetween>\n              </ColumnLayout>\n              <>\n                {action && (\n                  <FormField\n                    label=\"Comment\"\n                    stretch\n                    description=\"Reason for approving or rejecting elevated access request\"\n                    errorText={commentError}\n                  >\n                    <Textarea\n                      onChange={({ detail }) => {\n                        setCommentError();\n                        setComment(detail.value);\n                      }}\n                      value={comment}\n                    />\n                  </FormField>\n                )}\n              </>\n            </SpaceBetween>\n          </Modal>\n        ) : null}\n      </div>\n    </div>\n  );\n}\n\nexport default Approvals;\n","\n    import './styles.scoped.css';\n    export default {\n  \"text-content\": \"awsui_text-content_6absk_6tbs4_94\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport styles from './styles.css.js';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { TextContentProps } from './interfaces';\n\nexport { TextContentProps };\n\nexport default function TextContent({ children, ...props }: TextContentProps) {\n  const { __internalRootRef } = useBaseComponent('TextContent');\n  const baseProps = getBaseProps(props);\n\n  const className = clsx(baseProps.className, styles['text-content']);\n  return (\n    <div {...baseProps} className={className} ref={__internalRootRef}>\n      {children}\n    </div>\n  );\n}\n\napplyDisplayName(TextContent, 'TextContent');\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_dm8gx_8t7cc_97\",\n  \"has-items\": \"awsui_has-items_dm8gx_8t7cc_109\",\n  \"dismiss-button\": \"awsui_dismiss-button_dm8gx_8t7cc_113\",\n  \"token\": \"awsui_token_dm8gx_8t7cc_147\",\n  \"token-box\": \"awsui_token-box_dm8gx_8t7cc_154\",\n  \"token-box-error\": \"awsui_token-box-error_dm8gx_8t7cc_166\",\n  \"token-box-disabled\": \"awsui_token-box-disabled_dm8gx_8t7cc_177\"\n};\n  ","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_gfwv3_1hlfr_93\",\n  \"horizontal\": \"awsui_horizontal_gfwv3_1hlfr_98\",\n  \"vertical\": \"awsui_vertical_gfwv3_1hlfr_102\",\n  \"list\": \"awsui_list_gfwv3_1hlfr_106\",\n  \"list-item\": \"awsui_list-item_gfwv3_1hlfr_124\",\n  \"toggle-container-inline\": \"awsui_toggle-container-inline_gfwv3_1hlfr_129\",\n  \"toggle\": \"awsui_toggle_gfwv3_1hlfr_129\",\n  \"description\": \"awsui_description_gfwv3_1hlfr_197\",\n  \"separator\": \"awsui_separator_gfwv3_1hlfr_201\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useCallback } from 'react';\nimport InternalIcon from '../../../icon/internal';\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from '../../events';\nimport { I18nStrings } from './interfaces';\n\nimport styles from './styles.css.js';\nimport { useInternalI18n } from '../../i18n/context';\ninterface TokenLimitToggleProps {\n  controlId?: string;\n  allHidden: boolean;\n  expanded: boolean;\n  numberOfHiddenOptions: number;\n  onClick?: NonCancelableEventHandler<null>;\n  i18nStrings?: I18nStrings;\n}\n\nexport default function TokenLimitToggle({\n  controlId,\n  allHidden,\n  expanded,\n  numberOfHiddenOptions,\n  onClick,\n  i18nStrings = {},\n}: TokenLimitToggleProps) {\n  const i18n = useInternalI18n('token-group');\n\n  const numberOfHiddenOptionLabel = allHidden ? numberOfHiddenOptions : `+${numberOfHiddenOptions}`;\n  const description = expanded\n    ? i18n('i18nStrings.limitShowFewer', i18nStrings.limitShowFewer)\n    : `${i18n('i18nStrings.limitShowMore', i18nStrings.limitShowMore) || ''} (${numberOfHiddenOptionLabel})`;\n\n  const handleClick = useCallback(() => {\n    fireNonCancelableEvent(onClick, null);\n  }, [onClick]);\n\n  return (\n    <button\n      type=\"button\"\n      className={styles.toggle}\n      onClick={handleClick}\n      aria-controls={controlId}\n      aria-expanded={expanded}\n    >\n      <InternalIcon name={expanded ? 'treeview-collapse' : 'treeview-expand'} />\n      <span className={styles.description}>{description}</span>\n    </button>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useEffect, useRef } from 'react';\nimport { getFirstFocusable } from '../focus-lock/utils.js';\nimport styles from './styles.css.js';\n\nconst tokenSelector = `.${styles['list-item']}`;\nconst toggleButtonSelector = `.${styles.toggle}`;\n\nexport function useTokenFocusController({ removedItemIndex }: { removedItemIndex?: null | number }) {\n  const tokenListRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (removedItemIndex === undefined || removedItemIndex === null || tokenListRef.current === null) {\n      return;\n    }\n\n    const tokenElements = tokenListRef.current.querySelectorAll(tokenSelector);\n    const toggleButton = tokenListRef.current.querySelector(toggleButtonSelector);\n\n    const activeItemIndices: number[] = [];\n    for (let i = 0; i < tokenElements.length; i++) {\n      if (!tokenElements[i].querySelector('[aria-disabled=\"true\"]')) {\n        activeItemIndices.push(i);\n      }\n    }\n\n    let closestPrevIndex = Number.NEGATIVE_INFINITY;\n    let closestNextIndex = Number.POSITIVE_INFINITY;\n\n    for (const activeIndex of activeItemIndices) {\n      if (activeIndex < removedItemIndex) {\n        closestPrevIndex =\n          removedItemIndex - activeIndex < removedItemIndex - closestPrevIndex ? activeIndex : closestPrevIndex;\n      } else {\n        closestNextIndex =\n          activeIndex - removedItemIndex < closestNextIndex - removedItemIndex ? activeIndex : closestNextIndex;\n      }\n    }\n\n    const nextElement = tokenElements[closestNextIndex];\n    const prevElement = tokenElements[closestPrevIndex];\n\n    if (nextElement instanceof HTMLElement) {\n      getFirstFocusable(nextElement)?.focus();\n    } else if (prevElement instanceof HTMLElement) {\n      getFirstFocusable(prevElement)?.focus();\n    } else if (toggleButton instanceof HTMLElement) {\n      toggleButton.focus();\n    }\n  }, [removedItemIndex]);\n\n  return tokenListRef;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useState } from 'react';\n\nimport TokenLimitToggle from './token-limit-toggle';\nimport styles from './styles.css.js';\nimport { TokenListProps } from './interfaces';\nimport { useUniqueId } from '../../hooks/use-unique-id';\nimport clsx from 'clsx';\nimport { useTokenFocusController } from './token-focus-controller';\n\nexport default function TokenList<Item>({\n  items,\n  alignment,\n  renderItem,\n  limit,\n  after,\n  i18nStrings,\n  removedItemIndex,\n}: TokenListProps<Item>) {\n  const tokenListRef = useTokenFocusController({ removedItemIndex });\n  const controlId = useUniqueId();\n\n  const [expanded, setExpanded] = useState(false);\n  const hasItems = items.length > 0;\n  const hasHiddenItems = hasItems && limit !== undefined && items.length > limit;\n  const visibleItems = hasHiddenItems && !expanded ? items.slice(0, limit) : items;\n  const hasVisibleItems = visibleItems.length > 0;\n\n  const toggle = hasHiddenItems ? (\n    <div className={styles[`toggle-container-${alignment}`]}>\n      <TokenLimitToggle\n        controlId={hasVisibleItems ? controlId : undefined}\n        allHidden={limit === 0}\n        expanded={expanded}\n        numberOfHiddenOptions={items.length - visibleItems.length}\n        i18nStrings={i18nStrings}\n        onClick={() => setExpanded(!expanded)}\n      />\n    </div>\n  ) : null;\n\n  if (alignment === 'inline') {\n    return (\n      <div ref={tokenListRef} className={clsx(styles.root, styles.horizontal)}>\n        {hasItems && (\n          <ul id={controlId} className={styles.list}>\n            {visibleItems.map((item, itemIndex) => (\n              <li\n                key={itemIndex}\n                className={styles['list-item']}\n                aria-setsize={items.length}\n                aria-posinset={itemIndex + 1}\n              >\n                {renderItem(item, itemIndex)}\n              </li>\n            ))}\n          </ul>\n        )}\n        {toggle}\n        {after && <div className={styles.separator} />}\n        {after}\n      </div>\n    );\n  }\n\n  return (\n    <div ref={tokenListRef} className={clsx(styles.root, styles.vertical)}>\n      {hasVisibleItems && (\n        <ul id={controlId} className={clsx(styles.list, styles[alignment])}>\n          {visibleItems.map((item, itemIndex) => (\n            <li\n              key={itemIndex}\n              className={styles['list-item']}\n              aria-setsize={items.length}\n              aria-posinset={itemIndex + 1}\n            >\n              {renderItem(item, itemIndex)}\n            </li>\n          ))}\n        </ul>\n      )}\n      {toggle}\n      {after}\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { forwardRef, Ref } from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport InternalIcon from '../icon/internal';\n\ninterface DismissButtonProps {\n  disabled?: boolean;\n  onDismiss?: () => void;\n  dismissLabel?: string;\n}\n\nexport default forwardRef(DismissButton);\n\nfunction DismissButton({ disabled, dismissLabel, onDismiss }: DismissButtonProps, ref: Ref<HTMLButtonElement>) {\n  return (\n    <button\n      ref={ref}\n      type=\"button\"\n      className={clsx(styles['dismiss-button'])}\n      disabled={disabled}\n      onClick={onDismiss}\n      aria-label={dismissLabel}\n    >\n      <InternalIcon name=\"close\" />\n    </button>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport DismissButton from './dismiss-button';\nimport styles from './styles.css.js';\nimport { FormFieldError } from '../form-field/internal';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { getBaseProps } from '../internal/base-component';\n\ninterface TokenProps {\n  children: React.ReactNode;\n  ariaLabel?: string;\n  dismissLabel?: string;\n  onDismiss?: () => void;\n  disabled?: boolean;\n  errorText?: React.ReactNode;\n  errorIconAriaLabel?: string;\n  className?: string;\n}\n\nexport function Token({\n  ariaLabel,\n  disabled,\n  dismissLabel,\n  onDismiss,\n  children,\n  errorText,\n  errorIconAriaLabel,\n  ...restProps\n}: TokenProps) {\n  const errorId = useUniqueId('error');\n  const baseProps = getBaseProps(restProps);\n  return (\n    <div\n      {...baseProps}\n      className={clsx(styles.token, baseProps.className)}\n      role=\"group\"\n      aria-label={ariaLabel}\n      aria-describedby={errorText ? errorId : undefined}\n      aria-disabled={disabled}\n    >\n      <div\n        className={clsx(\n          styles['token-box'],\n          disabled && styles['token-box-disabled'],\n          errorText && styles['token-box-error']\n        )}\n      >\n        {children}\n        {onDismiss && <DismissButton disabled={disabled} dismissLabel={dismissLabel} onDismiss={onDismiss} />}\n      </div>\n      {errorText && (\n        <FormFieldError id={errorId} errorIconAriaLabel={errorIconAriaLabel}>\n          {errorText}\n        </FormFieldError>\n      )}\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useState } from 'react';\n\nimport Option from '../internal/components/option';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport checkControlled from '../internal/hooks/check-controlled';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\n\nimport { TokenGroupProps } from './interfaces';\nimport { SomeRequired } from '../internal/types';\nimport { getBaseProps } from '../internal/base-component';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport TokenList from '../internal/components/token-list';\nimport { Token } from './token';\n\ntype InternalTokenGroupProps = SomeRequired<TokenGroupProps, 'items' | 'alignment'> & InternalBaseComponentProps;\n\nexport default function InternalTokenGroup({\n  alignment,\n  items,\n  onDismiss,\n  limit,\n  i18nStrings,\n  __internalRootRef,\n  ...props\n}: InternalTokenGroupProps) {\n  checkControlled('TokenGroup', 'items', items, 'onDismiss', onDismiss);\n\n  const [removedItemIndex, setRemovedItemIndex] = useState<null | number>(null);\n\n  const baseProps = getBaseProps(props);\n  const hasItems = items.length > 0;\n  return (\n    <div\n      {...baseProps}\n      className={clsx(baseProps.className, styles.root, hasItems && styles['has-items'])}\n      ref={__internalRootRef}\n    >\n      <TokenList\n        alignment={alignment}\n        items={items}\n        limit={limit}\n        renderItem={(item, itemIndex) => (\n          <Token\n            ariaLabel={item.label}\n            dismissLabel={item.dismissLabel}\n            onDismiss={() => {\n              fireNonCancelableEvent(onDismiss, { itemIndex });\n              setRemovedItemIndex(itemIndex);\n            }}\n            disabled={item.disabled}\n          >\n            <Option option={item} isGenericGroup={false} />\n          </Token>\n        )}\n        i18nStrings={i18nStrings}\n        removedItemIndex={removedItemIndex}\n      />\n    </div>\n  );\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"root\": \"awsui_root_f8g6q_1a6xp_93\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\n\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component/index.js';\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport { getBaseProps } from '../internal/base-component';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { isGroup } from '../internal/components/option/utils/filter-options';\n\nimport DropdownFooter from '../internal/components/dropdown-footer/index.js';\nimport { prepareOptions } from '../internal/components/option/utils/prepare-options';\nimport { OptionDefinition, OptionGroup } from '../internal/components/option/interfaces';\nimport Dropdown from '../internal/components/dropdown';\nimport { useDropdownStatus } from '../internal/components/dropdown-status';\n\nimport { useSelect, MenuProps } from '../select/utils/use-select';\nimport { useNativeSearch } from '../select/utils/use-native-search';\nimport { useLoadItems } from '../select/utils/use-load-items';\nimport { useAnnouncement } from '../select/utils/use-announcement';\nimport { findOptionIndex } from '../select/utils/connect-options';\nimport PlainList, { SelectListProps } from '../select/parts/plain-list';\nimport VirtualList from '../select/parts/virtual-list';\nimport { checkOptionValueField } from '../select/utils/check-option-value-field.js';\nimport Filter from '../select/parts/filter';\nimport Trigger from '../select/parts/trigger';\n\nimport InternalTokenGroup from '../token-group/internal';\nimport { TokenGroupProps } from '../token-group/interfaces';\n\nimport { MultiselectProps } from './interfaces';\nimport styles from './styles.css.js';\nimport ScreenreaderOnly from '../internal/components/screenreader-only';\nimport { joinStrings } from '../internal/utils/strings';\nimport { useInternalI18n } from '../internal/i18n/context';\n\ntype InternalMultiselectProps = MultiselectProps & InternalBaseComponentProps;\n\nconst InternalMultiselect = React.forwardRef(\n  (\n    {\n      options = [],\n      filteringType = 'none',\n      filteringPlaceholder,\n      filteringAriaLabel,\n      filteringClearAriaLabel,\n      filteringResultsText,\n      ariaRequired,\n      placeholder,\n      disabled,\n      ariaLabel,\n      statusType = 'finished',\n      empty,\n      loadingText,\n      finishedText,\n      errorText,\n      recoveryText,\n      noMatch,\n      selectedAriaLabel,\n      renderHighlightedAriaLive,\n      selectedOptions = [],\n      deselectAriaLabel,\n      keepOpen = true,\n      tokenLimit,\n      i18nStrings,\n      onBlur,\n      onFocus,\n      onLoadItems,\n      onChange,\n      virtualScroll,\n      hideTokens = false,\n      expandToViewport,\n      __internalRootRef = null,\n      autoFocus,\n      ...restProps\n    }: InternalMultiselectProps,\n    externalRef: React.Ref<MultiselectProps.Ref>\n  ) => {\n    checkOptionValueField('Multiselect', 'options', options);\n\n    const baseProps = getBaseProps(restProps);\n    const formFieldContext = useFormFieldContext(restProps);\n    const i18n = useInternalI18n('multiselect');\n\n    const { handleLoadMore, handleRecoveryClick, fireLoadItems } = useLoadItems({\n      onLoadItems,\n      options,\n      statusType,\n    });\n    const useInteractiveGroups = true;\n    const [filteringValue, setFilteringValue] = useState('');\n    const { filteredOptions, parentMap, totalCount, matchesCount } = prepareOptions(\n      options,\n      filteringType,\n      filteringValue\n    );\n\n    const updateSelectedOption = useCallback(\n      (option: OptionDefinition | OptionGroup) => {\n        const filtered = filteredOptions.filter(item => item.type !== 'parent').map(item => item.option);\n\n        // switch between selection and deselection behavior, ignores disabled options to prevent\n        // getting stuck on one behavior when an option is disabled and its state cannot be changed\n        const isAllChildrenSelected = (optionsArray: OptionDefinition[]) =>\n          optionsArray.every(item => findOptionIndex(selectedOptions, item) > -1 || item.disabled);\n        const intersection = (visibleOptions: OptionDefinition[], options: OptionDefinition[]) =>\n          visibleOptions.filter(item => findOptionIndex(options, item) > -1 && !item.disabled);\n        const union = (visibleOptions: OptionDefinition[], options: OptionDefinition[]) =>\n          visibleOptions.filter(item => findOptionIndex(options, item) === -1).concat(options);\n        const select = (options: OptionDefinition[], selectedOptions: OptionDefinition[]) => {\n          return union(selectedOptions, options);\n        };\n        const unselect = (options: OptionDefinition[], selectedOptions: OptionDefinition[]) => {\n          return selectedOptions.filter(option => findOptionIndex(options, option) === -1);\n        };\n        let newSelectedOptions = [...selectedOptions];\n\n        if (isGroup(option)) {\n          const visibleOptions = intersection([...option.options], filtered);\n          newSelectedOptions = isAllChildrenSelected(visibleOptions)\n            ? unselect(visibleOptions, newSelectedOptions)\n            : select(visibleOptions, newSelectedOptions);\n        } else {\n          newSelectedOptions = isAllChildrenSelected([option])\n            ? unselect([option], newSelectedOptions)\n            : select([option], newSelectedOptions);\n        }\n\n        fireNonCancelableEvent(onChange, {\n          selectedOptions: newSelectedOptions,\n        });\n      },\n      [onChange, selectedOptions, filteredOptions]\n    );\n\n    const rootRef = useRef<HTMLDivElement>(null);\n\n    const selfControlId = useUniqueId('trigger');\n    const controlId = formFieldContext.controlId ?? selfControlId;\n\n    const multiSelectAriaLabelId = useUniqueId('multiselect-arialabel-');\n\n    const footerId = useUniqueId('footer');\n\n    const scrollToIndex = useRef<SelectListProps.SelectListRef>(null);\n    const {\n      isOpen,\n      highlightType,\n      highlightedOption,\n      highlightedIndex,\n      getTriggerProps,\n      getDropdownProps,\n      getFilterProps,\n      getMenuProps,\n      getOptionProps,\n      highlightOption,\n      announceSelected,\n    } = useSelect({\n      selectedOptions,\n      updateSelectedOption,\n      options: filteredOptions,\n      filteringType,\n      onFocus,\n      onBlur,\n      externalRef,\n      keepOpen,\n      fireLoadItems,\n      setFilteringValue,\n      useInteractiveGroups,\n      statusType,\n    });\n\n    const handleNativeSearch = useNativeSearch({\n      isEnabled: filteringType === 'none' && isOpen,\n      options: filteredOptions,\n      highlightOption: highlightOption,\n      highlightedOption: highlightedOption?.option,\n      useInteractiveGroups,\n    });\n\n    const isEmpty = !options || options.length === 0;\n    const isNoMatch = filteredOptions && filteredOptions.length === 0;\n    const isFiltered =\n      filteringType !== 'none' && filteringValue.length > 0 && filteredOptions && filteredOptions.length > 0;\n    const filteredText = isFiltered ? filteringResultsText?.(matchesCount, totalCount) : undefined;\n    const dropdownStatus = useDropdownStatus({\n      statusType,\n      empty,\n      loadingText,\n      finishedText,\n      errorText,\n      recoveryText,\n      isEmpty,\n      isNoMatch,\n      noMatch,\n      isFiltered,\n      filteringResultsText: filteredText,\n      onRecoveryClick: handleRecoveryClick,\n      errorIconAriaLabel: restProps.errorIconAriaLabel,\n    });\n\n    const filter = (\n      <Filter\n        clearAriaLabel={filteringClearAriaLabel}\n        filteringType={filteringType}\n        placeholder={filteringPlaceholder}\n        ariaLabel={filteringAriaLabel}\n        ariaRequired={ariaRequired}\n        value={filteringValue}\n        {...getFilterProps()}\n      />\n    );\n\n    const trigger = (\n      <Trigger\n        placeholder={placeholder}\n        disabled={disabled}\n        triggerProps={getTriggerProps(disabled, autoFocus)}\n        selectedOption={null}\n        isOpen={isOpen}\n        {...formFieldContext}\n        controlId={controlId}\n        ariaLabelledby={joinStrings(formFieldContext.ariaLabelledby, multiSelectAriaLabelId)}\n      />\n    );\n\n    const menuProps: MenuProps = {\n      ...getMenuProps(),\n      onLoadMore: handleLoadMore,\n      ariaLabelledby: joinStrings(multiSelectAriaLabelId, controlId),\n      ariaDescribedby: dropdownStatus.content ? footerId : undefined,\n    };\n\n    const announcement = useAnnouncement({\n      announceSelected,\n      highlightedOption,\n      getParent: option => parentMap.get(option)?.option as undefined | OptionGroup,\n      selectedAriaLabel,\n      renderHighlightedAriaLive,\n    });\n\n    const tokens: TokenGroupProps['items'] = selectedOptions.map(option => ({\n      label: option.label,\n      disabled: disabled || option.disabled,\n      labelTag: option.labelTag,\n      description: option.description,\n      iconAlt: option.iconAlt,\n      iconName: option.iconName,\n      iconUrl: option.iconUrl,\n      iconSvg: option.iconSvg,\n      tags: option.tags,\n      dismissLabel: i18n('deselectAriaLabel', deselectAriaLabel?.(option), format =>\n        format({ option__label: option.label ?? '' })\n      ),\n    }));\n\n    useEffect(() => {\n      scrollToIndex.current?.(highlightedIndex);\n    }, [highlightedIndex]);\n\n    const ListComponent = virtualScroll ? VirtualList : PlainList;\n\n    const handleMouseDown = (event: React.MouseEvent) => {\n      const target = event.target as HTMLElement;\n\n      if (target !== document.activeElement) {\n        // prevent currently focused element from losing it\n        event.preventDefault();\n      }\n    };\n\n    const showTokens = !hideTokens && tokens.length > 0;\n    const handleTokenDismiss: TokenGroupProps['onDismiss'] = ({ detail }) => {\n      const optionToDeselect = selectedOptions[detail.itemIndex];\n      updateSelectedOption(optionToDeselect);\n      const targetRef = getTriggerProps().ref;\n      if (targetRef.current) {\n        targetRef.current.focus();\n      }\n    };\n\n    const tokenGroupI18nStrings: TokenGroupProps.I18nStrings = {\n      limitShowFewer: i18nStrings?.tokenLimitShowFewer,\n      limitShowMore: i18nStrings?.tokenLimitShowMore,\n    };\n\n    const mergedRef = useMergeRefs(rootRef, __internalRootRef);\n\n    return (\n      <div\n        {...baseProps}\n        ref={mergedRef}\n        className={clsx(styles.root, baseProps.className)}\n        onKeyPress={handleNativeSearch}\n      >\n        <Dropdown\n          {...getDropdownProps()}\n          open={isOpen}\n          trigger={trigger}\n          header={filter}\n          onMouseDown={handleMouseDown}\n          footer={\n            dropdownStatus.isSticky ? (\n              <DropdownFooter content={isOpen ? dropdownStatus.content : null} id={footerId} />\n            ) : null\n          }\n          expandToViewport={expandToViewport}\n        >\n          <ListComponent\n            listBottom={\n              !dropdownStatus.isSticky ? (\n                <DropdownFooter content={isOpen ? dropdownStatus.content : null} id={footerId} />\n              ) : null\n            }\n            menuProps={menuProps}\n            getOptionProps={getOptionProps}\n            filteredOptions={filteredOptions}\n            filteringValue={filteringValue}\n            ref={scrollToIndex}\n            hasDropdownStatus={dropdownStatus.content !== null}\n            checkboxes={true}\n            useInteractiveGroups={useInteractiveGroups}\n            screenReaderContent={announcement}\n            highlightType={highlightType}\n          />\n        </Dropdown>\n        {showTokens && (\n          <InternalTokenGroup\n            alignment=\"horizontal\"\n            limit={tokenLimit}\n            items={tokens}\n            onDismiss={handleTokenDismiss}\n            i18nStrings={tokenGroupI18nStrings}\n          />\n        )}\n        <ScreenreaderOnly id={multiSelectAriaLabelId}>{ariaLabel}</ScreenreaderOnly>\n      </div>\n    );\n  }\n);\n\nexport default InternalMultiselect;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { MultiselectProps } from './interfaces';\nimport InternalMultiselect from './internal';\n\nexport { MultiselectProps };\n\nconst Multiselect = React.forwardRef(\n  (\n    {\n      options = [],\n      filteringType = 'none',\n      statusType = 'finished',\n      selectedOptions = [],\n      keepOpen = true,\n      hideTokens = false,\n      ...restProps\n    }: MultiselectProps,\n    ref: React.Ref<MultiselectProps.Ref>\n  ) => {\n    const baseComponentProps = useBaseComponent('Multiselect');\n    return (\n      <InternalMultiselect\n        options={options}\n        filteringType={filteringType}\n        statusType={statusType}\n        selectedOptions={selectedOptions}\n        keepOpen={keepOpen}\n        hideTokens={hideTokens}\n        {...restProps}\n        {...baseComponentProps}\n        ref={ref}\n      />\n    );\n  }\n);\n\napplyDisplayName(Multiselect, 'Multiselect');\nexport default Multiselect;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { SpinnerProps } from './interfaces';\nimport InternalSpinner from './internal';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { SpinnerProps };\n\nexport default function Spinner({ size = 'normal', variant = 'normal', ...props }: SpinnerProps) {\n  const baseComponentProps = useBaseComponent('Spinner');\n  return <InternalSpinner size={size} variant={variant} {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(Spinner, 'Spinner');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { ExpandableSectionProps } from './interfaces';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport InternalExpandableSection from './internal';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { ExpandableSectionProps };\n\nexport default function ExpandableSection({ variant = 'default', ...props }: ExpandableSectionProps) {\n  const baseComponentProps = useBaseComponent('ExpandableSection');\n  return <InternalExpandableSection variant={variant} {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(ExpandableSection, 'ExpandableSection');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { CheckboxProps } from './interfaces';\nimport InternalCheckbox from './internal';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { CheckboxProps };\n\nconst Checkbox = React.forwardRef(({ ...props }: CheckboxProps, ref: React.Ref<CheckboxProps.Ref>) => {\n  const baseComponentProps = useBaseComponent('Checkbox');\n  return <InternalCheckbox {...props} {...baseComponentProps} ref={ref} />;\n});\n\napplyDisplayName(Checkbox, 'Checkbox');\nexport default Checkbox;\n","// Copyright 2023 Amazon Web Services, Inc\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n//     http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport ExpandableSection from '@awsui/components-react/expandable-section';\nimport Checkbox from '@awsui/components-react/checkbox';\nimport Box from '@awsui/components-react/box';\nimport \"../../index.css\";\n\nconst Hierarchy = ({ options, resource, onSelect, handleToggle, action, allItems }) => {\n  return (\n    <div>\n      <ul>\n        {options.map(option => (\n          <li key={option.Id}>\n            {(option.Children.length === 0) ? (\n              <li>\n                <Checkbox\n                  onChange={({ detail }) => {\n                    handleToggle(option, detail.checked)\n                  }}\n                  checked={resource.some(item => item.value === option.Id)}\n                  disabled={action ? allItems.some(item => item.id === options.Id) : false}\n                >\n                  <div>\n                    <Box>{option.Name}</Box>\n                    <Box variant=\"awsui-key-label\">{option.Id}</Box>\n                  </div>\n                </Checkbox>\n              </li>\n            ) : (\n              <li>\n                <ExpandableSection\n                  variant=\"footer\"\n                  header={\n                    <>\n                      <Checkbox\n                        onChange={({ detail }) => {\n                          handleToggle(option, detail.checked)\n                        }}\n                        checked={resource.some(item => item.value === option.Id)}\n                        disabled={action ? allItems.some(item => item.id === options.Id) : false}\n                      >\n\n                          <div>\n                            <Box>{option.Name}</Box>\n                            <Box variant=\"awsui-key-label\">{option.Id}</Box>\n                          </div>\n                        </Checkbox>\n                      </>\n                    }\n                  >\n                    <Hierarchy\n                      options={option.Children}\n                      resource={resource}\n                      onSelect={onSelect}\n                      handleToggle={handleToggle}\n                    />\n                  </ExpandableSection>\n              </li>\n            )}\n          </li>\n        ))}\n      </ul>\n    </div>\n  )\n}\n\nfunction Ous({ options, setResource, resource = [], action = null, allItems = [] }) {\n  const handleSelect = (selected) => {\n    setResource(selected)\n  };\n\n  const handleToggle = (value, checked) => {\n    const data = { label: value.Name, value: value.Id }\n    if (checked) {\n      handleSelect([...resource, data]);\n    } else {\n      handleSelect(resource.filter(option => option.value !== data.value));\n    }\n  };\n  ;\n\n  return (\n    <ExpandableSection\n      variant=\"footer\"\n      header={\n        <div>\n          <Checkbox\n            onChange={({ detail }) => {\n              handleToggle(options[0], detail.checked)\n            }}\n            checked={resource.some(item => item.value === options[0].Id)}\n            disabled={action ? allItems.some(item => item.id === options[0].Id) : false}\n          >\n            <div>\n              <Box>{options[0].Name}</Box>\n              <Box variant=\"awsui-key-label\">{options[0].Id}</Box>\n            </div>\n          </Checkbox>\n        </div>\n      }\n    >\n      <Hierarchy\n        options={options[0].Children}\n        resource={resource}\n        onSelect={handleSelect}\n        handleToggle={handleToggle}\n        action={action}\n        allItems={allItems}\n      />\n    </ExpandableSection>\n  );\n};\n\nexport default Ous;","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useState, useEffect } from \"react\";\nimport {\n  Box,\n  Button,\n  Header,\n  Pagination,\n  Table,\n  TextFilter,\n  SpaceBetween,\n  CollectionPreferences,\n  Multiselect,\n  TextContent,\n  Modal,\n  FormField,\n  ButtonDropdown,\n  Form,\n  Select,\n  ColumnLayout,\n  Input,\n  Spinner\n} from \"@awsui/components-react\";\nimport { useCollection } from \"@awsui/collection-hooks\";\nimport Ous from \"../Shared/Ous\";\nimport { API, graphqlOperation } from \"aws-amplify\";\nimport { onPublishOUs } from \"../../graphql/subscriptions\";\nimport {\n  getAllApprovers,\n  fetchAccounts,\n  fetchOUs,\n  addApprovers,\n  delApprover,\n  editApprover,\n  fetchIdCGroups,\n  getSetting\n} from \"../Shared/RequestService\";\nimport \"../../index.css\";\n\nconst COLUMN_DEFINITIONS = [\n  {\n    id: \"id\",\n    sortingField: \"id\",\n    header: \"Id\",\n    cell: (item) => item.id,\n    width: 220,\n  },\n  {\n    id: \"name\",\n    sortingField: \"name\",\n    header: \"Name\",\n    cell: (item) => item.name,\n    width: 220,\n  },\n  {\n    id: \"type\",\n    sortingField: \"type\",\n    header: \"Type\",\n    cell: (item) => item.type,\n    width: 200,\n  },\n  {\n    id: \"ticketNo\",\n    sortingField: \"ticketNo\",\n    header: \"Ticket no\",\n    cell: (item) => item.ticketNo || \"-\",\n    width: 200,\n  },\n  {\n    id: \"approvers\",\n    sortingField: \"approvers\",\n    header: \"Approver groups\",\n    cell: (item) => (\n      <TextContent>\n        <ul>\n          {item.approvers.map((data) => (\n            <li>{data}</li>\n          ))}\n        </ul>\n      </TextContent>\n    ),\n    width: 300,\n  },\n];\n\nconst MyCollectionPreferences = ({ preferences, setPreferences }) => {\n  return (\n    <CollectionPreferences\n      title=\"Preferences\"\n      confirmLabel=\"Confirm\"\n      cancelLabel=\"Cancel\"\n      preferences={preferences}\n      onConfirm={({ detail }) => setPreferences(detail)}\n      pageSizePreference={{\n        title: \"Page size\",\n        options: [\n          { value: 10, label: \"10 Requests\" },\n          { value: 30, label: \"30 Requests\" },\n          { value: 50, label: \"50 Requests\" },\n        ],\n      }}\n      wrapLinesPreference={{\n        label: \"Wrap lines\",\n        description: \"Check to see all the text and wrap the lines\",\n      }}\n      visibleContentPreference={{\n        title: \"Select visible columns\",\n        options: [\n          {\n            label: \"Request properties\",\n            options: [\n              { id: \"id\", label: \"Id\", editable: false },\n              { id: \"name\", label: \"name\" },\n              { id: \"type\", label: \"type\" },\n              { id: \"ticketNo\", label: \"ticketNo\" },\n              { id: \"approvers\", label: \"approvers\" },\n            ],\n          },\n        ],\n      }}\n    />\n  );\n};\n\nfunction EmptyState({ title, subtitle, action }) {\n  return (\n    <Box textAlign=\"center\">\n      <Box variant=\"strong\">{title}</Box>\n      <Box variant=\"p\" padding={{ bottom: \"s\" }}>\n        {subtitle}\n      </Box>\n      {action}\n    </Box>\n  );\n}\n\nconst defaultType = {\n  label: \"All entities\",\n  value: \"0\",\n};\n\nfunction Approvers(props) {\n  const [allItems, setAllItems] = useState([]);\n  const [preferences, setPreferences] = useState({\n    pageSize: 10,\n    visibleContent: [\n      \"id\",\n      \"name\",\n      \"type\",\n      \"ticketNo\",\n      \"approvers\",\n    ],\n  });\n\n  const [selectedOption, setSelectedOption] = useState(defaultType);\n  const selectTypeOptions = prepareSelectOptions(\"type\", defaultType);\n\n  function prepareSelectOptions(field, defaultOption) {\n    const optionSet = [];\n    // Building a non redundant list of the field passed as parameter.\n\n    allItems.forEach((item) => {\n      if (optionSet.indexOf(item[field]) === -1) {\n        optionSet.push(item[field]);\n      }\n    });\n    optionSet.sort();\n\n    // The first element is the default one.\n    const options = [defaultOption];\n\n    // Adding the other element ot the list.\n    optionSet.forEach((item, index) =>\n      options.push({ label: item, value: (index + 1).toString() })\n    );\n    return options;\n  }\n\n  function matchesType(item, selectedType) {\n    return selectedType === defaultType || item.type === selectedType.label;\n  }\n\n  const SEARCHABLE_COLUMNS = COLUMN_DEFINITIONS.map((item) => item.id);\n\n  const {\n    items,\n    actions,\n    filteredItemsCount,\n    collectionProps,\n    filterProps,\n    paginationProps,\n  } = useCollection(allItems, {\n    filtering: {\n      filteringFunction: (item, filteringText) => {\n        if (!matchesType(item, selectedOption)) {\n          return false;\n        }\n        const filteringTextLowerCase = filteringText.toLowerCase();\n\n        return SEARCHABLE_COLUMNS.map((key) => item[key]).some(\n          (value) =>\n            typeof value === \"string\" &&\n            value.toLowerCase().indexOf(filteringTextLowerCase) > -1\n        );\n      },\n      empty: (\n        <EmptyState\n          title=\"No approver\"\n          subtitle=\"No approvers to display.\"\n          action={<Button onClick={handleAdd}>Create approver</Button>}\n        />\n      ),\n      noMatch: (\n        <EmptyState\n          title=\"No matches\"\n          subtitle=\"Your search didn't return any records.\"\n          action={\n            <Button onClick={() => actions.setFiltering(\"\")}>\n              Clear filter\n            </Button>\n          }\n        />\n      ),\n    },\n    pagination: { pageSize: preferences.pageSize },\n    sorting: {},\n    selection: {},\n  });\n\n  const { selectedItems } = collectionProps;\n  const [confirmLoading, setConfirmLoading] = useState(false);\n  const [tableLoading, setTableLoading] = useState(true);\n  const [visible, setVisible] = useState(false);\n  const [deleteVisible, setDeleteVisible] = useState(false);\n  const [editVisible, setEditVisible] = useState(false);\n  const [Type, setType] = useState(\"\");\n  const [typeError, setTypeError] = useState(\"\");\n  // const [approvers, setApprovers] = useState(\"\");\n  const [approverError, setApproverError] = useState(\"\");\n  const [ticketNo, setTicketNo] = useState(\"\");\n  const [ticketError, setTicketError] = useState(\"\");\n  const [resource, setResource] = useState(\"\");\n  const [resourceError, setResourceError] = useState(\"\");\n\n  const [accounts, setAccounts] = useState([]);\n  const [accountStatus, setAccountStatus] = useState(\"finished\");\n\n  const [ous, setOUs] = useState([]);\n  const [ouStatus, setOUStatus] = useState(\"finished\");\n\n  const [approverList, setApproverList] = useState([]);\n  const [approverStatus, setApproverStatus] = useState(\"finished\");\n\n  const [approver, setApprover] = useState([]);\n  const [ticketRequired, setTicketRequired] = useState(true);\n\n\n  useEffect(() => {\n    views();\n    props.addNotification([]);\n    getGroups();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  function views() {\n    getAllApprovers().then((items) => {\n      setAllItems(items);\n      setTableLoading(false);\n      setConfirmLoading(false);\n      setVisible(false);\n      setDeleteVisible(false);\n      handleDismiss();\n      getSettings();\n    });\n  }\n\n  function handleAdd() {\n    setVisible(true);\n  }\n\n  function getSettings(){\n    getSetting(\"settings\").then((data) => {\n      if (data !== null) {\n        setTicketRequired(data.ticketNo);\n        }\n    });\n  }\n\n  function handleSelect(data) {\n    if (data.detail.id === \"delete\") {\n      setDeleteVisible(true);\n    } else handleEdit();\n  }\n\n  function handleDelete() {\n    selectedItems.forEach((item) => {\n      setConfirmLoading(true);\n      const data = {\n        id: item.id,\n      };\n      delApprover(data).then(() => {\n        views();\n        props.addNotification([\n          {\n            type: \"success\",\n            content: `Approvers deleted successfully`,\n            dismissible: true,\n            onDismiss: () => props.addNotification([]),\n          },\n        ]);\n      });\n    });\n  }\n\n  function handleConfirmEdit() {\n    let action = \"edit\";\n    validate(action).then((valid) => {\n      if (valid) {\n        setConfirmLoading(true);\n        const data = {\n          id: selectedItems[0].id,\n          approvers: approver.map(({ label }) => label),\n          groupIds: approver.map(({ value }) => value),\n          ticketNo: ticketNo,\n        };\n        editApprover(data).then(() => {\n          views();\n          props.addNotification([\n            {\n              type: \"success\",\n              content: `Approvers edited successfully`,\n              dismissible: true,\n              onDismiss: () => props.addNotification([]),\n            },\n          ]);\n        });\n      }\n    });\n  }\n\n  function handleEdit() {\n    setApprover(\n      selectedItems[0].approvers.map((approver, index) => {\n        let groupId = selectedItems[0].groupIds[index]\n        return {\n          label: approver,\n          value: groupId,\n          description: groupId,\n        };\n      })\n    );\n    setEditVisible(true);\n  }\n\n  const onTypeChange = (value) => {\n    setResource([]);\n    setType(value);\n    value.value === \"Account\" ? getAccounts() : getOUs();\n  };\n\n  function getAccounts() {\n    setAccountStatus(\"loading\");\n    fetchAccounts().then((data) => {\n      setAccounts(data);\n      setAccountStatus(\"finished\");\n    });\n  }\n\n  function getGroups() {\n    setApproverStatus(\"loading\");\n    fetchIdCGroups().then((data) => {\n      setApproverList(data);\n      setApproverStatus(\"finished\");\n    });\n  }\n\n  function getOUs() {\n    setOUStatus(\"loading\");\n    fetchOUs().then(() =>{\n      const subscription = API.graphql(\n        graphqlOperation(onPublishOUs)\n      ).subscribe({\n        next: (result) => {\n          const data = result.value.data.onPublishOUs.ous\n          setOUs(JSON.parse(data));\n          setOUStatus(\"finished\");\n          subscription.unsubscribe();\n        },\n      });\n    });\n  }\n\n  const onResourceChange = (value) => {\n    setResource(value);\n  };\n\n  async function validate(action) {\n    let valid = true;\n    if (approver.length < 1) {\n      valid = false;\n      setApproverError(\"Select Valid Approver email\");\n    }\n    if ((!ticketNo && ticketRequired) || !(/^[a-zA-Z0-9]+$/.test(ticketNo[0]))) {\n      setTicketError(\"Enter valid change management ticket number\");\n      valid = false;\n    }\n    if (!resource && action === \"submit\") {\n      setResourceError(\"Select a valid entity\");\n      valid = false;\n    }\n    if (!Type && action === \"submit\") {\n      setTypeError(\"Select a valid entity type\");\n      valid = false;\n    }\n    return valid;\n  }\n\n  function handleSubmit(event) {\n    let action = \"submit\";\n    validate(action).then((valid) => {\n      if (valid) {\n        event.preventDefault();\n        resource.forEach((item) => {\n          const data = {\n            type: Type.value,\n            name: item.label,\n            approvers: approver.map(({ label }) => label),\n            groupIds: approver.map(({ value }) => value),\n            id: item.value,\n            ticketNo: ticketNo,\n          };\n          addApprovers(data).then(() => {\n            views();\n            props.addNotification([\n              {\n                type: \"success\",\n                content: \"Approvers added successfully\",\n                dismissible: true,\n                onDismiss: () => props.addNotification([]),\n              },\n            ]);\n          });\n        });\n      }\n    });\n  }\n\n  function handleDismiss() {\n    setVisible(false);\n    setDeleteVisible(false);\n    setEditVisible(false);\n    setType(\"\");\n    setTypeError(\"\");\n    setResource(\"\");\n    setResourceError(\"\");\n    setApprover([]);\n    setApproverError(\"\");\n    setTicketNo(\"\");\n    setTicketError(\"\");\n  }\n\n  const ValueWithLabel = ({ label, children }) => (\n    <div>\n      <Box variant=\"awsui-key-label\">{label}</Box>\n      <div>{children}</div>\n    </div>\n  );\n\n  return (\n    <div className=\"container\">\n      <Table\n        {...collectionProps}\n        resizableColumns=\"true\"\n        loading={tableLoading}\n        loadingText=\"Fetching approvers\"\n        wrapLines\n        header={\n          <Header\n            counter={\n              selectedItems.length\n                ? `(${selectedItems.length}/${allItems.length})`\n                : `(${allItems.length})`\n            }\n            actions={\n              <SpaceBetween size=\"s\" direction=\"horizontal\">\n                <Button iconName=\"refresh\" />\n                <ButtonDropdown\n                  items={[\n                    {\n                      text: \"Edit\",\n                      id: \"edit\",\n                      disabled:\n                        selectedItems.length === 0 || selectedItems.length > 1,\n                    },\n                    {\n                      text: \"Delete\",\n                      id: \"delete\",\n                      disabled: selectedItems.length === 0,\n                    },\n                  ]}\n                  onItemClick={(props) => handleSelect(props)}\n                >\n                  Actions\n                </ButtonDropdown>\n                <Button variant=\"primary\" onClick={handleAdd}>\n                  Add approvers\n                </Button>\n              </SpaceBetween>\n            }\n          >\n            Approval policy\n          </Header>\n        }\n        filter={\n          <div className=\"input-container\">\n            <TextFilter\n              {...filterProps}\n              filteringPlaceholder=\"Find approvers\"\n              countText={filteredItemsCount}\n              className=\"input-filter\"\n            />\n            <Select\n              {...filterProps}\n              className=\"select-filter engine-filter\"\n              selectedAriaLabel=\"Selected\"\n              options={selectTypeOptions}\n              selectedOption={selectedOption}\n              onChange={({ detail }) =>\n                setSelectedOption(detail.selectedOption)\n              }\n              ariaDescribedby={null}\n            />\n          </div>\n        }\n        columnDefinitions={COLUMN_DEFINITIONS}\n        visibleColumns={preferences.visibleContent}\n        pagination={<Pagination {...paginationProps} />}\n        preferences={\n          <MyCollectionPreferences\n            preferences={preferences}\n            setPreferences={setPreferences}\n          />\n        }\n        items={items}\n        selectionType=\"multi\"\n      />\n      <Modal\n        onDismiss={() => handleDismiss()}\n        visible={visible}\n        closeAriaLabel=\"Close modal\"\n        size=\"large\"\n        header=\"Approvers\"\n      >\n        <Form\n          actions={\n            <SpaceBetween direction=\"horizontal\" size=\"xs\">\n              <Button\n                variant=\"primary\"\n                type=\"submit\"\n                onClick={handleSubmit}\n                className=\"buttons\"\n              >\n                Add approvers\n              </Button>\n            </SpaceBetween>\n          }\n        >\n          <SpaceBetween direction=\"vertical\" size=\"l\">\n            <FormField\n              label=\"Entity type\"\n              stretch\n              description=\"Account or organisation unit\"\n              errorText={typeError}\n            >\n              <Select\n                selectedAriaLabel=\"Selected\"\n                options={[\n                  {\n                    label: \"Organizational Unit\",\n                    value: \"OU\",\n                  },\n                  {\n                    label: \"Account\",\n                    value: \"Account\",\n                  },\n                ]}\n                selectedOption={Type}\n                onChange={(event) => {\n                  setTypeError();\n                  onTypeChange(event.detail.selectedOption);\n                }}\n              />\n            </FormField>\n            {Type.value === \"Account\" && (\n              <FormField\n                label=\"Accounts\"\n                stretch\n                description=\"Target accounts for approver group management\"\n                errorText={resourceError}\n              >\n                <Multiselect\n                  statusType={accountStatus}\n                  placeholder=\"Select Accounts\"\n                  loadingText=\"Loading accounts\"\n                  filteringType=\"auto\"\n                  empty=\"No options\"\n                  options={accounts.map((account) => ({\n                    label: account.name,\n                    value: account.id,\n                    description: account.id,\n                    disabled: allItems.map(({ id }) => id).includes(account.id),\n                  }))}\n                  selectedOptions={resource}\n                  onChange={(event) => {\n                    setResourceError();\n                    onResourceChange(event.detail.selectedOptions);\n                  }}\n                  selectedAriaLabel=\"selected\"\n                  deselectAriaLabel={(e) => `Remove ${e.label}`}\n                />\n              </FormField>\n            )}\n            {Type.value === \"OU\" && (\n              <FormField\n                label=\"OUs\"\n                stretch\n                description=\"Organizational Unit\"\n                errorText={resourceError}\n              >\n                {ous.length === 1 ? (<Ous\n                  options={ous}\n                  setResource={setResource}\n                  resource={resource}\n                  action=\"create\"\n                  allItems={allItems}\n                  />) : <Spinner size=\"large\"/>}\n              </FormField>\n            )}\n            <FormField\n              label=\"Ticket No\"\n              stretch\n              description=\"Change Management system ticket system number\"\n              errorText={ticketError}\n            >\n              <Input\n                value={ticketNo}\n                onChange={(event) => {\n                  setTicketError();\n                  setTicketNo(event.detail.value);\n                }}\n              />\n            </FormField>\n            <FormField\n              label=\"Approver Groups\"\n              stretch\n              description=\"list of approver groups from IAM IdC\"\n              errorText={approverError}\n            >\n              <Multiselect\n                statusType={approverStatus}\n                placeholder=\"Select groups\"\n                loadingText=\"Loading groups\"\n                filteringType=\"auto\"\n                empty=\"No options\"\n                options={approverList.map((approver) => ({\n                  label: approver.DisplayName,\n                  value: approver.GroupId,\n                  description: approver.GroupId,\n                }))}\n                selectedOptions={approver}\n                onChange={({ detail }) => {\n                  setApproverError();\n                  setApprover(detail.selectedOptions);\n                }}\n                selectedAriaLabel=\"selected\"\n                deselectAriaLabel={(e) => `Remove ${e.label}`}\n              />\n            </FormField>\n          </SpaceBetween>\n        </Form>\n      </Modal>\n      <Modal\n        onDismiss={() => setDeleteVisible(false)}\n        visible={deleteVisible}\n        closeAriaLabel=\"Close modal\"\n        size=\"medium\"\n        footer={\n          <Box float=\"right\">\n            <SpaceBetween direction=\"horizontal\" size=\"xs\">\n              <Button\n                variant=\"link\"\n                onClick={() => {\n                  setDeleteVisible(false);\n                }}\n              >\n                Cancel\n              </Button>\n              <Button\n                variant=\"primary\"\n                onClick={handleDelete}\n                loading={confirmLoading}\n              >\n                Confirm\n              </Button>\n            </SpaceBetween>\n          </Box>\n        }\n        header=\"Delete approvers\"\n      >\n        Are you sure you want to delete approvers ?\n      </Modal>\n      {selectedItems.length > 0 && (\n        <Modal\n          onDismiss={() => handleDismiss()}\n          visible={editVisible}\n          closeAriaLabel=\"Close modal\"\n          size=\"large\"\n          footer={\n            <Box float=\"right\">\n              <SpaceBetween direction=\"horizontal\" size=\"xs\">\n                <Button\n                  variant=\"link\"\n                  onClick={() => {\n                    handleDismiss();\n                  }}\n                >\n                  Cancel\n                </Button>\n                <Button\n                  variant=\"primary\"\n                  onClick={handleConfirmEdit}\n                  loading={confirmLoading}\n                >\n                  Confirm\n                </Button>\n              </SpaceBetween>\n            </Box>\n          }\n          header=\"Edit approvers\"\n        >\n          <SpaceBetween size=\"l\">\n            <ColumnLayout columns={3} variant=\"text-grid\">\n              <ValueWithLabel label=\"Entity type\">\n                {selectedItems[0].type}\n              </ValueWithLabel>\n              <ValueWithLabel label=\"Name\">\n                {selectedItems[0].name}\n              </ValueWithLabel>\n              <ValueWithLabel label=\"Id\">{selectedItems[0].id}</ValueWithLabel>\n            </ColumnLayout>\n            <FormField\n              label=\"Ticket No\"\n              stretch\n              description=\"Change Management system ticket system number\"\n              errorText={ticketError}\n            >\n              <Input\n                value={ticketNo}\n                onChange={(event) => {\n                  setTicketError();\n                  setTicketNo(event.detail.value);\n                }}\n              />\n            </FormField>\n            <FormField\n              label=\"Approver Groups\"\n              stretch\n              description=\"list of approver groups from IAM IdC\"\n              errorText={approverError}\n            >\n              <Multiselect\n                statusType={approverStatus}\n                placeholder=\"Select groups\"\n                loadingText=\"Loading groups\"\n                filteringType=\"auto\"\n                empty=\"No options\"\n                options={approverList.map((approver) => ({\n                  label: approver.DisplayName,\n                  value: approver.GroupId,\n                  description: approver.GroupId,\n                }))}\n                selectedOptions={approver}\n                onChange={({ detail }) => {\n                  setApproverError();\n                  setApprover(detail.selectedOptions);\n                }}\n                selectedAriaLabel=\"selected\"\n                deselectAriaLabel={(e) => `Remove ${e.label}`}\n              />\n            </FormField>\n          </SpaceBetween>\n        </Modal>\n      )}\n    </div>\n  );\n}\n\nexport default Approvers;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { ContentLayoutProps } from './interfaces';\nimport InternalContentLayout from './internal';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { ContentLayoutProps };\n\nexport default function ContentLayout(props: ContentLayoutProps) {\n  const baseComponentProps = useBaseComponent('ContentLayout');\n  return <InternalContentLayout {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(ContentLayout, 'ContentLayout');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { ToggleProps } from './interfaces';\nimport InternalToggle from './internal';\n\nexport { ToggleProps };\n\nconst Toggle = React.forwardRef<ToggleProps.Ref, ToggleProps>((props, ref) => {\n  const baseComponentProps = useBaseComponent('Toggle');\n  return <InternalToggle {...props} {...baseComponentProps} ref={ref} />;\n});\n\napplyDisplayName(Toggle, 'Toggle');\nexport default Toggle;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar __rest = this && this.__rest || function (s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n    if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n  }\n  return t;\n};\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport warning from '../_util/warning';\nvar Divider = function Divider(props) {\n  var _classNames;\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls,\n    direction = _React$useContext.direction;\n  var customizePrefixCls = props.prefixCls,\n    _props$type = props.type,\n    type = _props$type === void 0 ? 'horizontal' : _props$type,\n    _props$orientation = props.orientation,\n    orientation = _props$orientation === void 0 ? 'center' : _props$orientation,\n    orientationMargin = props.orientationMargin,\n    className = props.className,\n    children = props.children,\n    dashed = props.dashed,\n    plain = props.plain,\n    restProps = __rest(props, [\"prefixCls\", \"type\", \"orientation\", \"orientationMargin\", \"className\", \"children\", \"dashed\", \"plain\"]);\n  var prefixCls = getPrefixCls('divider', customizePrefixCls);\n  var orientationPrefix = orientation.length > 0 ? \"-\".concat(orientation) : orientation;\n  var hasChildren = !!children;\n  var hasCustomMarginLeft = orientation === 'left' && orientationMargin != null;\n  var hasCustomMarginRight = orientation === 'right' && orientationMargin != null;\n  var classString = classNames(prefixCls, \"\".concat(prefixCls, \"-\").concat(type), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-text\"), hasChildren), _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-text\").concat(orientationPrefix), hasChildren), _defineProperty(_classNames, \"\".concat(prefixCls, \"-dashed\"), !!dashed), _defineProperty(_classNames, \"\".concat(prefixCls, \"-plain\"), !!plain), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-no-default-orientation-margin-left\"), hasCustomMarginLeft), _defineProperty(_classNames, \"\".concat(prefixCls, \"-no-default-orientation-margin-right\"), hasCustomMarginRight), _classNames), className);\n  var innerStyle = _extends(_extends({}, hasCustomMarginLeft && {\n    marginLeft: orientationMargin\n  }), hasCustomMarginRight && {\n    marginRight: orientationMargin\n  });\n  // Warning children not work in vertical mode\n  if (process.env.NODE_ENV !== 'production') {\n    process.env.NODE_ENV !== \"production\" ? warning(!children || type !== 'vertical', 'Divider', '`children` not working in `vertical` mode.') : void 0;\n  }\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: classString\n  }, restProps, {\n    role: \"separator\"\n  }), children && type !== 'vertical' && /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-inner-text\"),\n    style: innerStyle\n  }, children));\n};\nexport default Divider;","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useState, useEffect } from \"react\";\nimport Box from \"@awsui/components-react/box\";\nimport SpaceBetween from \"@awsui/components-react/space-between\";\nimport Container from \"@awsui/components-react/container\";\nimport Header from \"@awsui/components-react/header\";\nimport ColumnLayout from \"@awsui/components-react/column-layout\";\nimport Button from \"@awsui/components-react/button\";\nimport Select from \"@awsui/components-react/select\";\nimport params from \"../../parameters.json\";\nimport {\n  ContentLayout,\n  Modal,\n  Toggle,\n  Form,\n  FormField,\n  Input,\n  Spinner,\n} from \"@awsui/components-react\";\nimport StatusIndicator from \"@awsui/components-react/status-indicator\";\nimport { Divider } from \"antd\";\nimport \"../../index.css\";\nimport {\n  getSetting,\n  createSetting,\n  updateSetting,\n  fetchIdCGroups,\n} from \"../Shared/RequestService\";\n\nfunction Settings(props) {\n  const [duration, setDuration] = useState(null);\n  const [durationError, setDurationError] = useState(\"\");\n  const [expiry, setExpiry] = useState(null);\n  const [expiryError, setExpiryError] = useState(\"\");\n  const [comments, setComments] = useState(null);\n  const [ticketNo, setTicketNo] = useState(null);\n  const [approval, setApproval] = useState(null);\n  const [sesNotificationsEnabled, setSesNotificationsEnabled] = useState(null);\n  const [snsNotificationsEnabled, setSnsNotificationsEnabled] = useState(null);\n  const [slackNotificationsEnabled, setSlackNotificationsEnabled] =\n    useState(null);\n  const [slackToken, setSlackToken] = useState(\"\");\n  const [slackTokenError, setSlackTokenError] = useState(\"\");\n  const [sesSourceEmail, setSesSourceEmail] = useState(null);\n  const [sesSourceEmailError, setSesSourceEmailError] = useState(\"\");\n  const [sesSourceArn, setSesSourceArn] = useState(null);\n  const [sesSourceArnError, setSesSourceArnError] = useState(\"\");\n  const [visible, setVisible] = useState(false);\n  const [submitLoading, setSubmitLoading] = useState(false);\n  const [item, setItem] = useState(null);\n  const [groups, setGroups] = useState([]);\n  const [groupStatus, setGroupStatus] = useState(\"\");\n  const [teamAdminGroup, setTeamAdminGroup] = useState(\"\");\n  const [teamAuditorGroup, setTeamAuditorGroup] = useState(\"\");\n\n  function getGroups() {\n    setGroupStatus(\"loading\");\n    fetchIdCGroups().then((data) => {\n      setGroups(data);\n      setGroupStatus(\"finished\");\n    });\n  }\n\n  const slackAppManifest = {\n    display_information: {\n      name: \"TEAM\",\n      description: \"Temporary Elevated Access Management for AWS IAM Identity Center\",\n      background_color: \"#252F3E\",\n    },\n    features: {\n      bot_user: {\n        display_name: \"TEAM\",\n        always_online: false,\n      },\n    },\n    oauth_config: {\n      scopes: {\n        bot: [\n          \"channels:read\",\n          \"chat:write\",\n          \"groups:read\",\n          \"im:write\",\n          \"usergroups:read\",\n          \"users:read\",\n          \"users.profile:read\",\n          \"users:read.email\",\n        ],\n      },\n    },\n    settings: {\n      org_deploy_enabled: false,\n      socket_mode_enabled: false,\n      token_rotation_enabled: false,\n    },\n  };\n  const encodedSlackAppManifest = encodeURIComponent(\n    JSON.stringify(slackAppManifest)\n  );\n  const baseSlackAppUrl = \"https://api.slack.com/apps?new_app=1&manifest_json=\";\n  const slackAppInstallUrl = baseSlackAppUrl + encodedSlackAppManifest;\n\n  useEffect(() => {\n    views();\n  }, []);\n\n  function views() {\n    getGroups();\n    setVisible(false);\n    setSubmitLoading(false);\n    getSettings();\n  }\n\n  async function validate() {\n    let error = false;\n    const emailRegex = /\\S+@\\S+\\.\\S+/;\n\n    if (\n      !duration ||\n      isNaN(duration) ||\n      Number(duration) > 8000 ||\n      Number(duration) < 1\n    ) {\n      setDurationError(`Enter valid duration as a number between 1 - 8000`);\n      error = true;\n    }\n    if (\n      !expiry ||\n      isNaN(expiry) ||\n      Number(expiry) > 8000 ||\n      Number(expiry) < 1\n    ) {\n      setExpiryError(`Enter valid expiry timeout as a number between 1 - 8000`);\n      error = true;\n    }\n    if (sesNotificationsEnabled && !emailRegex.test(sesSourceEmail)) {\n      setSesSourceEmailError(`Enter a valid email address`);\n      error = true;\n    }\n    if (\n      sesNotificationsEnabled &&\n      !(sesSourceArn === \"\" || sesSourceArn.startsWith(\"arn:\"))\n    ) {\n      setSesSourceArnError(\n        `Enter a valid ARN for an SES identity, or leave blank if using an identity in the TEAM account`\n      );\n      error = true;\n    }\n    if (slackNotificationsEnabled) {\n      if (!slackToken.startsWith(\"xoxb\")) {\n        setSlackTokenError(`Enter a valid Slack bot token`);\n        error = true;\n      } else if (slackToken.length < 10) {\n        setSlackTokenError(`Enter a complete OAuth token`);\n        error = true;\n      }\n    }\n    return error;\n  }\n\n  function handleEdit() {\n    setVisible(true);\n  }\n  function handleDismiss() {\n    // Reset item states\n    if (item) {\n      setDuration(item.duration ?? \"9\");\n      setExpiry(item.expiry ?? \"3\");\n      setComments(item.comments ?? true);\n      setTicketNo(item.ticketNo ?? true);\n      setApproval(item.approval ?? true);\n      setSesNotificationsEnabled(item.sesNotificationsEnabled ?? false);\n      setSnsNotificationsEnabled(item.snsNotificationsEnabled ?? false);\n      setSlackNotificationsEnabled(item.slackNotificationsEnabled ?? false);\n      setSesSourceEmail(item.sesSourceEmail ?? \"\");\n      setSesSourceArn(item.sesSourceArn ?? \"\" );\n      setSlackToken(item.slackToken ?? \"\");\n      setTeamAdminGroup(item.teamAdminGroup ?? params.teamAdminGroup);\n      setTeamAuditorGroup(item.teamAuditorGroup ?? params.teamAuditorGroup);\n    }\n    setVisible(false);\n  }\n  async function handleSubmit() {\n    setSubmitLoading(true);\n    if (!(await validate())) {\n      const data = {\n        id: \"settings\",\n        duration,\n        expiry,\n        comments,\n        ticketNo,\n        approval,\n        sesNotificationsEnabled,\n        snsNotificationsEnabled,\n        slackNotificationsEnabled,\n        sesSourceEmail,\n        sesSourceArn,\n        slackToken,\n        teamAdminGroup,\n        teamAuditorGroup,\n      };\n      const action = item === null ? createSetting : updateSetting;\n      action(data).then(() => {\n        views();\n        props.addNotification([\n          {\n            type: \"success\",\n            content: \"TEAM configuration edited successfully\",\n            dismissible: true,\n            onDismiss: () => props.addNotification([]),\n          },\n        ]);\n      });\n    } else setSubmitLoading(false);\n  }\n\n  function getSettings() {\n    getSetting(\"settings\").then((data) => {\n      setItem(data ?? null);\n      setDuration(data?.duration ?? \"9\");\n      setExpiry(data?.expiry ?? \"3\");\n      setComments(data?.comments ?? true);\n      setTicketNo(data?.ticketNo ?? true);\n      setApproval(data?.approval ?? true);\n      setSesNotificationsEnabled(data?.sesNotificationsEnabled ?? false);\n      setSnsNotificationsEnabled(data?.snsNotificationsEnabled ?? false);\n      setSlackNotificationsEnabled(data?.slackNotificationsEnabled ?? false);\n      setSesSourceEmail(data?.sesSourceEmail ?? \"\");\n      setSesSourceArn(data?.sesSourceArn ?? \"\" );\n      setSlackToken(data?.slackToken ?? \"\");\n      setTeamAdminGroup(data?.teamAdminGroup ?? params.teamAdminGroup);\n      setTeamAuditorGroup(data?.teamAuditorGroup ?? params.teamAuditorGroup);\n    });\n  }\n\n  return (\n    <div className=\"container\">\n      <ContentLayout>\n        <Container\n          header={\n            <Header\n              variant=\"h2\"\n              description=\"Custom configuration settings for TEAM application\"\n              actions={\n                <Button variant=\"primary\" onClick={handleEdit}>\n                  Edit\n                </Button>\n              }\n            >\n              Configuration settings\n            </Header>\n          }\n        >\n          <ColumnLayout columns={3} variant=\"text-grid\">\n            <SpaceBetween size=\"l\">\n              <div>\n                <Box variant=\"h3\">Request settings</Box>\n                <Box variant=\"small\">\n                  Elevated access request settings\n                </Box>\n                <Divider style={{ marginBottom: \"7px\", marginTop: \"7px\" }} />\n              </div>\n              <div>\n                <Box variant=\"awsui-key-label\">Approval workflow</Box>\n                <>\n                  {\" \"}\n                  {approval !== null ? (\n                    <div>\n                      <StatusIndicator\n                        type={approval === true ? \"success\" : \"stopped\"}\n                      >\n                        {approval === true ? \"Enabled (Managed in eligibility policy)\" : \"Disabled\"}\n                      </StatusIndicator>\n                    </div>\n                  ) : (\n                    <Spinner />\n                  )}\n                </>\n              </div>\n              <div>\n                <Box variant=\"awsui-key-label\">Comments</Box>\n                <>\n                  {\" \"}\n                  {comments !== null ? (\n                    <div>\n                      <StatusIndicator\n                        type={comments === true ? \"success\" : \"stopped\"}\n                      >\n                        {comments === true ? \"Required\" : \"Not required\"}\n                      </StatusIndicator>\n                    </div>\n                  ) : (\n                    <Spinner />\n                  )}\n                </>\n              </div>\n              <div>\n                <Box variant=\"awsui-key-label\">Ticket number</Box>\n                <>\n                  {\" \"}\n                  {ticketNo !== null ? (\n                    <div>\n                      <StatusIndicator\n                        type={ticketNo === true ? \"success\" : \"stopped\"}\n                      >\n                        {ticketNo === true ? \"Required\" : \"Not required\"}\n                      </StatusIndicator>\n                    </div>\n                  ) : (\n                    <Spinner />\n                  )}\n                </>\n              </div>\n              <div>\n                <Box variant=\"awsui-key-label\">Maximum request duration</Box>\n                <>\n                  {\" \"}\n                  {duration !== null ? (\n                    <div>{duration} hours</div>\n                  ) : (\n                    <Spinner />\n                  )}\n                </>\n              </div>\n              <div>\n                <Box variant=\"awsui-key-label\">Request expiry timeout</Box>\n                <>\n                  {\" \"}\n                  {expiry !== null ? <div>{expiry} hours</div> : <Spinner />}\n                </>\n              </div>\n            </SpaceBetween>\n            <SpaceBetween size=\"l\">\n              <div>\n                <Box variant=\"h3\">Group settings</Box>\n                <Box variant=\"small\">TEAM admin and auditor group settings</Box>\n                <Divider style={{ marginBottom: \"7px\", marginTop: \"7px\" }} />\n              </div>\n              <div>\n                <Box variant=\"awsui-key-label\">TEAM admin group</Box>\n                <>\n                  {\" \"}\n                  {teamAdminGroup !== null ? (\n                    <div>{teamAdminGroup}</div>\n                  ) : (\n                    <Spinner />\n                  )}\n                </>\n              </div>\n              <div>\n                <Box variant=\"awsui-key-label\">TEAM auditor group</Box>\n                <>\n                  {\" \"}\n                  {teamAuditorGroup !== null ? (\n                    <div>{teamAuditorGroup}</div>\n                  ) : (\n                    <Spinner />\n                  )}\n                </>\n              </div>\n            </SpaceBetween>\n            <SpaceBetween size=\"l\">\n              <div>\n                <Box variant=\"h3\">Notification settings</Box>\n                <Box variant=\"small\">\n                  Notification settings for request and approval events\n                </Box>\n                <Divider style={{ marginBottom: \"7px\", marginTop: \"7px\" }} />\n              </div>\n              <div>\n                <Box variant=\"awsui-key-label\">Email notifications</Box>\n                <>\n                  {\" \"}\n                  {sesNotificationsEnabled !== null ? (\n                    <div>\n                      <StatusIndicator\n                        type={\n                          sesNotificationsEnabled === true\n                            ? \"success\"\n                            : \"stopped\"\n                        }\n                      >\n                        {sesNotificationsEnabled === true\n                          ? sesSourceEmail\n                          : \"Disabled\"}\n                      </StatusIndicator>\n                    </div>\n                  ) : (\n                    <Spinner />\n                  )}\n                </>\n              </div>\n              {sesNotificationsEnabled === \"SES\" && (\n                <div>\n                  <Box variant=\"awsui-key-label\">SES source email</Box>\n                  <>\n                    {\" \"}\n                    {sesSourceEmail !== null ? (\n                      <div>{sesSourceEmail}</div>\n                    ) : (\n                      <Spinner />\n                    )}\n                  </>\n                  <br />\n                  <Box variant=\"awsui-key-label\">SES source ARN</Box>\n                  <>\n                    {\" \"}\n                    {sesSourceArn !== null ? (\n                      <div>{sesSourceArn}</div>\n                    ) : (\n                      <Spinner />\n                    )}\n                  </>\n                </div>\n              )}\n              <div>\n                <Box variant=\"awsui-key-label\">SNS notifications</Box>\n                <>\n                  {\" \"}\n                  {snsNotificationsEnabled !== null ? (\n                    <div>\n                      <StatusIndicator\n                        type={\n                          snsNotificationsEnabled === true\n                            ? \"success\"\n                            : \"stopped\"\n                        }\n                      >\n                        {snsNotificationsEnabled === true\n                          ? \"Enabled\"\n                          : \"Disabled\"}\n                      </StatusIndicator>\n                    </div>\n                  ) : (\n                    <Spinner />\n                  )}\n                </>\n              </div>\n              <div>\n                <Box variant=\"awsui-key-label\">Slack notifications</Box>\n                <>\n                  {\" \"}\n                  {slackNotificationsEnabled !== null ? (\n                    <div>\n                      <StatusIndicator\n                        type={\n                          slackNotificationsEnabled === true\n                            ? \"success\"\n                            : \"stopped\"\n                        }\n                      >\n                        {slackNotificationsEnabled === true\n                          ? \"Enabled\"\n                          : \"Disabled\"}\n                      </StatusIndicator>\n                    </div>\n                  ) : (\n                    <Spinner />\n                  )}\n                </>\n              </div>\n            </SpaceBetween>\n          </ColumnLayout>\n        </Container>\n        <Modal\n          onDismiss={() => handleDismiss()}\n          visible={visible}\n          closeAriaLabel=\"Close modal\"\n          size=\"large\"\n          header=\"Edit configuration settings\"\n        >\n          <Form\n            actions={\n              <SpaceBetween direction=\"horizontal\" size=\"xs\">\n                <Button variant=\"link\" onClick={handleDismiss}>\n                  Cancel\n                </Button>\n                <Button\n                  variant=\"primary\"\n                  type=\"submit\"\n                  onClick={handleSubmit}\n                  loading={submitLoading}\n                >\n                  Submit\n                </Button>\n              </SpaceBetween>\n            }\n          >\n            <SpaceBetween direction=\"vertical\" size=\"l\">\n              <div>\n                <Box variant=\"h3\">Group settings</Box>\n                <Box variant=\"small\">TEAM admin and auditor group settings</Box>\n                <Divider style={{ marginBottom: \"1px\", marginTop: \"7px\" }} />\n              </div>\n              <FormField\n                label=\"TEAM admin Group\"\n                stretch\n                description=\"Group of users responsible for managing TEAM administrative configurations\"\n              >\n                <Select\n                  statusType={groupStatus}\n                  placeholder=\"Select Group\"\n                  loadingText=\"Loading Groups\"\n                  filteringType=\"auto\"\n                  empty=\"No groups found\"\n                  options={groups.map((group) => ({\n                    label: group.DisplayName,\n                    value: group.GroupId,\n                    description: group.GroupId,\n                  }))}\n                  selectedOption={{ label: teamAdminGroup }}\n                  onChange={({ detail }) => {\n                    setTeamAdminGroup(detail.selectedOption.label);\n                  }}\n                  selectedAriaLabel=\"selected\"\n                />\n              </FormField>\n              <FormField\n                label=\"TEAM auditor Group\"\n                stretch\n                description=\"Group of users allowed to audit TEAM elevated access requests\"\n              >\n                <Select\n                  statusType={groupStatus}\n                  placeholder=\"Select Group\"\n                  loadingText=\"Loading Groups\"\n                  filteringType=\"auto\"\n                  empty=\"No groups found\"\n                  options={groups.map((group) => ({\n                    label: group.DisplayName,\n                    value: group.GroupId,\n                    description: group.GroupId,\n                  }))}\n                  selectedOption={{ label: teamAuditorGroup }}\n                  onChange={({ detail }) => {\n                    setTeamAuditorGroup(detail.selectedOption.label);\n                  }}\n                  selectedAriaLabel=\"selected\"\n                />\n              </FormField>\n              <div>\n                <Box variant=\"h3\">Request settings</Box>\n                <Box variant=\"small\">Controls access request requirements</Box>\n                <Divider style={{ marginBottom: \"1px\", marginTop: \"7px\" }} />\n              </div>\n              <div>\n                <FormField\n                  label=\"Approval workflow\"\n                  stretch\n                  description=\"If disabled, approval will not be required for all elevated access requests. If enabled, approval requirement is managed in eligibility policy configuration\"\n                >\n                  <Toggle\n                    onChange={({ detail }) => setApproval(detail.checked)}\n                    checked={approval}\n                  >\n                    {approval ? \"Enabled\" : \"Disabled\"}\n                  </Toggle>\n                </FormField>\n                <br />\n                <FormField\n                  label=\"Comments\"\n                  stretch\n                  description=\"Determines if comment field is mandatory for all elevated access requests\"\n                >\n                  <Toggle\n                    onChange={({ detail }) => setComments(detail.checked)}\n                    checked={comments}\n                  >\n                    {comments ? \"Required\" : \"Not required\"}\n                  </Toggle>\n                </FormField>\n                <br />\n                <FormField\n                  label=\"Ticket number\"\n                  stretch\n                  description=\"Determines if ticket number field is mandatory for elevated access requests\"\n                >\n                  <Toggle\n                    onChange={({ detail }) => setTicketNo(detail.checked)}\n                    checked={ticketNo}\n                  >\n                    {ticketNo ? \"Required\" : \"Not required\"}\n                  </Toggle>\n                </FormField>\n                <br />\n                <FormField\n                  label=\"Maximum request duration\"\n                  stretch\n                  description=\"Default maximum request duration in hours\"\n                  errorText={durationError}\n                >\n                  <Input\n                    value={duration}\n                    onChange={(event) => {\n                      setDurationError();\n                      setDuration(event.detail.value);\n                    }}\n                    type=\"number\"\n                  />\n                </FormField>\n                <br />\n                <FormField\n                  label=\"Request expiry timeout\"\n                  stretch\n                  description=\"Number of time in hours before an unapproved TEAM request expires\"\n                  errorText={expiryError}\n                >\n                  <Input\n                    value={expiry}\n                    onChange={(event) => {\n                      setExpiryError();\n                      setExpiry(event.detail.value);\n                    }}\n                    type=\"number\"\n                  />\n                </FormField>\n              </div>\n              <div>\n                <Box variant=\"h3\">Notification settings</Box>\n                <Box variant=\"small\">\n                  Notification settings for request and approval events\n                </Box>\n                <Divider style={{ marginBottom: \"1px\", marginTop: \"7px\" }} />\n              </div>\n              <FormField\n                label=\"Email notifications\"\n                stretch\n                description=\"Send notifications via Amazon SES\"\n              >\n                <Toggle\n                  onChange={({ detail }) => {\n                    setSesNotificationsEnabled(detail.checked);\n                  }}\n                  checked={sesNotificationsEnabled}\n                >\n                  Send email notifications\n                </Toggle>\n              </FormField>\n              {sesNotificationsEnabled && (\n                <div>\n                  <FormField\n                    label=\"Source email\"\n                    stretch\n                    description=\"Email address to send notifications from. Must be verified in SES.\"\n                    errorText={sesSourceEmailError}\n                  >\n                    <Input\n                      value={sesSourceEmail}\n                      onChange={(event) => {\n                        setSesSourceEmailError();\n                        setSesSourceEmail(event.detail.value);\n                      }}\n                    >\n                      Source email\n                    </Input>\n                  </FormField>\n                  <br />\n                  <FormField\n                    label=\"Source ARN (Optional, for cross-account SES identities)\"\n                    stretch\n                    description=\"ARN of a verified SES identity in another AWS account. Must be configured to authorize sending mail from the TEAM account.\"\n                    errorText={sesSourceArnError}\n                  >\n                    <Input\n                      value={sesSourceArn}\n                      onChange={(event) => {\n                        setSesSourceArnError();\n                        setSesSourceArn(event.detail.value);\n                      }}\n                    >\n                      Source email\n                    </Input>\n                  </FormField>\n                </div>\n              )}\n              <FormField\n                label=\"SNS notifications\"\n                stretch\n                description=\"Send notifications via Amazon SNS. Once enabled, create a subscription to the SNS topic (TeamNotifications-main) in the TEAM account.\"\n              >\n                <Toggle\n                  onChange={({ detail }) => {\n                    setSnsNotificationsEnabled(detail.checked);\n                  }}\n                  checked={snsNotificationsEnabled}\n                >\n                  Send SNS notifications\n                </Toggle>\n              </FormField>\n              <FormField\n                label=\"Slack notifications\"\n                stretch\n                description=\"Send notifications directly to users in Slack via a Slack bot app.\"\n              >\n                <Toggle\n                  onChange={({ detail }) => {\n                    setSlackNotificationsEnabled(detail.checked);\n                  }}\n                  checked={slackNotificationsEnabled}\n                >\n                  Send Slack notifications\n                </Toggle>\n              </FormField>\n              {slackNotificationsEnabled && (\n                <div>\n                  <Button\n                    ariaLabel=\"Install Slack App (opens new tab)\"\n                    href={slackAppInstallUrl}\n                    iconAlign=\"right\"\n                    iconName=\"external\"\n                    target=\"_blank\"\n                  >\n                    Install Slack App\n                  </Button>\n                  <br />\n                  <br />\n                  <FormField\n                    label=\"Slack OAuth token\"\n                    stretch\n                    description=\"Slack OAuth token associated with the installed app.\"\n                    errorText={slackTokenError}\n                  >\n                    <Input\n                      value={slackToken}\n                      onChange={(event) => {\n                        setSlackTokenError();\n                        setSlackToken(event.detail.value);\n                      }}\n                      type=\"password\"\n                    >\n                      Slack token\n                    </Input>\n                  </FormField>\n                </div>\n              )}\n            </SpaceBetween>\n          </Form>\n        </Modal>\n      </ContentLayout>\n    </div>\n  );\n}\n\nexport default Settings;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Element = function Element(props) {\n  var _classNames, _classNames2;\n  var prefixCls = props.prefixCls,\n    className = props.className,\n    style = props.style,\n    size = props.size,\n    shape = props.shape;\n  var sizeCls = classNames((_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-lg\"), size === 'large'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-sm\"), size === 'small'), _classNames));\n  var shapeCls = classNames((_classNames2 = {}, _defineProperty(_classNames2, \"\".concat(prefixCls, \"-circle\"), shape === 'circle'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-square\"), shape === 'square'), _defineProperty(_classNames2, \"\".concat(prefixCls, \"-round\"), shape === 'round'), _classNames2));\n  var sizeStyle = React.useMemo(function () {\n    return typeof size === 'number' ? {\n      width: size,\n      height: size,\n      lineHeight: \"\".concat(size, \"px\")\n    } : {};\n  }, [size]);\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: classNames(prefixCls, sizeCls, shapeCls, className),\n    style: _extends(_extends({}, sizeStyle), style)\n  });\n};\nexport default Element;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nvar SkeletonAvatar = function SkeletonAvatar(props) {\n  var customizePrefixCls = props.prefixCls,\n    className = props.className,\n    active = props.active,\n    _props$shape = props.shape,\n    shape = _props$shape === void 0 ? 'circle' : _props$shape,\n    _props$size = props.size,\n    size = _props$size === void 0 ? 'default' : _props$size;\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls;\n  var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  var otherProps = omit(props, ['prefixCls', 'className']);\n  var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), _defineProperty({}, \"\".concat(prefixCls, \"-active\"), active), className);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(Element, _extends({\n    prefixCls: \"\".concat(prefixCls, \"-avatar\"),\n    shape: shape,\n    size: size\n  }, otherProps)));\n};\nexport default SkeletonAvatar;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nvar SkeletonButton = function SkeletonButton(props) {\n  var _classNames;\n  var customizePrefixCls = props.prefixCls,\n    className = props.className,\n    active = props.active,\n    _props$block = props.block,\n    block = _props$block === void 0 ? false : _props$block,\n    _props$size = props.size,\n    size = _props$size === void 0 ? 'default' : _props$size;\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls;\n  var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  var otherProps = omit(props, ['prefixCls']);\n  var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-block\"), block), _classNames), className);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(Element, _extends({\n    prefixCls: \"\".concat(prefixCls, \"-button\"),\n    size: size\n  }, otherProps)));\n};\nexport default SkeletonButton;","// This icon file is generated automatically.\nvar DotChartOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M888 792H200V168c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v688c0 4.4 3.6 8 8 8h752c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM288 604a64 64 0 10128 0 64 64 0 10-128 0zm118-224a48 48 0 1096 0 48 48 0 10-96 0zm158 228a96 96 0 10192 0 96 96 0 10-192 0zm148-314a56 56 0 10112 0 56 56 0 10-112 0z\" } }] }, \"name\": \"dot-chart\", \"theme\": \"outlined\" };\nexport default DotChartOutlined;\n","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport * as React from 'react';\nimport DotChartOutlinedSvg from \"@ant-design/icons-svg/es/asn/DotChartOutlined\";\nimport AntdIcon from '../components/AntdIcon';\nvar DotChartOutlined = function DotChartOutlined(props, ref) {\n  return /*#__PURE__*/React.createElement(AntdIcon, _objectSpread(_objectSpread({}, props), {}, {\n    ref: ref,\n    icon: DotChartOutlinedSvg\n  }));\n};\nDotChartOutlined.displayName = 'DotChartOutlined';\nexport default /*#__PURE__*/React.forwardRef(DotChartOutlined);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport DotChartOutlined from \"@ant-design/icons/es/icons/DotChartOutlined\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nvar SkeletonNode = function SkeletonNode(props) {\n  var customizePrefixCls = props.prefixCls,\n    className = props.className,\n    style = props.style,\n    active = props.active,\n    children = props.children;\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls;\n  var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), _defineProperty({}, \"\".concat(prefixCls, \"-active\"), active), className);\n  var content = children !== null && children !== void 0 ? children : /*#__PURE__*/React.createElement(DotChartOutlined, null);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-image\"), className),\n    style: style\n  }, content));\n};\nexport default SkeletonNode;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nvar path = 'M365.714286 329.142857q0 45.714286-32.036571 77.677714t-77.677714 32.036571-77.677714-32.036571-32.036571-77.677714 32.036571-77.677714 77.677714-32.036571 77.677714 32.036571 32.036571 77.677714zM950.857143 548.571429l0 256-804.571429 0 0-109.714286 182.857143-182.857143 91.428571 91.428571 292.571429-292.571429zM1005.714286 146.285714l-914.285714 0q-7.460571 0-12.873143 5.412571t-5.412571 12.873143l0 694.857143q0 7.460571 5.412571 12.873143t12.873143 5.412571l914.285714 0q7.460571 0 12.873143-5.412571t5.412571-12.873143l0-694.857143q0-7.460571-5.412571-12.873143t-12.873143-5.412571zM1097.142857 164.571429l0 694.857143q0 37.741714-26.843429 64.585143t-64.585143 26.843429l-914.285714 0q-37.741714 0-64.585143-26.843429t-26.843429-64.585143l0-694.857143q0-37.741714 26.843429-64.585143t64.585143-26.843429l914.285714 0q37.741714 0 64.585143 26.843429t26.843429 64.585143z';\nvar SkeletonImage = function SkeletonImage(props) {\n  var customizePrefixCls = props.prefixCls,\n    className = props.className,\n    style = props.style,\n    active = props.active;\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls;\n  var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), _defineProperty({}, \"\".concat(prefixCls, \"-active\"), active), className);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    className: classNames(\"\".concat(prefixCls, \"-image\"), className),\n    style: style\n  }, /*#__PURE__*/React.createElement(\"svg\", {\n    viewBox: \"0 0 1098 1024\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    className: \"\".concat(prefixCls, \"-image-svg\")\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    d: path,\n    className: \"\".concat(prefixCls, \"-image-path\")\n  }))));\n};\nexport default SkeletonImage;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport classNames from 'classnames';\nimport omit from \"rc-util/es/omit\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport Element from './Element';\nvar SkeletonInput = function SkeletonInput(props) {\n  var _classNames;\n  var customizePrefixCls = props.prefixCls,\n    className = props.className,\n    active = props.active,\n    block = props.block,\n    _props$size = props.size,\n    size = _props$size === void 0 ? 'default' : _props$size;\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls;\n  var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  var otherProps = omit(props, ['prefixCls']);\n  var cls = classNames(prefixCls, \"\".concat(prefixCls, \"-element\"), (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-block\"), block), _classNames), className);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: cls\n  }, /*#__PURE__*/React.createElement(Element, _extends({\n    prefixCls: \"\".concat(prefixCls, \"-input\"),\n    size: size\n  }, otherProps)));\n};\nexport default SkeletonInput;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Paragraph = function Paragraph(props) {\n  var getWidth = function getWidth(index) {\n    var width = props.width,\n      _props$rows = props.rows,\n      rows = _props$rows === void 0 ? 2 : _props$rows;\n    if (Array.isArray(width)) {\n      return width[index];\n    }\n    // last paragraph\n    if (rows - 1 === index) {\n      return width;\n    }\n    return undefined;\n  };\n  var prefixCls = props.prefixCls,\n    className = props.className,\n    style = props.style,\n    rows = props.rows;\n  var rowList = _toConsumableArray(Array(rows)).map(function (_, index) {\n    return (\n      /*#__PURE__*/\n      // eslint-disable-next-line react/no-array-index-key\n      React.createElement(\"li\", {\n        key: index,\n        style: {\n          width: getWidth(index)\n        }\n      })\n    );\n  });\n  return /*#__PURE__*/React.createElement(\"ul\", {\n    className: classNames(prefixCls, className),\n    style: style\n  }, rowList);\n};\nexport default Paragraph;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/* eslint-disable jsx-a11y/heading-has-content */\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar Title = function Title(_ref) {\n  var prefixCls = _ref.prefixCls,\n    className = _ref.className,\n    width = _ref.width,\n    style = _ref.style;\n  return /*#__PURE__*/React.createElement(\"h3\", {\n    className: classNames(prefixCls, className),\n    style: _extends({\n      width: width\n    }, style)\n  });\n};\nexport default Title;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport SkeletonAvatar from './Avatar';\nimport SkeletonButton from './Button';\nimport SkeletonNode from './Node';\nimport Element from './Element';\nimport SkeletonImage from './Image';\nimport SkeletonInput from './Input';\nimport Paragraph from './Paragraph';\nimport Title from './Title';\nfunction getComponentProps(prop) {\n  if (prop && _typeof(prop) === 'object') {\n    return prop;\n  }\n  return {};\n}\nfunction getAvatarBasicProps(hasTitle, hasParagraph) {\n  if (hasTitle && !hasParagraph) {\n    // Square avatar\n    return {\n      size: 'large',\n      shape: 'square'\n    };\n  }\n  return {\n    size: 'large',\n    shape: 'circle'\n  };\n}\nfunction getTitleBasicProps(hasAvatar, hasParagraph) {\n  if (!hasAvatar && hasParagraph) {\n    return {\n      width: '38%'\n    };\n  }\n  if (hasAvatar && hasParagraph) {\n    return {\n      width: '50%'\n    };\n  }\n  return {};\n}\nfunction getParagraphBasicProps(hasAvatar, hasTitle) {\n  var basicProps = {};\n  // Width\n  if (!hasAvatar || !hasTitle) {\n    basicProps.width = '61%';\n  }\n  // Rows\n  if (!hasAvatar && hasTitle) {\n    basicProps.rows = 3;\n  } else {\n    basicProps.rows = 2;\n  }\n  return basicProps;\n}\nvar Skeleton = function Skeleton(props) {\n  var customizePrefixCls = props.prefixCls,\n    loading = props.loading,\n    className = props.className,\n    style = props.style,\n    children = props.children,\n    _props$avatar = props.avatar,\n    avatar = _props$avatar === void 0 ? false : _props$avatar,\n    _props$title = props.title,\n    title = _props$title === void 0 ? true : _props$title,\n    _props$paragraph = props.paragraph,\n    paragraph = _props$paragraph === void 0 ? true : _props$paragraph,\n    active = props.active,\n    round = props.round;\n  var _React$useContext = React.useContext(ConfigContext),\n    getPrefixCls = _React$useContext.getPrefixCls,\n    direction = _React$useContext.direction;\n  var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n  if (loading || !('loading' in props)) {\n    var _classNames;\n    var hasAvatar = !!avatar;\n    var hasTitle = !!title;\n    var hasParagraph = !!paragraph;\n    // Avatar\n    var avatarNode;\n    if (hasAvatar) {\n      var avatarProps = _extends(_extends({\n        prefixCls: \"\".concat(prefixCls, \"-avatar\")\n      }, getAvatarBasicProps(hasTitle, hasParagraph)), getComponentProps(avatar));\n      // We direct use SkeletonElement as avatar in skeleton internal.\n      avatarNode = /*#__PURE__*/React.createElement(\"div\", {\n        className: \"\".concat(prefixCls, \"-header\")\n      }, /*#__PURE__*/React.createElement(Element, _extends({}, avatarProps)));\n    }\n    var contentNode;\n    if (hasTitle || hasParagraph) {\n      // Title\n      var $title;\n      if (hasTitle) {\n        var titleProps = _extends(_extends({\n          prefixCls: \"\".concat(prefixCls, \"-title\")\n        }, getTitleBasicProps(hasAvatar, hasParagraph)), getComponentProps(title));\n        $title = /*#__PURE__*/React.createElement(Title, _extends({}, titleProps));\n      }\n      // Paragraph\n      var paragraphNode;\n      if (hasParagraph) {\n        var paragraphProps = _extends(_extends({\n          prefixCls: \"\".concat(prefixCls, \"-paragraph\")\n        }, getParagraphBasicProps(hasAvatar, hasTitle)), getComponentProps(paragraph));\n        paragraphNode = /*#__PURE__*/React.createElement(Paragraph, _extends({}, paragraphProps));\n      }\n      contentNode = /*#__PURE__*/React.createElement(\"div\", {\n        className: \"\".concat(prefixCls, \"-content\")\n      }, $title, paragraphNode);\n    }\n    var cls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, \"\".concat(prefixCls, \"-with-avatar\"), hasAvatar), _defineProperty(_classNames, \"\".concat(prefixCls, \"-active\"), active), _defineProperty(_classNames, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), _defineProperty(_classNames, \"\".concat(prefixCls, \"-round\"), round), _classNames), className);\n    return /*#__PURE__*/React.createElement(\"div\", {\n      className: cls,\n      style: style\n    }, avatarNode, contentNode);\n  }\n  return typeof children !== 'undefined' ? children : null;\n};\nSkeleton.Button = SkeletonButton;\nSkeleton.Avatar = SkeletonAvatar;\nSkeleton.Input = SkeletonInput;\nSkeleton.Image = SkeletonImage;\nSkeleton.Node = SkeletonNode;\nexport default Skeleton;","import Skeleton from './Skeleton';\nexport default Skeleton;","import padEnd from 'lodash/padEnd';\nimport * as React from 'react';\nvar StatisticNumber = function StatisticNumber(props) {\n  var value = props.value,\n    formatter = props.formatter,\n    precision = props.precision,\n    decimalSeparator = props.decimalSeparator,\n    _props$groupSeparator = props.groupSeparator,\n    groupSeparator = _props$groupSeparator === void 0 ? '' : _props$groupSeparator,\n    prefixCls = props.prefixCls;\n  var valueNode;\n  if (typeof formatter === 'function') {\n    // Customize formatter\n    valueNode = formatter(value);\n  } else {\n    // Internal formatter\n    var val = String(value);\n    var cells = val.match(/^(-?)(\\d*)(\\.(\\d+))?$/);\n    // Process if illegal number\n    if (!cells || val === '-') {\n      valueNode = val;\n    } else {\n      var negative = cells[1];\n      var int = cells[2] || '0';\n      var decimal = cells[4] || '';\n      int = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, groupSeparator);\n      if (typeof precision === 'number') {\n        decimal = padEnd(decimal, precision, '0').slice(0, precision > 0 ? precision : 0);\n      }\n      if (decimal) {\n        decimal = \"\".concat(decimalSeparator).concat(decimal);\n      }\n      valueNode = [/*#__PURE__*/React.createElement(\"span\", {\n        key: \"int\",\n        className: \"\".concat(prefixCls, \"-content-value-int\")\n      }, negative, int), decimal && /*#__PURE__*/React.createElement(\"span\", {\n        key: \"decimal\",\n        className: \"\".concat(prefixCls, \"-content-value-decimal\")\n      }, decimal)];\n    }\n  }\n  return /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-content-value\")\n  }, valueNode);\n};\nexport default StatisticNumber;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { withConfigConsumer } from '../config-provider/context';\nimport Skeleton from '../skeleton';\nimport StatisticNumber from './Number';\nvar Statistic = function Statistic(props) {\n  var prefixCls = props.prefixCls,\n    className = props.className,\n    style = props.style,\n    valueStyle = props.valueStyle,\n    _props$value = props.value,\n    value = _props$value === void 0 ? 0 : _props$value,\n    title = props.title,\n    valueRender = props.valueRender,\n    prefix = props.prefix,\n    suffix = props.suffix,\n    _props$loading = props.loading,\n    loading = _props$loading === void 0 ? false : _props$loading,\n    direction = props.direction,\n    onMouseEnter = props.onMouseEnter,\n    onMouseLeave = props.onMouseLeave,\n    _props$decimalSeparat = props.decimalSeparator,\n    decimalSeparator = _props$decimalSeparat === void 0 ? '.' : _props$decimalSeparat,\n    _props$groupSeparator = props.groupSeparator,\n    groupSeparator = _props$groupSeparator === void 0 ? ',' : _props$groupSeparator;\n  var valueNode = /*#__PURE__*/React.createElement(StatisticNumber, _extends({\n    decimalSeparator: decimalSeparator,\n    groupSeparator: groupSeparator\n  }, props, {\n    value: value\n  }));\n  var cls = classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), direction === 'rtl'), className);\n  return /*#__PURE__*/React.createElement(\"div\", {\n    className: cls,\n    style: style,\n    onMouseEnter: onMouseEnter,\n    onMouseLeave: onMouseLeave\n  }, title && /*#__PURE__*/React.createElement(\"div\", {\n    className: \"\".concat(prefixCls, \"-title\")\n  }, title), /*#__PURE__*/React.createElement(Skeleton, {\n    paragraph: false,\n    loading: loading,\n    className: \"\".concat(prefixCls, \"-skeleton\")\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    style: valueStyle,\n    className: \"\".concat(prefixCls, \"-content\")\n  }, prefix && /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-content-prefix\")\n  }, prefix), valueRender ? valueRender(valueNode) : valueNode, suffix && /*#__PURE__*/React.createElement(\"span\", {\n    className: \"\".concat(prefixCls, \"-content-suffix\")\n  }, suffix))));\n};\nvar WrapperStatistic = withConfigConsumer({\n  prefixCls: 'statistic'\n})(Statistic);\nexport default WrapperStatistic;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport padStart from 'lodash/padStart';\n// Countdown\nvar timeUnits = [['Y', 1000 * 60 * 60 * 24 * 365], ['M', 1000 * 60 * 60 * 24 * 30], ['D', 1000 * 60 * 60 * 24], ['H', 1000 * 60 * 60], ['m', 1000 * 60], ['s', 1000], ['S', 1] // million seconds\n];\n\nexport function formatTimeStr(duration, format) {\n  var leftDuration = duration;\n  var escapeRegex = /\\[[^\\]]*]/g;\n  var keepList = (format.match(escapeRegex) || []).map(function (str) {\n    return str.slice(1, -1);\n  });\n  var templateText = format.replace(escapeRegex, '[]');\n  var replacedText = timeUnits.reduce(function (current, _ref) {\n    var _ref2 = _slicedToArray(_ref, 2),\n      name = _ref2[0],\n      unit = _ref2[1];\n    if (current.includes(name)) {\n      var value = Math.floor(leftDuration / unit);\n      leftDuration -= value * unit;\n      return current.replace(new RegExp(\"\".concat(name, \"+\"), 'g'), function (match) {\n        var len = match.length;\n        return padStart(value.toString(), len, '0');\n      });\n    }\n    return current;\n  }, templateText);\n  var index = 0;\n  return replacedText.replace(escapeRegex, function () {\n    var match = keepList[index];\n    index += 1;\n    return match;\n  });\n}\nexport function formatCountdown(value, config) {\n  var _config$format = config.format,\n    format = _config$format === void 0 ? '' : _config$format;\n  var target = new Date(value).getTime();\n  var current = Date.now();\n  var diff = Math.max(target - current, 0);\n  return formatTimeStr(diff, format);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useForceUpdate from '../_util/hooks/useForceUpdate';\nimport { cloneElement } from '../_util/reactNode';\nimport Statistic from './Statistic';\nimport { formatCountdown } from './utils';\nvar REFRESH_INTERVAL = 1000 / 30;\nfunction getTime(value) {\n  return new Date(value).getTime();\n}\nvar Countdown = function Countdown(props) {\n  var value = props.value,\n    _props$format = props.format,\n    format = _props$format === void 0 ? 'HH:mm:ss' : _props$format,\n    onChange = props.onChange,\n    onFinish = props.onFinish;\n  var forceUpdate = useForceUpdate();\n  var countdown = React.useRef(null);\n  var stopTimer = function stopTimer() {\n    onFinish === null || onFinish === void 0 ? void 0 : onFinish();\n    if (countdown.current) {\n      clearInterval(countdown.current);\n      countdown.current = null;\n    }\n  };\n  var syncTimer = function syncTimer() {\n    var timestamp = getTime(value);\n    if (timestamp >= Date.now()) {\n      countdown.current = setInterval(function () {\n        forceUpdate();\n        onChange === null || onChange === void 0 ? void 0 : onChange(timestamp - Date.now());\n        if (timestamp < Date.now()) {\n          stopTimer();\n        }\n      }, REFRESH_INTERVAL);\n    }\n  };\n  React.useEffect(function () {\n    syncTimer();\n    return function () {\n      if (countdown.current) {\n        clearInterval(countdown.current);\n        countdown.current = null;\n      }\n    };\n  }, [value]);\n  var formatter = function formatter(formatValue, config) {\n    return formatCountdown(formatValue, _extends(_extends({}, config), {\n      format: format\n    }));\n  };\n  var valueRender = function valueRender(node) {\n    return cloneElement(node, {\n      title: undefined\n    });\n  };\n  return /*#__PURE__*/React.createElement(Statistic, _extends({}, props, {\n    valueRender: valueRender,\n    formatter: formatter\n  }));\n};\nexport default /*#__PURE__*/React.memo(Countdown);","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nexport default function useForceUpdate() {\n  var _React$useReducer = React.useReducer(function (x) {\n      return x + 1;\n    }, 0),\n    _React$useReducer2 = _slicedToArray(_React$useReducer, 2),\n    forceUpdate = _React$useReducer2[1];\n  return forceUpdate;\n}","import Countdown from './Countdown';\nimport Statistic from './Statistic';\nStatistic.Countdown = Countdown;\nexport default Statistic;","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React from \"react\";\nimport \"antd/dist/antd.css\";\nimport { Statistic } from \"antd\";\nimport \"../../index.css\";\n\nconst { Countdown } = Statistic;\n\nfunction Timer(props) {\n  const startTime = Date.parse(props.item.startTime);\n  const createTime = Date.parse(props.item.createdAt);\n  if (props.item.status === \"scheduled\") {\n    return (\n      <Countdown\n        format={\"H[h]:mm[m]:ss[s]\"}\n        // className=\"countdown\"\n        title=\"Elevated access starts in\"\n        value={startTime}\n      />\n    );\n  } else if (props.item.status === \"in progress\") {\n    const ends = new Date(startTime + props.item.duration * 60 * 60 * 1000);\n    return (\n      <Countdown\n        format={\"H[h]:mm[m]:ss[s]\"}\n        title=\"Elevated access ends in\"\n        value={ends}\n      />\n    );\n  } else if (props.item.status === \"pending\") {\n    const expires = new Date(createTime + 60 * 60 * 1000 * props.expiry);\n    return (\n      <Countdown\n        format={\"H[h]:mm[m]:ss[s]\"}\n        // className=\"countdown\"\n        title=\"request expires in\"\n        value={expires}\n      />\n    );\n  } else return null;\n}\n\nexport default Timer;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React from \"react\";\nimport { Box, SpaceBetween, ColumnLayout } from \"@awsui/components-react\";\nimport { Divider } from \"antd\";\nimport Status from \"./Status\";\nimport Timer from \"../Sessions/Timer\";\nimport \"../../index.css\";\nimport \"antd/dist/antd.css\";\n\nfunction convertAwsDateTime(awsDateTime) {\n  // Parse AWS datetime string into a Date object\n  const date = new Date(awsDateTime);\n  // Format date in user-friendly format\n  const options = {\n    weekday: 'short',\n    day: 'numeric',\n    month: 'short',\n    hour: '2-digit',\n    minute: '2-digit'\n  };\n  const userFriendlyFormat = date.toLocaleString('en-US', options);\n  return userFriendlyFormat\n}\n\nfunction Details(props) {\n  const ValueWithLabel = ({ label, children }) => (\n    <div>\n      <div className=\"headings\">\n        <Box color=\"inherit\" fontSize=\"body-m\">\n          {label}\n        </Box>\n      </div>\n      <div>{children}</div>\n    </div>\n  );\n\n  const startTime = convertAwsDateTime(props.item.startTime)\n\n  return (\n    <SpaceBetween size=\"s\">\n      <ColumnLayout columns={3} variant=\"text-grid\">\n        <SpaceBetween size=\"l\">\n          <ValueWithLabel label=\"Requester\" children={`${props.item.email}`} />\n          <ValueWithLabel label=\"Status\">\n            <Status status={props.item.status} />\n          </ValueWithLabel>\n          <ValueWithLabel\n            label=\"Justification\"\n            children={`${props.item.justification}`}\n          />\n        </SpaceBetween>\n        <SpaceBetween size=\"l\">\n          <ValueWithLabel\n            label=\"Account\"\n            children={`${props.item.accountName} (${props.item.accountId})`}\n          />\n          <ValueWithLabel label=\"Role\" children={`${props.item.role}`} />\n          <ValueWithLabel\n            label=\"Ticket no\"\n            children={`${props.item.ticketNo}`}\n          />\n        </SpaceBetween>\n        <SpaceBetween size=\"l\">\n          <ValueWithLabel\n            label=\"Start time\"\n            children={`${startTime}`}\n          />\n          <ValueWithLabel\n            label=\"Duration\"\n            children={`${props.item.duration} Hours`}\n          />\n          <Timer item={props.item} expiry={props.expiry}/>\n        </SpaceBetween>\n      </ColumnLayout>\n\n      <div>\n        {props.item.approver && (\n          <div>\n            <Divider style={{ marginBottom: \"10px\", marginTop: \"10px\" }} />\n            <ColumnLayout columns={3}>\n              <SpaceBetween size=\"m\">\n                <ValueWithLabel\n                  label=\"Approved by\"\n                  children={`${props.item.approver}`}\n                />\n                <ValueWithLabel\n                  label=\"Comments\"\n                  children={`${props.item.comment}`}\n                />\n              </SpaceBetween>\n            </ColumnLayout>\n          </div>\n        )}\n      </div>\n    </SpaceBetween>\n  );\n}\n\nexport default Details;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useState, useEffect } from \"react\";\nimport {\n  Box,\n  Button,\n  Header,\n  Pagination,\n  Table,\n  TextFilter,\n  SpaceBetween,\n  CollectionPreferences,\n  Modal,\n  Select,\n} from \"@awsui/components-react\";\nimport { useCollection } from \"@awsui/collection-hooks\";\nimport { getUserRequests, updateStatus, getSetting } from \"../Shared/RequestService\";\nimport { API, graphqlOperation } from \"aws-amplify\";\nimport { onUpdateRequests, onCreateRequests} from \"../../graphql/subscriptions\";\nimport Status from \"../Shared/Status\";\nimport Details from \"../Shared/Details\";\nimport \"../../index.css\";\nimport { useHistory } from \"react-router-dom\";\n\nfunction convertAwsDateTime(awsDateTime) {\n  // Parse AWS datetime string into a Date object\n  const date = new Date(awsDateTime);\n  // Format date in user-friendly format\n  const options = {\n    weekday: 'short',\n    day: 'numeric',\n    month: 'short',\n    hour: '2-digit',\n    minute: '2-digit'\n  };\n  const userFriendlyFormat = date.toLocaleString('en-US', options);\n  return userFriendlyFormat\n}\n\nconst COLUMN_DEFINITIONS = [\n  {\n    id: \"id\",\n    sortingField: \"id\",\n    header: \"Id\",\n    cell: (item) => item.id,\n    width: 50,\n  },\n  {\n    id: \"email\",\n    sortingField: \"email\",\n    header: \"Requester\",\n    cell: (item) => item.email,\n    minWidth: 160,\n  },\n  {\n    id: \"account\",\n    sortingField: \"account\",\n    header: \"Account\",\n    cell: (item) => item.accountName,\n    minWidth: 10,\n  },\n  {\n    id: \"role\",\n    sortingField: \"role\",\n    header: \"Role\",\n    cell: (item) => item.role,\n    minWidth: 10,\n  },\n  {\n    id: \"startTime\",\n    sortingField: \"startTime\",\n    header: \"StartTime\",\n    cell: (item) => convertAwsDateTime(item.startTime),\n    minWidth: 160,\n  },\n  {\n    id: \"duration\",\n    sortingField: \"duration\",\n    header: \"Duration\",\n    cell: (item) => `${item.duration} hours`,\n    maxWidth: 120,\n  },\n  {\n    id: \"justification\",\n    sortingField: \"justification\",\n    header: \"Justification\",\n    cell: (item) => item.justification,\n    maxWidth: 200,\n  },\n  {\n    id: \"ticketNo\",\n    sortingField: \"ticketNo\",\n    header: \"TicketNo\",\n    cell: (item) => item.ticketNo || \"-\",\n    minWidth: 10,\n  },\n  {\n    id: \"status\",\n    sortingField: \"status\",\n    header: \"Status\",\n    cell: (item) => <Status status={item.status} />,\n    minWidth: 10,\n  },\n];\n\nconst MyCollectionPreferences = ({ preferences, setPreferences }) => {\n  return (\n    <CollectionPreferences\n      title=\"Preferences\"\n      confirmLabel=\"Confirm\"\n      cancelLabel=\"Cancel\"\n      preferences={preferences}\n      onConfirm={({ detail }) => setPreferences(detail)}\n      pageSizePreference={{\n        title: \"Page size\",\n        options: [\n          { value: 10, label: \"10 Requests\" },\n          { value: 30, label: \"30 Requests\" },\n          { value: 50, label: \"50 Requests\" },\n        ],\n      }}\n      wrapLinesPreference={{\n        label: \"Wrap lines\",\n        description: \"Check to see all the text and wrap the lines\",\n      }}\n      visibleContentPreference={{\n        title: \"Select visible columns\",\n        options: [\n          {\n            label: \"Request properties\",\n            options: [\n              // { id: \"id\", label: \"Id\", editable: false },\n              { id: \"email\", label: \"Requester\" },\n              { id: \"account\", label: \"Account\" },\n              { id: \"role\", label: \"Role\" },\n              { id: \"duration\", label: \"Duration\" },\n              { id: \"startTime\", label: \"StartTime\" },\n              { id: \"justification\", label: \"Justification\" },\n              { id: \"ticketNo\", label: \"TicketNo\" },\n              { id: \"status\", label: \"Status\" },\n            ],\n          },\n        ],\n      }}\n    />\n  );\n};\n\nfunction EmptyState({ title, subtitle, action }) {\n  return (\n    <Box textAlign=\"center\">\n      <Box variant=\"strong\">{title}</Box>\n      <Box variant=\"p\" padding={{ bottom: \"s\" }}>\n        {subtitle}\n      </Box>\n      {action}\n    </Box>\n  );\n}\n\nconst defaultStatus = {\n  label: \"All status\",\n  value: \"0\",\n};\n\nfunction View(props) {\n  const [allItems, setAllItems] = useState([]);\n  const [preferences, setPreferences] = useState({\n    pageSize: 10,\n    visibleContent: [\n      \"email\",\n      \"account\",\n      \"role\",\n      \"duration\",\n      \"startTime\",\n      \"justification\",\n      \"ticketNo\",\n      \"status\",\n    ],\n  });\n\n  const [selectedOption, setSelectedOption] = useState(defaultStatus);\n  const selectStatusOptions = prepareSelectOptions(\"status\", defaultStatus);\n\n  function prepareSelectOptions(field, defaultOption) {\n    const optionSet = [];\n    // Building a non redundant list of the field passed as parameter.\n\n    allItems.forEach((item) => {\n      if (optionSet.indexOf(item[field]) === -1) {\n        optionSet.push(item[field]);\n      }\n    });\n    optionSet.sort();\n\n    // The first element is the default one.\n    const options = [defaultOption];\n\n    // Adding the other element ot the list.\n    optionSet.forEach((item, index) =>\n      options.push({ label: item, value: (index + 1).toString() })\n    );\n    return options;\n  }\n\n  function matchesStatus(item, selectedStatus) {\n    return (\n      selectedStatus === defaultStatus || item.status === selectedStatus.label\n    );\n  }\n\n  const SEARCHABLE_COLUMNS = COLUMN_DEFINITIONS.map((item) => item.id);\n\n  const {\n    items,\n    actions,\n    filteredItemsCount,\n    collectionProps,\n    filterProps,\n    paginationProps,\n  } = useCollection(allItems, {\n    filtering: {\n      filteringFunction: (item, filteringText) => {\n        if (!matchesStatus(item, selectedOption)) {\n          return false;\n        }\n        const filteringTextLowerCase = filteringText.toLowerCase();\n\n        return SEARCHABLE_COLUMNS.map((key) => item[key]).some(\n          (value) =>\n            typeof value === \"string\" &&\n            value.toLowerCase().indexOf(filteringTextLowerCase) > -1\n        );\n      },\n      empty: (\n        <EmptyState\n          title=\"No requests\"\n          subtitle=\"No requests to display.\"\n          action={<Button onClick={handleCreate}>Create Request</Button>}\n        />\n        \n      ),\n      noMatch: (\n        <EmptyState\n          title=\"No matches\"\n          subtitle=\"Your search didn't return any records.\"\n          action={\n            <Button onClick={() => actions.setFiltering(\"\")}>\n              Clear filter\n            </Button>\n          }\n        />\n      ),\n    },\n    pagination: { pageSize: preferences.pageSize },\n    sorting: {},\n    selection: {},\n  });\n\n  const { selectedItems } = collectionProps;\n  const [tableLoading, setTableLoading] = useState(true);\n  const [visible, setVisible] = useState(false);\n  const [cancelVisible, setCancelVisible] = useState(false);\n  const [confirmLoading, setConfirmLoading] = useState(false);\n  const [refreshLoading, setRefreshLoading] = useState(false);\n  const [expand, setExpand] = useState(false);\n  const [expiry, setExpiry] = useState(3)\n  const history = useHistory();\n\n  useEffect(() => {\n    views();\n    props.addNotification([]);\n    approveEvent();\n    getSettings()\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  function getSettings(){\n    getSetting(\"settings\").then((data) => {\n      if (data !== null) {\n        setExpiry(parseInt(data.expiry));\n        }\n    });\n  }\n\n  async function updateItems(items) {\n    items.sort((a, b) => (a.updatedAt < b.updatedAt ? 1 : -1));\n    const data = items.map((item) => {\n      if (\n        item.status === \"ended\" ||\n        item.status === \"revoked\" ||\n        item.status === \"in progress\" ||\n        item.status === \"scheduled\"\n      ) {\n        item.status = \"approved\";\n      }\n      return item;\n    });\n    return data;\n  }\n\n  function views() {\n    getUserRequests(props.user).then((items) => {\n      updateItems(items).then((items) => {\n        setAllItems(items);\n        setTableLoading(false);\n        setRefreshLoading(false);\n        setConfirmLoading(false);\n        setVisible(false);\n        setCancelVisible(false);\n      });\n    });\n  }\n\n  function approveEvent() {\n    API.graphql(graphqlOperation(onUpdateRequests)).subscribe({\n      next: () => {\n       views();\n      },\n      error: (error) => console.warn(error),\n    });\n  }\n\n  function handleRefresh() {\n    setRefreshLoading(true);\n    setTableLoading(true);\n    views();\n  }\n\n  function handleCreate() {\n    history.push(\"/requests/request\");\n    props.setActiveHref(\"/requests/request\");\n  }\n\n  function handleCancel() {\n    setCancelVisible(true);\n  }\n  function handleSelect() {\n    setVisible(true);\n    setExpand(false);\n  }\n\n  function cancelRequest() {\n    setConfirmLoading(true);\n    const data = {\n      id: selectedItems[0].id,\n      status: \"cancelled\",\n    };\n    updateStatus(data).then(() => {\n      views();\n      props.addNotification([\n        {\n          type: \"success\",\n          content: \"TEAM request cancelled\",\n          dismissible: true,\n          onDismiss: () => props.addNotification([]),\n        },\n      ]);\n    });\n  }\n  return (\n    <div className=\"container\">\n      <Table\n        {...collectionProps}\n        resizableColumns=\"true\"\n        loading={tableLoading}\n        loadingText=\"Fetching requests\"\n        // sortingColumn={SORT_COLUMN}\n        header={\n          <Header\n            counter={\n              selectedItems.length\n                ? `(${selectedItems.length}/${allItems.length})`\n                : `(${allItems.length})`\n            }\n            actions={\n              <SpaceBetween size=\"s\" direction=\"horizontal\">\n                <Button\n                  iconName=\"refresh\"\n                  onClick={handleRefresh}\n                  loading={refreshLoading}\n                />\n                <Button\n                  disabled={selectedItems.length === 0}\n                  onClick={handleSelect}\n                  variant=\"primary\"\n                >\n                  View details\n                </Button>\n              </SpaceBetween>\n            }\n            description=\"Elevated access requested by you\"\n          >\n            Requests\n          </Header>\n        }\n        filter={\n          <div className=\"input-container\">\n            <TextFilter\n              {...filterProps}\n              filteringPlaceholder=\"Find request\"\n              countText={filteredItemsCount}\n              className=\"input-filter\"\n            />\n            <Select\n              {...filterProps}\n              className=\"select-filter engine-filter\"\n              selectedAriaLabel=\"Selected\"\n              options={selectStatusOptions}\n              selectedOption={selectedOption}\n              onChange={({ detail }) =>\n                setSelectedOption(detail.selectedOption)\n              }\n              ariaDescribedby={null}\n            />\n          </div>\n        }\n        columnDefinitions={COLUMN_DEFINITIONS}\n        visibleColumns={preferences.visibleContent}\n        pagination={<Pagination {...paginationProps} />}\n        preferences={\n          <MyCollectionPreferences\n            preferences={preferences}\n            setPreferences={setPreferences}\n          />\n        }\n        items={items}\n        selectionType=\"single\"\n      />\n      <div>\n        {selectedItems.length ? (\n          <>\n            <Modal\n              onDismiss={() => {\n                setVisible(false);\n                setExpand(true);\n              }}\n              visible={visible}\n              closeAriaLabel=\"Close modal\"\n              size=\"large\"\n              footer={\n                <Box float=\"right\">\n                  <SpaceBetween direction=\"horizontal\" size=\"s\">\n                  <Button\n                      onClick={() => {\n                        setVisible(false);\n                        setExpand(true);\n                      }}\n                    >\n                      Ok\n                    </Button>\n                    {selectedItems[0].status == \"pending\" && (\n                      <Button\n                        disabled={selectedItems[0].status !== \"pending\"}\n                        onClick={handleCancel}\n                        variant=\"primary\"\n                      >\n                        Cancel request\n                      </Button>\n                    )}\n                  </SpaceBetween>\n                </Box>\n              }\n              header=\"Request details\"\n            >\n              <Details item={selectedItems[0]} status={expand} expiry={expiry} />\n            </Modal>\n            <Modal\n              onDismiss={() => setCancelVisible(false)}\n              visible={cancelVisible}\n              closeAriaLabel=\"Close modal\"\n              size=\"medium\"\n              footer={\n                <Box float=\"right\">\n                  <SpaceBetween direction=\"horizontal\" size=\"xs\">\n                    <Button\n                      variant=\"link\"\n                      onClick={() => {\n                        setCancelVisible(false);\n                      }}\n                    >\n                      Cancel\n                    </Button>\n                    <Button\n                      variant=\"primary\"\n                      onClick={cancelRequest}\n                      loading={confirmLoading}\n                    >\n                      Confirm\n                    </Button>\n                  </SpaceBetween>\n                </Box>\n              }\n              header=\"Cancel Request\"\n            >\n              Are you sure you want to cancel request?\n            </Modal>\n          </>\n        ) : null}\n      </div>\n    </div>\n  );\n}\n\nexport default View;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useState, useEffect, useRef } from \"react\";\nimport {\n  Box,\n  Button,\n  Header,\n  Pagination,\n  Table,\n  TextFilter,\n  SpaceBetween,\n  CollectionPreferences,\n  Modal,\n  Select,\n} from \"@awsui/components-react\";\nimport { useCollection } from \"@awsui/collection-hooks\";\nimport { sessions } from \"../Shared/RequestService\";\nimport Status from \"../Shared/Status\";\nimport Details from \"../Shared/Details\";\nimport \"../../index.css\";\nimport { CSVLink } from \"react-csv\";\n\nconst COLUMN_DEFINITIONS = [\n  {\n    id: \"id\",\n    sortingField: \"id\",\n    header: \"Id\",\n    cell: (item) => item.id,\n    width: 50,\n  },\n  {\n    id: \"email\",\n    sortingField: \"email\",\n    header: \"Requester\",\n    cell: (item) => item.email,\n    minWidth: 160,\n  },\n  {\n    id: \"account\",\n    sortingField: \"account\",\n    header: \"Account\",\n    cell: (item) => item.accountName,\n    minWidth: 10,\n  },\n  {\n    id: \"role\",\n    sortingField: \"role\",\n    header: \"Role\",\n    cell: (item) => item.role,\n    minWidth: 10,\n  },\n  {\n    id: \"startTime\",\n    sortingField: \"startTime\",\n    header: \"StartTime\",\n    cell: (item) => item.startTime,\n    minWidth: 160,\n  },\n  {\n    id: \"duration\",\n    sortingField: \"duration\",\n    header: \"Duration\",\n    cell: (item) => `${item.duration} hours`,\n    maxWidth: 120,\n  },\n  {\n    id: \"justification\",\n    sortingField: \"justification\",\n    header: \"Justification\",\n    cell: (item) => item.justification,\n    maxWidth: 200,\n  },\n  {\n    id: \"approver\",\n    sortingField: \"approver\",\n    header: \"Approver\",\n    cell: (item) => item.approver || \"-\",\n    minWidth: 10,\n  },\n  {\n    id: \"status\",\n    sortingField: \"status\",\n    header: \"Status\",\n    cell: (item) => <Status status={item.status} />,\n    minWidth: 10,\n  },\n];\n\nconst MyCollectionPreferences = ({ preferences, setPreferences }) => {\n  return (\n    <CollectionPreferences\n      title=\"Preferences\"\n      confirmLabel=\"Confirm\"\n      cancelLabel=\"Cancel\"\n      preferences={preferences}\n      onConfirm={({ detail }) => setPreferences(detail)}\n      pageSizePreference={{\n        title: \"Page size\",\n        options: [\n          { value: 10, label: \"10 Requests\" },\n          { value: 30, label: \"30 Requests\" },\n          { value: 50, label: \"50 Requests\" },\n        ],\n      }}\n      wrapLinesPreference={{\n        label: \"Wrap lines\",\n        description: \"Check to see all the text and wrap the lines\",\n      }}\n      visibleContentPreference={{\n        title: \"Select visible columns\",\n        options: [\n          {\n            label: \"Request properties\",\n            options: [\n              // { id: \"id\", label: \"Id\", editable: false },\n              { id: \"email\", label: \"Requester\" },\n              { id: \"account\", label: \"Account\" },\n              { id: \"role\", label: \"Role\" },\n              { id: \"duration\", label: \"Duration\" },\n              { id: \"startTime\", label: \"StartTime\" },\n              { id: \"justification\", label: \"Justification\" },\n              { id: \"approver\", label: \"Approver\" },\n              { id: \"status\", label: \"Status\" },\n            ],\n          },\n        ],\n      }}\n    />\n  );\n};\n\nfunction EmptyState({ title, subtitle, action }) {\n  return (\n    <Box textAlign=\"center\">\n      <Box variant=\"strong\">{title}</Box>\n      <Box variant=\"p\" padding={{ bottom: \"s\" }}>\n        {subtitle}\n      </Box>\n      {action}\n    </Box>\n  );\n}\n\nconst defaultStatus = {\n  label: \"All Status\",\n  value: \"0\",\n};\n\nfunction Review(props) {\n  const [allItems, setAllItems] = useState([]);\n  const [preferences, setPreferences] = useState({\n    pageSize: 10,\n    visibleContent: [\n      \"email\",\n      \"account\",\n      \"role\",\n      \"duration\",\n      \"startTime\",\n      \"justification\",\n      \"approver\",\n      \"status\",\n    ],\n  });\n\n  const [selectedOption, setSelectedOption] = useState(defaultStatus);\n  const selectStatusOptions = prepareSelectOptions(\"status\", defaultStatus);\n\n  function prepareSelectOptions(field, defaultOption) {\n    const optionSet = [];\n    // Building a non redundant list of the field passed as parameter.\n\n    allItems.forEach((item) => {\n      if (optionSet.indexOf(item[field]) === -1) {\n        optionSet.push(item[field]);\n      }\n    });\n    optionSet.sort();\n\n    // The first element is the default one.\n    const options = [defaultOption];\n\n    // Adding the other element ot the list.\n    optionSet.forEach((item, index) =>\n      options.push({ label: item, value: (index + 1).toString() })\n    );\n    return options;\n  }\n\n  function matchesStatus(item, selectedStatus) {\n    return (\n      selectedStatus === defaultStatus || item.status === selectedStatus.label\n    );\n  }\n\n  const SEARCHABLE_COLUMNS = COLUMN_DEFINITIONS.map((item) => item.id);\n\n  const {\n    items,\n    actions,\n    filteredItemsCount,\n    collectionProps,\n    filterProps,\n    paginationProps,\n  } = useCollection(allItems, {\n    filtering: {\n      filteringFunction: (item, filteringText) => {\n        if (!matchesStatus(item, selectedOption)) {\n          return false;\n        }\n        const filteringTextLowerCase = filteringText.toLowerCase();\n\n        return SEARCHABLE_COLUMNS.map((key) => item[key]).some(\n          (value) =>\n            typeof value === \"string\" &&\n            value.toLowerCase().indexOf(filteringTextLowerCase) > -1\n        );\n      },\n      empty: (\n        <EmptyState title=\"No approvals\" subtitle=\"No approvals to display.\" />\n      ),\n      noMatch: (\n        <EmptyState\n          title=\"No matches\"\n          subtitle=\"Your search didn't return any records.\"\n          action={\n            <Button onClick={() => actions.setFiltering(\"\")}>\n              Clear filter\n            </Button>\n          }\n        />\n      ),\n    },\n    pagination: { pageSize: preferences.pageSize },\n    sorting: {},\n    selection: {},\n  });\n\n  const { selectedItems } = collectionProps;\n  const [tableLoading, setTableLoading] = useState(true);\n  const [visible, setVisible] = useState(false);\n  const [refreshLoading, setRefreshLoading] = useState(false);\n  const [expand, setExpand] = useState(false);\n  const csvLink = useRef();\n\n  useEffect(() => {\n    views();\n    props.addNotification([]);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  async function updateItems(items) {\n    items.sort((a, b) => (a.updatedAt < b.updatedAt ? 1 : -1));\n    const data = items.map((item) => {\n      if (\n        item.status === \"ended\" ||\n        item.status === \"revoked\" ||\n        item.status === \"in progress\" ||\n        item.status === \"scheduled\"\n      ) {\n        item.status = \"approved\";\n      }\n      return item;\n    });\n    return data;\n  }\n\n  function views() {\n    let filter = {\n      approver: { eq: props.user },\n    };\n\n    sessions(filter).then((items) => {\n      updateItems(items).then((items) => {\n        setAllItems(items);\n        setTableLoading(false);\n        setRefreshLoading(false);\n      });\n    });\n  }\n\n  function handleRefresh() {\n    setRefreshLoading(true);\n    setTableLoading(true);\n    props.addNotification([]);\n    views();\n  }\n\n  function handleSelect() {\n    setVisible(true);\n    setExpand(false);\n  }\n\n  function handleDownload() {\n    csvLink.current.link.click();\n  }\n\n  return (\n    <div className=\"container\">\n      <Table\n        {...collectionProps}\n        resizableColumns=\"true\"\n        loading={tableLoading}\n        loadingText=\"Fetching requests\"\n        // sortingColumn={SORT_COLUMN}\n        header={\n          <Header\n            counter={\n              selectedItems.length\n                ? `(${selectedItems.length}/${allItems.length})`\n                : `(${allItems.length})`\n            }\n            actions={\n              <SpaceBetween size=\"s\" direction=\"horizontal\">\n                <Button\n                  iconName=\"refresh\"\n                  onClick={handleRefresh}\n                  loading={refreshLoading}\n                />\n                <Button\n                  disabled={selectedItems.length === 0}\n                  // variant=\"primary\"\n                  onClick={handleSelect}\n                >\n                  View details\n                </Button>\n                <div>\n                  <Button\n                    disabled={allItems.length === 0}\n                    variant=\"primary\"\n                    onClick={handleDownload}\n                    iconName=\"download\"\n                    iconAlign=\"left\"\n                  >\n                    Download\n                  </Button>\n                  <CSVLink\n                    data={allItems}\n                    filename=\"approvals.csv\"\n                    className=\"hidden\"\n                    ref={csvLink}\n                    target=\"_blank\"\n                  />\n                </div>\n              </SpaceBetween>\n            }\n            description=\"Elevated access requests actioned by you\"\n          >\n            Approvals\n          </Header>\n        }\n        filter={\n          <div className=\"input-container\">\n            <TextFilter\n              {...filterProps}\n              filteringPlaceholder=\"Find request\"\n              countText={filteredItemsCount}\n              className=\"input-filter\"\n            />\n            <Select\n              {...filterProps}\n              className=\"select-filter engine-filter\"\n              selectedAriaLabel=\"Selected\"\n              options={selectStatusOptions}\n              selectedOption={selectedOption}\n              onChange={({ detail }) =>\n                setSelectedOption(detail.selectedOption)\n              }\n              ariaDescribedby={null}\n            />\n          </div>\n        }\n        columnDefinitions={COLUMN_DEFINITIONS}\n        visibleColumns={preferences.visibleContent}\n        pagination={<Pagination {...paginationProps} />}\n        preferences={\n          <MyCollectionPreferences\n            preferences={preferences}\n            setPreferences={setPreferences}\n          />\n        }\n        items={items}\n        selectionType=\"single\"\n      />\n      <div>\n        {selectedItems.length ? (\n          <Modal\n            onDismiss={() => {\n              setVisible(false);\n              setExpand(true);\n            }}\n            visible={visible}\n            closeAriaLabel=\"Close modal\"\n            size=\"large\"\n            footer={\n              <Box float=\"right\">\n                <SpaceBetween direction=\"horizontal\" size=\"s\">\n                  <Button variant=\"link\" onClick={() => setVisible(false)}>\n                    Cancel\n                  </Button>\n                </SpaceBetween>\n              </Box>\n            }\n            header=\"Request details\"\n          >\n            <Details item={selectedItems[0]} status={expand} />\n          </Modal>\n        ) : null}\n      </div>\n    </div>\n  );\n}\n\nexport default Review;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useState, useEffect, useRef } from \"react\";\nimport {\n  Box,\n  Button,\n  Header,\n  Pagination,\n  Table,\n  TextFilter,\n  SpaceBetween,\n  CollectionPreferences,\n  Modal,\n  Select,\n} from \"@awsui/components-react\";\nimport { useCollection } from \"@awsui/collection-hooks\";\nimport { getSessionList } from \"../Shared/RequestService\";\nimport Status from \"../Shared/Status\";\nimport Details from \"../Shared/Details\";\nimport \"../../index.css\";\nimport { CSVLink } from \"react-csv\";\n\nfunction convertAwsDateTime(awsDateTime) {\n  // Parse AWS datetime string into a Date object\n  const date = new Date(awsDateTime);\n  // Format date in user-friendly format\n  const options = {\n    weekday: 'short',\n    day: 'numeric',\n    month: 'short',\n    hour: '2-digit',\n    minute: '2-digit'\n  };\n  const userFriendlyFormat = date.toLocaleString('en-US', options);\n  return userFriendlyFormat\n}\n\nconst COLUMN_DEFINITIONS = [\n  {\n    id: \"id\",\n    sortingField: \"id\",\n    header: \"Id\",\n    cell: (item) => item.id,\n    width: 50,\n  },\n  {\n    id: \"email\",\n    sortingField: \"email\",\n    header: \"Requester\",\n    cell: (item) => item.email,\n    minWidth: 160,\n  },\n  {\n    id: \"account\",\n    sortingField: \"account\",\n    header: \"Account\",\n    cell: (item) => item.accountName,\n    minWidth: 10,\n  },\n  {\n    id: \"role\",\n    sortingField: \"role\",\n    header: \"Role\",\n    cell: (item) => item.role,\n    minWidth: 10,\n  },\n  {\n    id: \"startTime\",\n    sortingField: \"startTime\",\n    header: \"StartTime\",\n    cell: (item) => convertAwsDateTime(item.startTime),\n    minWidth: 160,\n  },\n  {\n    id: \"duration\",\n    sortingField: \"duration\",\n    header: \"Duration\",\n    cell: (item) => `${item.duration} hours`,\n    maxWidth: 120,\n  },\n  {\n    id: \"justification\",\n    sortingField: \"justification\",\n    header: \"Justification\",\n    cell: (item) => item.justification,\n    maxWidth: 200,\n  },\n  {\n    id: \"approver\",\n    sortingField: \"approver\",\n    header: \"Approver\",\n    cell: (item) => item.approver || \"-\",\n    minWidth: 10,\n  },\n  {\n    id: \"status\",\n    sortingField: \"status\",\n    header: \"Status\",\n    cell: (item) => <Status status={item.status} />,\n    minWidth: 10,\n  },\n];\n\nconst MyCollectionPreferences = ({ preferences, setPreferences }) => {\n  return (\n    <CollectionPreferences\n      title=\"Preferences\"\n      confirmLabel=\"Confirm\"\n      cancelLabel=\"Cancel\"\n      preferences={preferences}\n      onConfirm={({ detail }) => setPreferences(detail)}\n      pageSizePreference={{\n        title: \"Page size\",\n        options: [\n          { value: 10, label: \"10 Requests\" },\n          { value: 30, label: \"30 Requests\" },\n          { value: 50, label: \"50 Requests\" },\n        ],\n      }}\n      wrapLinesPreference={{\n        label: \"Wrap lines\",\n        description: \"Check to see all the text and wrap the lines\",\n      }}\n      visibleContentPreference={{\n        title: \"Select visible columns\",\n        options: [\n          {\n            label: \"Request properties\",\n            options: [\n              // { id: \"id\", label: \"Id\", editable: false },\n              { id: \"email\", label: \"Requester\" },\n              { id: \"account\", label: \"Account\" },\n              { id: \"role\", label: \"Role\" },\n              { id: \"duration\", label: \"Duration\" },\n              { id: \"startTime\", label: \"StartTime\" },\n              { id: \"justification\", label: \"Justification\" },\n              { id: \"approver\", label: \"Approver\" },\n              { id: \"status\", label: \"Status\" },\n            ],\n          },\n        ],\n      }}\n    />\n  );\n};\n\nfunction EmptyState({ title, subtitle, action }) {\n  return (\n    <Box textAlign=\"center\">\n      <Box variant=\"strong\">{title}</Box>\n      <Box variant=\"p\" padding={{ bottom: \"s\" }}>\n        {subtitle}\n      </Box>\n      {action}\n    </Box>\n  );\n}\n\nconst defaultStatus = {\n  label: \"All Status\",\n  value: \"0\",\n};\n\nfunction AuditApprovals(props) {\n  const [allItems, setAllItems] = useState([]);\n  const [preferences, setPreferences] = useState({\n    pageSize: 10,\n    visibleContent: [\n      \"email\",\n      \"account\",\n      \"role\",\n      \"duration\",\n      \"startTime\",\n      \"justification\",\n      \"approver\",\n      \"status\",\n    ],\n  });\n\n  const [selectedOption, setSelectedOption] = useState(defaultStatus);\n  const selectStatusOptions = prepareSelectOptions(\"status\", defaultStatus);\n\n  function prepareSelectOptions(field, defaultOption) {\n    const optionSet = [];\n    // Building a non redundant list of the field passed as parameter.\n\n    allItems.forEach((item) => {\n      if (optionSet.indexOf(item[field]) === -1) {\n        optionSet.push(item[field]);\n      }\n    });\n    optionSet.sort();\n\n    // The first element is the default one.\n    const options = [defaultOption];\n\n    // Adding the other element ot the list.\n    optionSet.forEach((item, index) =>\n      options.push({ label: item, value: (index + 1).toString() })\n    );\n    return options;\n  }\n\n  function matchesStatus(item, selectedStatus) {\n    return (\n      selectedStatus === defaultStatus || item.status === selectedStatus.label\n    );\n  }\n\n  const SEARCHABLE_COLUMNS = COLUMN_DEFINITIONS.map((item) => item.id);\n\n  const {\n    items,\n    actions,\n    filteredItemsCount,\n    collectionProps,\n    filterProps,\n    paginationProps,\n  } = useCollection(allItems, {\n    filtering: {\n      filteringFunction: (item, filteringText) => {\n        if (!matchesStatus(item, selectedOption)) {\n          return false;\n        }\n        const filteringTextLowerCase = filteringText.toLowerCase();\n\n        return SEARCHABLE_COLUMNS.map((key) => item[key]).some(\n          (value) =>\n            typeof value === \"string\" &&\n            value.toLowerCase().indexOf(filteringTextLowerCase) > -1\n        );\n      },\n      empty: (\n        <EmptyState title=\"No requests\" subtitle=\"No requests to display.\" />\n      ),\n      noMatch: (\n        <EmptyState\n          title=\"No matches\"\n          subtitle=\"Your search didn't return any records.\"\n          action={\n            <Button onClick={() => actions.setFiltering(\"\")}>\n              Clear filter\n            </Button>\n          }\n        />\n      ),\n    },\n    pagination: { pageSize: preferences.pageSize },\n    sorting: {},\n    selection: {},\n  });\n\n  const { selectedItems } = collectionProps;\n  const [tableLoading, setTableLoading] = useState(true);\n  const [visible, setVisible] = useState(false);\n  const [refreshLoading, setRefreshLoading] = useState(false);\n  const [expand, setExpand] = useState(false);\n  const csvLink = useRef();\n\n  useEffect(() => {\n    views();\n    props.addNotification([]);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  async function updateItems(items) {\n    items.sort((a, b) => (a.updatedAt < b.updatedAt ? 1 : -1));\n    const data = items.map((item) => {\n      if (\n        item.status === \"ended\" ||\n        item.status === \"revoked\" ||\n        item.status === \"in progress\" ||\n        item.status === \"scheduled\"\n      ) {\n        item.status = \"approved\";\n      }\n      return item;\n    });\n    return data;\n  }\n\n  function views() {\n    getSessionList().then((items) => {\n      updateItems(items).then((items) => {\n        setAllItems(items);\n        setTableLoading(false);\n        setRefreshLoading(false);\n      });\n    });\n  }\n\n  function handleRefresh() {\n    setRefreshLoading(true);\n    setTableLoading(true);\n    props.addNotification([]);\n    views();\n  }\n\n  function handleSelect() {\n    setVisible(true);\n    setExpand(false);\n  }\n\n  function handleDownload() {\n    csvLink.current.link.click();\n  }\n\n  return (\n    <div className=\"container\">\n      <Table\n        {...collectionProps}\n        resizableColumns=\"true\"\n        loading={tableLoading}\n        loadingText=\"Fetching requests\"\n        // sortingColumn={SORT_COLUMN}\n        header={\n          <Header\n            counter={\n              selectedItems.length\n                ? `(${selectedItems.length}/${allItems.length})`\n                : `(${allItems.length})`\n            }\n            actions={\n              <SpaceBetween size=\"s\" direction=\"horizontal\">\n                <Button\n                  iconName=\"refresh\"\n                  onClick={handleRefresh}\n                  loading={refreshLoading}\n                />\n                <Button\n                  disabled={selectedItems.length === 0}\n                  // variant=\"primary\"\n                  onClick={handleSelect}\n                >\n                  View Details\n                </Button>\n                <div>\n                  <Button\n                    disabled={allItems.length === 0}\n                    variant=\"primary\"\n                    onClick={handleDownload}\n                    iconName=\"download\"\n                    iconAlign=\"left\"\n                  >\n                    Download\n                  </Button>\n                  <CSVLink\n                    data={allItems}\n                    filename=\"approvals.csv\"\n                    className=\"hidden\"\n                    ref={csvLink}\n                    target=\"_blank\"\n                  />\n                </div>\n              </SpaceBetween>\n            }\n          >\n            Approvals\n          </Header>\n        }\n        filter={\n          <div className=\"input-container\">\n            <TextFilter\n              {...filterProps}\n              filteringPlaceholder=\"Find request\"\n              countText={filteredItemsCount}\n              className=\"input-filter\"\n            />\n            <Select\n              {...filterProps}\n              className=\"select-filter engine-filter\"\n              selectedAriaLabel=\"Selected\"\n              options={selectStatusOptions}\n              selectedOption={selectedOption}\n              onChange={({ detail }) =>\n                setSelectedOption(detail.selectedOption)\n              }\n              ariaDescribedby={null}\n            />\n          </div>\n        }\n        columnDefinitions={COLUMN_DEFINITIONS}\n        visibleColumns={preferences.visibleContent}\n        pagination={<Pagination {...paginationProps} />}\n        preferences={\n          <MyCollectionPreferences\n            preferences={preferences}\n            setPreferences={setPreferences}\n          />\n        }\n        items={items}\n        selectionType=\"single\"\n      />\n      <div>\n        {selectedItems.length ? (\n          <Modal\n            onDismiss={() => {\n              setVisible(false);\n              setExpand(true);\n            }}\n            visible={visible}\n            closeAriaLabel=\"Close modal\"\n            size=\"large\"\n            footer={\n              <Box float=\"right\">\n                <SpaceBetween direction=\"horizontal\" size=\"s\">\n                  <Button variant=\"link\" onClick={() => setVisible(false)}>\n                    Cancel\n                  </Button>\n                </SpaceBetween>\n              </Box>\n            }\n            header=\"Request details\"\n          >\n            <Details item={selectedItems[0]} status={expand} />\n          </Modal>\n        ) : null}\n      </div>\n    </div>\n  );\n}\n\nexport default AuditApprovals;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useState, useEffect, useRef } from \"react\";\nimport {\n  Box,\n  Button,\n  Header,\n  Pagination,\n  Table,\n  TextFilter,\n  CollectionPreferences,\n  SpaceBetween\n} from \"@awsui/components-react\";\nimport { useCollection } from \"@awsui/collection-hooks\";\nimport { getSessionLogs, fetchLogs, getSession, deleteSessionLogs } from \"../Shared/RequestService\";\nimport { API, graphqlOperation } from \"aws-amplify\";\nimport {\n  onUpdateSessions,\n} from \"../../graphql/subscriptions\";\nimport \"../../index.css\";\nimport { CSVLink } from \"react-csv\";\n\nconst COLUMN_DEFINITIONS = [\n  {\n    id: \"eventID\",\n    sortingField: \"eventID\",\n    header: \"eventID\",\n    cell: (item) => item.eventID,\n    minWidth: 180,\n  },\n  {\n    id: \"eventName\",\n    sortingField: \"eventName\",\n    header: \"eventName\",\n    cell: (item) => item.eventName,\n    minWidth: 200,\n  },\n  {\n    id: \"eventSource\",\n    sortingField: \"eventSource\",\n    header: \"eventSource\",\n    cell: (item) => item.eventSource,\n    minWidth: 200,\n  },\n  {\n    id: \"eventTime\",\n    sortingField: \"eventTime\",\n    header: \"eventTime\",\n    cell: (item) => item.eventTime,\n    minWidth: 180,\n  },\n];\n\nconst MyCollectionPreferences = ({ preferences, setPreferences }) => {\n  return (\n    <CollectionPreferences\n      title=\"Preferences\"\n      confirmLabel=\"Confirm\"\n      cancelLabel=\"Cancel\"\n      preferences={preferences}\n      onConfirm={({ detail }) => setPreferences(detail)}\n      pageSizePreference={{\n        title: \"Page size\",\n        options: [\n          { value: 10, label: \"10 Logs\" },\n          { value: 30, label: \"30 Logs\" },\n          { value: 50, label: \"50 Logs\" },\n        ],\n      }}\n      wrapLinesPreference={{\n        label: \"Wrap lines\",\n        description: \"Check to see all the text and wrap the lines\",\n      }}\n      visibleContentPreference={{\n        title: \"Select visible columns\",\n        options: [\n          {\n            label: \"Log properties\",\n            options: [\n              { id: \"eventID\", label: \"eventID\" },\n              { id: \"eventName\", label: \"eventName\" },\n              { id: \"eventSource\", label: \"eventSource\" },\n              { id: \"eventTime\", label: \"eventTime\" },\n            ],\n          },\n        ],\n      }}\n    />\n  );\n};\n\nfunction EmptyState({ title, subtitle, action }) {\n  return (\n    <Box textAlign=\"center\">\n      <Box variant=\"strong\">{title}</Box>\n      <Box variant=\"p\" padding={{ bottom: \"s\" }}>\n        {subtitle}\n      </Box>\n      {action}\n    </Box>\n  );\n}\n\nfunction Logs(props) {\n  const [allItems, setAllItems] = useState([]);\n  const csvLink = useRef();\n  const [preferences, setPreferences] = useState({\n    pageSize: 10,\n    visibleContent: [\"eventID\", \"eventName\", \"eventSource\", \"eventTime\"],\n  });\n\n  const {\n    items,\n    actions,\n    filteredItemsCount,\n    collectionProps,\n    filterProps,\n    paginationProps,\n  } = useCollection(allItems, {\n    filtering: {\n      empty: <EmptyState title=\"No logs\" subtitle=\"No logs to display\" />,\n      noMatch: (\n        <EmptyState\n          title=\"No matches\"\n          subtitle=\"Your search didn't return any records.\"\n          action={\n            <Button onClick={() => actions.setFiltering(\"\")}>\n              Clear filter\n            </Button>\n          }\n        />\n      ),\n    },\n    pagination: { pageSize: preferences.pageSize },\n    sorting: {},\n    selection: {},\n  });\n\n  const { selectedItems } = collectionProps;\n  const [tableLoading, setTableLoading] = useState(true);\n  const [refreshLoading, setRefreshLoading] = useState(false);\n\n  useEffect(() => {\n    views();\n    updateEvent()\n    setRefreshLoading(false);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  function handleRefresh() {\n    setRefreshLoading(true);\n    setTableLoading(true);\n    views();\n  }\n\n  async function addMeta(items) {\n    // eslint-disable-next-line array-callback-return\n    items.map((item) => {\n      item.username = props.item.email;\n      item.accountName = props.item.accountName;\n      item.accountId = props.item.accountId;\n    });\n    return items;\n  }\n\n  function AddSessionLogs(expiry,endTime,username) {\n    const data = {\n      id: props.item.id,\n      startTime: props.item.startTime,\n      endTime: endTime,\n      username: username,\n      accountId: props.item.accountId,\n      role: props.item.role,\n      approver_ids: props.item.approver_ids,\n      expireAt: expiry\n    };\n    getSessionLogs(data)\n  }\n\n  function getQueryId(){\n    const username = props.item.username\n    if (props.item.status === \"in progress\") {\n        const expiry = Math.floor(Date.now() / 1000);\n        const endTime = new Date().toISOString();\n        const args = {\n          id: props.item.id,\n        };\n        deleteSessionLogs(args).then(() => {\n          AddSessionLogs(expiry,endTime,username)\n        })\n    } else {\n      getSession(props.item.id).then((data) => {\n        if (data !== null) {\n          getLogs(data.queryId);\n        } else {\n          const expiry = Math.floor(Date.now() / 1000) + 432000 \n          // Add an extra hour to end time to compensate PS session duration\n          const endTime = new Date(Date.parse(props.item.endTime) + 60 * 60 * 1000).toISOString()\n          AddSessionLogs(expiry,endTime,username)\n        }\n      })\n    }\n  }\n  \n  function getLogs(queryId) {\n    let args = {\n      queryId: queryId,\n    };\n    fetchLogs(args).then((items) => {\n      if (items) {\n        addMeta(items).then((items) => {\n          setAllItems(items);\n        });\n      }\n      setTableLoading(false);\n      setRefreshLoading(false)\n    });\n  }\n\n\n  function views() {\n    getQueryId()\n  }\n\n  function updateEvent() {\n    API.graphql(\n      graphqlOperation(onUpdateSessions, {\n        filter: {\n          id: { eq: props.item.id },\n        },\n      })\n    ).subscribe({\n      next: ({ value }) => {\n        getLogs(value.data.onUpdateSessions.queryId);\n      },\n      error: (error) => console.warn(error),\n    });\n  }\n\n  function handleDownload() {\n    csvLink.current.link.click();\n  }\n\n  return (\n    <div className=\"container\">\n      <Table\n        {...collectionProps}\n        resizableColumns=\"true\"\n        loading={tableLoading}\n        loadingText=\"Fetching session logs\"\n        header={\n          <Header\n            counter={\n              selectedItems.length\n                ? `(${selectedItems.length}/${allItems.length})`\n                : `(${allItems.length})`\n            }\n            description=\"Session activity logs are delivered in near real time\"\n            actions={\n              <SpaceBetween size=\"s\" direction=\"horizontal\">\n              {props.item.status === \"in progress\" &&\n                <Button\n                  iconName=\"refresh\"\n                  onClick={handleRefresh}\n                  loading={refreshLoading}\n                />\n                }\n                \n                <div>\n                  <Button\n                    disabled={allItems.length === 0}\n                    variant=\"primary\"\n                    onClick={handleDownload}\n                    iconName=\"download\"\n                    iconAlign=\"left\"\n                  >\n                    Download\n                  </Button>\n                  <CSVLink\n                    data={allItems}\n                    filename=\"session_logs.csv\"\n                    className=\"hidden\"\n                    ref={csvLink}\n                    target=\"_blank\"\n                  />\n                </div>\n              </SpaceBetween>\n            }\n          >\n            Session activity logs\n          </Header>\n        }\n        filter={\n          <div className=\"input-container\">\n            <TextFilter\n              {...filterProps}\n              filteringPlaceholder=\"Search Logs\"\n              countText={filteredItemsCount}\n              className=\"input-filter\"\n            />\n          </div>\n        }\n        columnDefinitions={COLUMN_DEFINITIONS}\n        visibleColumns={preferences.visibleContent}\n        pagination={<Pagination {...paginationProps} />}\n        preferences={\n          <MyCollectionPreferences\n            preferences={preferences}\n            setPreferences={setPreferences}\n          />\n        }\n        items={items}\n      />\n    </div>\n  );\n}\n\nexport default Logs;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useState, useEffect } from \"react\";\nimport {\n  Box,\n  Button,\n  Header,\n  Pagination,\n  Table,\n  TextFilter,\n  SpaceBetween,\n  CollectionPreferences,\n  Modal,\n  ColumnLayout,\n  ExpandableSection,\n  Select,\n} from \"@awsui/components-react\";\nimport { useCollection } from \"@awsui/collection-hooks\";\nimport { Divider } from \"antd\";\nimport { sessions } from \"../Shared/RequestService\";\nimport { API, graphqlOperation } from \"aws-amplify\";\nimport { onUpdateRequests } from \"../../graphql/subscriptions\";\nimport Status from \"../Shared/Status\";\nimport \"../../index.css\";\nimport Logs from \"../Sessions/Logs\";\n\nfunction convertAwsDateTime(awsDateTime) {\n  // Parse AWS datetime string into a Date object\n  const date = new Date(awsDateTime);\n  // Format date in user-friendly format\n  const options = {\n    weekday: 'short',\n    day: 'numeric',\n    month: 'short',\n    hour: '2-digit',\n    minute: '2-digit'\n  };\n  const userFriendlyFormat = date.toLocaleString('en-US', options);\n  return userFriendlyFormat\n}\n\nconst COLUMN_DEFINITIONS = [\n  {\n    id: \"id\",\n    sortingField: \"id\",\n    header: \"Id\",\n    cell: (item) => item.id,\n    width: 50,\n  },\n  {\n    id: \"email\",\n    sortingField: \"email\",\n    header: \"Requester\",\n    cell: (item) => item.email,\n    minWidth: 160,\n  },\n  {\n    id: \"account\",\n    sortingField: \"account\",\n    header: \"Account\",\n    cell: (item) => item.accountName,\n    minWidth: 10,\n  },\n  {\n    id: \"role\",\n    sortingField: \"role\",\n    header: \"Role\",\n    cell: (item) => item.role,\n    minWidth: 10,\n  },\n  {\n    id: \"startTime\",\n    sortingField: \"startTime\",\n    header: \"StartTime\",\n    cell: (item) => convertAwsDateTime(item.startTime),\n    minWidth: 160,\n  },\n  {\n    id: \"endTime\",\n    sortingField: \"endTime\",\n    header: \"EndTime\",\n    cell: (item) => item.endTime ? convertAwsDateTime(item.endTime) : \"-\",\n    minWidth: 10,\n  },\n  // {\n  //   id: \"duration\",\n  //   sortingField: \"duration\",\n  //   header: \"Duration\",\n  //   cell: (item) => `${item.duration} hours`,\n  //   maxWidth: 120,\n  // },\n  {\n    id: \"justification\",\n    sortingField: \"justification\",\n    header: \"Justification\",\n    cell: (item) => item.justification,\n    maxWidth: 200,\n  },\n  {\n    id: \"status\",\n    sortingField: \"status\",\n    header: \"Status\",\n    cell: (item) => <Status status={item.status} />,\n    minWidth: 10,\n  },\n];\n\nconst MyCollectionPreferences = ({ preferences, setPreferences }) => {\n  return (\n    <CollectionPreferences\n      title=\"Preferences\"\n      confirmLabel=\"Confirm\"\n      cancelLabel=\"Cancel\"\n      preferences={preferences}\n      onConfirm={({ detail }) => setPreferences(detail)}\n      pageSizePreference={{\n        title: \"Page size\",\n        options: [\n          { value: 10, label: \"10 Sessions\" },\n          { value: 30, label: \"30 Sessions\" },\n          { value: 50, label: \"50 Sessions\" },\n        ],\n      }}\n      wrapLinesPreference={{\n        label: \"Wrap lines\",\n        description: \"Check to see all the text and wrap the lines\",\n      }}\n      visibleContentPreference={{\n        title: \"Select visible columns\",\n        options: [\n          {\n            label: \"Sessions properties\",\n            options: [\n              // { id: \"id\", label: \"Id\", editable: false },\n              { id: \"email\", label: \"Requester\" },\n              { id: \"account\", label: \"Account\" },\n              { id: \"role\", label: \"Role\" },\n              // { id: \"duration\", label: \"Duration\" },\n              { id: \"startTime\", label: \"StartTime\" },\n              { id: \"justification\", label: \"Justification\" },\n              { id: \"endTime\", label: \"EndTime\" },\n              { id: \"status\", label: \"Status\" },\n            ],\n          },\n        ],\n      }}\n    />\n  );\n};\n\nfunction EmptyState({ title, subtitle, action }) {\n  return (\n    <Box textAlign=\"center\">\n      <Box variant=\"strong\">{title}</Box>\n      <Box variant=\"p\" padding={{ bottom: \"s\" }}>\n        {subtitle}\n      </Box>\n      {action}\n    </Box>\n  );\n}\n\nconst defaultStatus = {\n  label: \"All Status\",\n  value: \"0\",\n};\n\nfunction AuditSessions(props) {\n  const [allItems, setAllItems] = useState([]);\n  const [preferences, setPreferences] = useState({\n    pageSize: 10,\n    visibleContent: [\n      \"email\",\n      \"account\",\n      \"role\",\n      // \"duration\",\n      \"startTime\",\n      \"justification\",\n      \"endTime\",\n      \"status\",\n    ],\n  });\n\n  const [selectedOption, setSelectedOption] = useState(defaultStatus);\n  const selectStatusOptions = prepareSelectOptions(\"status\", defaultStatus);\n\n  function prepareSelectOptions(field, defaultOption) {\n    const optionSet = [];\n    // Building a non redundant list of the field passed as parameter.\n\n    allItems.forEach((item) => {\n      if (optionSet.indexOf(item[field]) === -1) {\n        optionSet.push(item[field]);\n      }\n    });\n    optionSet.sort();\n\n    // The first element is the default one.\n    const options = [defaultOption];\n\n    // Adding the other element ot the list.\n    optionSet.forEach((item, index) =>\n      options.push({ label: item, value: (index + 1).toString() })\n    );\n    return options;\n  }\n\n  function matchesStatus(item, selectedStatus) {\n    return (\n      selectedStatus === defaultStatus || item.status === selectedStatus.label\n    );\n  }\n\n  const SEARCHABLE_COLUMNS = COLUMN_DEFINITIONS.map((item) => item.id);\n  const {\n    items,\n    actions,\n    filteredItemsCount,\n    collectionProps,\n    filterProps,\n    paginationProps,\n  } = useCollection(allItems, {\n    filtering: {\n      filteringFunction: (item, filteringText) => {\n        if (!matchesStatus(item, selectedOption)) {\n          return false;\n        }\n        const filteringTextLowerCase = filteringText.toLowerCase();\n\n        return SEARCHABLE_COLUMNS.map((key) => item[key]).some(\n          (value) =>\n            typeof value === \"string\" &&\n            value.toLowerCase().indexOf(filteringTextLowerCase) > -1\n        );\n      },\n      empty: (\n        <EmptyState title=\"No sessions\" subtitle=\"No session to display.\" />\n      ),\n      noMatch: (\n        <EmptyState\n          title=\"No matches\"\n          subtitle=\"Your search didn't return any records.\"\n          action={\n            <Button onClick={() => actions.setFiltering(\"\")}>\n              Clear filter\n            </Button>\n          }\n        />\n      ),\n    },\n    pagination: { pageSize: preferences.pageSize },\n    sorting: {},\n    selection: {},\n  });\n\n  const { selectedItems } = collectionProps;\n  const [tableLoading, setTableLoading] = useState(true);\n  const [visible, setVisible] = useState(false);\n  const [refreshLoading, setRefreshLoading] = useState(false);\n  const [viewLogs, setViewLogs] = useState(false);\n\n  useEffect(() => {\n    views();\n    props.addNotification([]);\n    approveEvent();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  function views() {\n    let filter = {\n      or: [{ status: { eq: \"ended\" } }, { status: { eq: \"revoked\" } }, { status: { eq: \"in progress\" } }, { status: { eq: \"scheduled\" } }],\n    };\n    sessions(filter).then((items) => {\n      items.sort((a, b) => (a.updatedAt < b.updatedAt ? 1 : -1));\n      setAllItems(items);\n      setTableLoading(false);\n      setRefreshLoading(false);\n    });\n  }\n\n  function approveEvent() {\n    API.graphql(graphqlOperation(onUpdateRequests)).subscribe({\n      next: ({ value }) => {\n        if (value.data.onUpdateRequests.status === \"ended\" || value.data.onUpdateRequests.status === \"revoked\" || value.data.onUpdateRequests.status === \"scheduled\" ||value.data.onUpdateRequests.status === \"in progress\" ) views();\n      },\n      error: (error) => console.warn(error),\n    });\n  }\n\n  function handleRefresh() {\n    setRefreshLoading(true);\n    setTableLoading(true);\n    views();\n  }\n\n  function handleSelect() {\n    setVisible(true);\n    setViewLogs(true);\n  }\n\n  const ValueWithLabel = ({ label, children }) => (\n    <div>\n      <div className=\"headings\">\n        <Box color=\"inherit\" fontSize=\"body-m\">\n          {label}\n        </Box>\n      </div>\n      <div>{children}</div>\n    </div>\n  );\n\n  return (\n    <div className=\"container\">\n      <Table\n        {...collectionProps}\n        resizableColumns=\"true\"\n        loading={tableLoading}\n        loadingText=\"Fetching sessions\"\n        header={\n          <Header\n            counter={\n              selectedItems.length\n                ? `(${selectedItems.length}/${allItems.length})`\n                : `(${allItems.length})`\n            }\n            actions={\n              <SpaceBetween size=\"s\" direction=\"horizontal\">\n                <Button\n                  iconName=\"refresh\"\n                  onClick={handleRefresh}\n                  loading={refreshLoading}\n                />\n                <Button\n                  disabled={selectedItems.length === 0}\n                  onClick={handleSelect}\n                >\n                  View Details\n                </Button>\n              </SpaceBetween>\n            }\n            description=\"Completed or revoked TEAM sessions\"\n          >\n            Sessions\n          </Header>\n        }\n        filter={\n          <div className=\"input-container\">\n            <TextFilter\n              {...filterProps}\n              filteringPlaceholder=\"Find session\"\n              countText={filteredItemsCount}\n              className=\"input-filter\"\n            />\n            <Select\n              {...filterProps}\n              className=\"select-filter engine-filter\"\n              selectedAriaLabel=\"Selected\"\n              options={selectStatusOptions}\n              selectedOption={selectedOption}\n              onChange={({ detail }) =>\n                setSelectedOption(detail.selectedOption)\n              }\n              ariaDescribedby={null}\n            />\n          </div>\n        }\n        columnDefinitions={COLUMN_DEFINITIONS}\n        visibleColumns={preferences.visibleContent}\n        pagination={<Pagination {...paginationProps} />}\n        preferences={\n          <MyCollectionPreferences\n            preferences={preferences}\n            setPreferences={setPreferences}\n          />\n        }\n        items={items}\n        selectionType=\"single\"\n      />\n      <div>\n        {selectedItems.length ? (\n          <Modal\n            onDismiss={() => {\n              setVisible(false);\n              setViewLogs(false);\n            }}\n            visible={visible}\n            closeAriaLabel=\"Close modal\"\n            size=\"large\"\n            footer={\n              <Box float=\"right\">\n                <SpaceBetween direction=\"horizontal\" size=\"s\">\n                  <Button\n                    variant=\"link\"\n                    onClick={() => {\n                      setViewLogs(false);\n                      setVisible(false);\n                    }}\n                  >\n                    Cancel\n                  </Button>\n                </SpaceBetween>\n              </Box>\n            }\n            header=\"Session details\"\n          >\n            <SpaceBetween size=\"s\">\n              <ColumnLayout columns={3} variant=\"text-grid\">\n                <SpaceBetween size=\"l\">\n                  <ValueWithLabel\n                    label=\"Requester\"\n                    children={`${selectedItems[0].email}`}\n                  />\n                  <ValueWithLabel label=\"Status\">\n                    <Status status={selectedItems[0].status} />\n                  </ValueWithLabel>\n                  <ValueWithLabel\n                    label=\"Justification\"\n                    children={`${selectedItems[0].justification}`}\n                  />\n                </SpaceBetween>\n                <SpaceBetween size=\"l\">\n                  <ValueWithLabel\n                    label=\"Account\"\n                    children={`${selectedItems[0].accountName} (${selectedItems[0].accountId})`}\n                  />\n                  <ValueWithLabel\n                    label=\"Role\"\n                    children={`${selectedItems[0].role}`}\n                  />\n                  <ValueWithLabel\n                    label=\"TicketNo\"\n                    children={`${selectedItems[0].ticketNo}`}\n                  />\n                </SpaceBetween>\n                <SpaceBetween size=\"l\">\n                  <ValueWithLabel\n                    label=\"Start Time\"\n                    children={convertAwsDateTime(selectedItems[0].startTime)}\n                  />\n                  <ValueWithLabel\n                    label=\"End Time\"\n                    children={convertAwsDateTime(selectedItems[0].endTime)}\n                  />\n                </SpaceBetween>\n              </ColumnLayout>\n              <Divider style={{ marginBottom: \"7px\", marginTop: \"7px\" }} />\n              <ColumnLayout columns={3}>\n                <SpaceBetween size=\"m\">\n                  <ValueWithLabel\n                    label=\"Approved by\"\n                    children={`${selectedItems[0].approver}`}\n                  />\n                  <ValueWithLabel\n                    label=\"Comments\"\n                    children={`${selectedItems[0].comment}`}\n                  />\n                </SpaceBetween>\n                <div>\n                  {selectedItems[0].status === \"revoked\" && (\n                    <SpaceBetween size=\"m\">\n                      <ValueWithLabel\n                        label={\n                          selectedItems[0].revoker === props.user\n                            ? \"Revoked by (requester)\"\n                            : \"Revoked by (approver)\"\n                        }\n                        children={`${selectedItems[0].revoker}`}\n                      />\n                      <ValueWithLabel\n                        label=\"Comments\"\n                        children={`${selectedItems[0].revokeComment}`}\n                      />\n                    </SpaceBetween>\n                  )}\n                </div>\n              </ColumnLayout>\n              <ExpandableSection\n                variant=\"footer\"\n                header=\"Session Logs\"\n                className=\"expanded\"\n              >\n                <div>{viewLogs && <Logs item={selectedItems[0]} />}</div>\n              </ExpandableSection>\n            </SpaceBetween>\n          </Modal>\n        ) : null}\n      </div>\n    </div>\n  );\n}\n\nexport default AuditSessions;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { getBaseProps } from '../internal/base-component';\nimport InternalGrid from './internal';\nimport { GridProps } from './interfaces';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { GridProps };\n\nexport default function Grid({ gridDefinition = [], disableGutters = false, children, ...restProps }: GridProps) {\n  const baseComponentProps = useBaseComponent('Grid');\n  const baseProps = getBaseProps(restProps);\n  const [breakpoint, ref] = useContainerBreakpoints(undefined);\n\n  return (\n    <InternalGrid\n      {...baseProps}\n      {...baseComponentProps}\n      ref={ref}\n      __breakpoint={breakpoint}\n      gridDefinition={gridDefinition}\n      disableGutters={disableGutters}\n    >\n      {children}\n    </InternalGrid>\n  );\n}\n\napplyDisplayName(Grid, 'Grid');\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport { React, useState } from \"react\";\nimport Box from \"@awsui/components-react/box\";\nimport { useHistory } from \"react-router-dom\";\nimport Button from \"@awsui/components-react/button\";\nimport ColumnLayout from \"@awsui/components-react/column-layout\";\nimport Container from \"@awsui/components-react/container\";\nimport FormField from \"@awsui/components-react/form-field\";\nimport Grid from \"@awsui/components-react/grid\";\nimport SpaceBetween from \"@awsui/components-react/space-between\";\n// import Link from \"@awsui/components-react/link\";\nimport Select from \"@awsui/components-react/select\";\nimport team from \"../../media/team.png\";\nimport \"../../media/landing-page.css\";\n\nconst selections = [\n  { id: \"1\", label: \"Create TEAM request\" },\n  { id: \"2\", label: \"Approve TEAM request\" },\n];\n\nfunction Landing(props) {\n  const history = useHistory();\n  const [selectedOption, setSelectedOption] = useState(selections[0]);\n  return (\n    <Box margin={{ bottom: \"l\" }}>\n      <div className=\"custom-home__header\">\n        <Box\n        // padding={{ vertical: \"xxxl\", horizontal: \"xxxl\" }}\n        // margin={{ bottom: \"xxl\" }}\n        >\n          <Grid\n            gridDefinition={[\n              { offset: { l: 2, xxs: 1 }, colspan: { l: 8, xxs: 10 } },\n              {\n                colspan: { xl: 6, l: 5, s: 6, xxs: 10 },\n                offset: { l: 2, xxs: 1 },\n              },\n              {\n                colspan: { xl: 2, l: 3, s: 4, xxs: 10 },\n                offset: { s: 0, xxs: 1 },\n              },\n            ]}\n          >\n            <Box fontWeight=\"light\" padding={{ top: \"xs\" }}>\n              <span className=\"custom-home__category\">\n                Identity &amp; Access Management\n              </span>\n            </Box>\n            <div className=\"custom-home__header-title\">\n              <Box\n                variant=\"h1\"\n                fontWeight=\"light\"\n                padding=\"n\"\n                fontSize=\"heading-xl\"\n                color=\"inherit\"\n              >\n                IAM Identity Center\n              </Box>\n              <Box\n                fontWeight=\"normal\"\n                padding={{ bottom: \"s\" }}\n                fontSize=\"display-l\"\n                color=\"inherit\"\n              >\n                Temporary Elevated Access Management\n              </Box>\n              <Box variant=\"p\" fontWeight=\"light\">\n                <span className=\"custom-home__header-sub-title\">\n                  Temporary Elevated Access Management (TEAM) is an automated,\n                  approval-based workflow for managing time-bound elevated\n                  access to your AWS environment\n                </span>\n              </Box>\n            </div>\n            <div className=\"custom-home__header-cta\">\n              <Container margin={{ left: \"xxl\" }}>\n                <SpaceBetween size=\"xl\">\n                  <Box variant=\"h2\" padding=\"n\">\n                    TEAM Requests\n                  </Box>\n                  <FormField stretch={true} label=\"Actions\">\n                    <Select\n                      selectedAriaLabel=\"Selected\"\n                      options={selections}\n                      selectedOption={selectedOption}\n                      ariaRequired={true}\n                      onChange={(e) =>\n                        setSelectedOption(e.detail.selectedOption)\n                      }\n                    />\n                  </FormField>\n                  <Button\n                    href=\"#\"\n                    variant=\"primary\"\n                    onClick={() => {\n                      if (selectedOption.id === \"1\") {\n                        history.push(\"/requests/request\");\n                      } else if (selectedOption.id === \"2\") {\n                        history.push(\"/approvals/approve\");\n                      }\n                      props.setActiveHref(\"/sessions/active\")\n                    }}\n                  >\n                    Next steps\n                  </Button>\n                </SpaceBetween>\n              </Container>\n            </div>\n          </Grid>\n        </Box>\n      </div>\n\n      <Box padding={{ top: \"xxxl\", horizontal: \"s\" }}>\n        <Grid\n          gridDefinition={[\n            {\n              colspan: { xl: 6, l: 5, s: 6, xxs: 10 },\n              // offset: { l: 2, xxs: 1 },\n            },\n            {\n              colspan: { xl: 2, l: 3, s: 4, xxs: 10 },\n              // offset: { s: 0, xxs: 1 },\n            },\n          ]}\n        >\n          <SpaceBetween size=\"xxl\">\n            <div>\n              <Box\n                variant=\"h1\"\n                tagOverride=\"h2\"\n                padding={{ bottom: \"s\", top: \"n\" }}\n              >\n                How it works\n              </Box>\n              <Container className=\"picbox\">\n                <div>\n                  <img src={team} alt=\"team\" className=\"pic\" />\n                </div>\n              </Container>\n            </div>\n\n            <div>\n              <Box\n                variant=\"h1\"\n                tagOverride=\"h2\"\n                padding={{ bottom: \"s\", top: \"n\" }}\n              >\n                Benefits and features\n              </Box>\n              <Container>\n                <ColumnLayout columns={2} variant=\"text-grid\">\n                  <div>\n                    <Box variant=\"h3\" padding={{ top: \"n\" }}>\n                      Management console\n                    </Box>\n                    <Box variant=\"p\">\n                      Create, approve, monitor, and manage your TEAM request with\n                      a few simple clicks on the management console.\n                    </Box>\n                  </div>\n                  <div>\n                    <Box variant=\"h3\" padding={{ top: \"n\" }}>\n                      Auditing\n                    </Box>\n                    <Box variant=\"p\">\n                      Session logs auditing enabling easy correlation of request\n                      justification with session activity\n                    </Box>\n                  </div>\n                  <div>\n                    <Box variant=\"h3\" padding={{ top: \"n\" }}>\n                      Reporting\n                    </Box>\n                    <Box variant=\"p\">\n                      Centralised reporting of request and approval information\n                    </Box>\n                  </div>\n                  <div>\n                    <Box variant=\"h3\" padding={{ top: \"n\" }}>\n                      Enhanced security\n                    </Box>\n                    <Box variant=\"p\">\n                      Application single-sign-on with Cognito SAML integration\n                      and group based authorization\n                    </Box>\n                  </div>\n                </ColumnLayout>\n              </Container>\n            </div>\n            {/* <div>\n              <Box\n                variant=\"h1\"\n                tagOverride=\"h2\"\n                padding={{ bottom: \"s\", top: \"n\" }}\n              >\n                Use cases\n              </Box>\n              <Container>\n                <ColumnLayout columns={2} variant=\"text-grid\">\n                  <div>\n                    <Box variant=\"h3\" padding={{ top: \"n\" }}>\n                      Configure multiple origins\n                    </Box>\n                    <Box variant=\"p\">\n                      Configure multiple origin servers and multiple cache\n                      behaviors based on URL path patterns on your website. Use\n                      AWS origins such as Amazon S3 or Elastic Load Balancing,\n                      and add your own custom origins to the mix.\n                    </Box>\n                    <Link href=\"#\">Learn more</Link>\n                  </div>\n                  <div>\n                    <Box variant=\"h3\" padding={{ top: \"n\" }}>\n                      Deliver streaming video\n                    </Box>\n                    <Box variant=\"p\">\n                      Use CloudFront to deliver on-demand video without the need\n                      to set up or operate any media servers. CloudFront\n                      supports multiple protocols for media streaming.\n                    </Box>\n                    <Link href=\"#\">Learn more</Link>\n                  </div>\n                </ColumnLayout>\n              </Container>\n            </div> */}\n          </SpaceBetween>\n        </Grid>\n      </Box>\n    </Box>\n  );\n}\nexport default Landing;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { AlertProps } from './interfaces';\nimport InternalAlert from './internal';\nimport useBaseComponent from '../internal/hooks/use-base-component';\n\nexport { AlertProps };\n\nexport default function Alert({ type = 'info', visible = true, ...props }: AlertProps) {\n  const baseComponentProps = useBaseComponent('Alert');\n  return <InternalAlert type={type} visible={visible} {...props} {...baseComponentProps} />;\n}\n\napplyDisplayName(Alert, 'Alert');\n","\n    import './styles.scoped.css';\n    export default {\n  \"icon\": \"awsui_icon_k5dlb_15u03_93\",\n  \"top-navigation\": \"awsui_top-navigation_k5dlb_15u03_111\",\n  \"padding-box\": \"awsui_padding-box_k5dlb_15u03_124\",\n  \"medium\": \"awsui_medium_k5dlb_15u03_134\",\n  \"narrow\": \"awsui_narrow_k5dlb_15u03_134\",\n  \"virtual\": \"awsui_virtual_k5dlb_15u03_145\",\n  \"hidden\": \"awsui_hidden_k5dlb_15u03_149\",\n  \"\\t\": \"awsui_\\t_k5dlb_15u03_1\",\n  \"identity\": \"awsui_identity_k5dlb_15u03_161\",\n  \"identity-link\": \"awsui_identity-link_k5dlb_15u03_164\",\n  \"no-logo\": \"awsui_no-logo_k5dlb_15u03_181\",\n  \"logo\": \"awsui_logo_k5dlb_15u03_185\",\n  \"title\": \"awsui_title_k5dlb_15u03_197\",\n  \"inputs\": \"awsui_inputs_k5dlb_15u03_212\",\n  \"search\": \"awsui_search_k5dlb_15u03_219\",\n  \"search-expanded\": \"awsui_search-expanded_k5dlb_15u03_223\",\n  \"utilities\": \"awsui_utilities_k5dlb_15u03_227\",\n  \"utility-wrapper\": \"awsui_utility-wrapper_k5dlb_15u03_238\",\n  \"utility-type-button-link\": \"awsui_utility-type-button-link_k5dlb_15u03_259\",\n  \"utility-type-menu-dropdown\": \"awsui_utility-type-menu-dropdown_k5dlb_15u03_263\",\n  \"utility-type-button-primary-button\": \"awsui_utility-type-button-primary-button_k5dlb_15u03_271\",\n  \"utility-link-icon\": \"awsui_utility-link-icon_k5dlb_15u03_279\",\n  \"utility-button-external-icon\": \"awsui_utility-button-external-icon_k5dlb_15u03_283\",\n  \"offset-right-none\": \"awsui_offset-right-none_k5dlb_15u03_287\",\n  \"offset-right-l\": \"awsui_offset-right-l_k5dlb_15u03_291\",\n  \"offset-right-xxl\": \"awsui_offset-right-xxl_k5dlb_15u03_295\",\n  \"overflow-menu-drawer\": \"awsui_overflow-menu-drawer_k5dlb_15u03_300\",\n  \"overflow-menu\": \"awsui_overflow-menu_k5dlb_15u03_300\",\n  \"overflow-menu-header\": \"awsui_overflow-menu-header_k5dlb_15u03_322\",\n  \"overflow-menu-header-text\": \"awsui_overflow-menu-header-text_k5dlb_15u03_329\",\n  \"overflow-menu-header-text--secondary\": \"awsui_overflow-menu-header-text--secondary_k5dlb_15u03_340\",\n  \"overflow-menu-header-text--title\": \"awsui_overflow-menu-header-text--title_k5dlb_15u03_346\",\n  \"overflow-menu-back-button\": \"awsui_overflow-menu-back-button_k5dlb_15u03_350\",\n  \"overflow-menu-dismiss-button\": \"awsui_overflow-menu-dismiss-button_k5dlb_15u03_354\",\n  \"overflow-menu-control\": \"awsui_overflow-menu-control_k5dlb_15u03_358\",\n  \"overflow-menu-list-item-utility\": \"awsui_overflow-menu-list-item-utility_k5dlb_15u03_375\",\n  \"overflow-menu-control-link\": \"awsui_overflow-menu-control-link_k5dlb_15u03_382\",\n  \"overflow-menu-control-expandable-menu-trigger\": \"awsui_overflow-menu-control-expandable-menu-trigger_k5dlb_15u03_385\",\n  \"overflow-menu-list\": \"awsui_overflow-menu-list_k5dlb_15u03_375\",\n  \"overflow-menu-list-submenu\": \"awsui_overflow-menu-list-submenu_k5dlb_15u03_416\",\n  \"overflow-menu-list-item\": \"awsui_overflow-menu-list-item_k5dlb_15u03_375\",\n  \"overflow-menu-list-item-icon\": \"awsui_overflow-menu-list-item-icon_k5dlb_15u03_424\",\n  \"overflow-menu-list-item-text\": \"awsui_overflow-menu-list-item-text_k5dlb_15u03_427\",\n  \"overflow-menu-list-item-submenu\": \"awsui_overflow-menu-list-item-submenu_k5dlb_15u03_436\",\n  \"overflow-menu-list-item-dropdown-menu\": \"awsui_overflow-menu-list-item-dropdown-menu_k5dlb_15u03_441\",\n  \"overflow-menu-list-item-expandable\": \"awsui_overflow-menu-list-item-expandable_k5dlb_15u03_444\",\n  \"expanded\": \"awsui_expanded_k5dlb_15u03_452\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\n\nimport { useContainerBreakpoints, useContainerQuery } from '../internal/hooks/container-queries';\nimport { TopNavigationProps } from './interfaces';\nimport styles from './styles.css.js';\n\nexport interface UseTopNavigationParams {\n  identity: TopNavigationProps['identity'];\n  search: TopNavigationProps['search'];\n  utilities: NonNullable<TopNavigationProps['utilities']>;\n}\n\nexport interface ResponsiveState {\n  hideUtilityText?: boolean;\n  hideSearch?: boolean;\n  hideUtilities?: number[];\n  hideTitle?: boolean;\n}\n\nexport interface TopNavigationSizeConfiguration {\n  hasSearch: boolean;\n  availableWidth: number;\n  utilitiesLeftPadding: number;\n  fullIdentityWidth: number;\n  titleWidth: number;\n  searchSlotWidth: number;\n  searchUtilityWidth: number;\n  utilityWithLabelWidths: number[];\n  utilityWithoutLabelWidths: number[];\n  menuTriggerUtilityWidth: number;\n}\n\nexport interface UseTopNavigation {\n  mainRef: React.Ref<HTMLDivElement>;\n  virtualRef: React.Ref<HTMLDivElement>;\n\n  responsiveState: ResponsiveState;\n  breakpoint: 'default' | 'xxs' | 's';\n  isSearchExpanded: boolean;\n  onSearchUtilityClick: () => void;\n}\n\n// A small buffer to make calculations more lenient against browser lag or padding adjustments.\nconst RESPONSIVENESS_BUFFER = 20;\n\nexport function useTopNavigation({ identity, search, utilities }: UseTopNavigationParams): UseTopNavigation {\n  // Refs and breakpoints\n  const mainRef = useRef<HTMLElement | null>(null);\n  const virtualRef = useRef<HTMLDivElement | null>(null);\n  const [breakpoint, breakpointRef] = useContainerBreakpoints(['xxs', 's']);\n\n  // Responsiveness state\n  // The component works by calculating the possible resize states that it can\n  // be in, and having a state variable to track which state we're currently in.\n  const hasSearch = !!search;\n  const hasTitleWithLogo = identity && !!identity.logo && !!identity.title;\n  const responsiveStates = useMemo<ReadonlyArray<ResponsiveState>>(() => {\n    return generateResponsiveStateKeys(utilities, hasSearch, hasTitleWithLogo);\n  }, [utilities, hasSearch, hasTitleWithLogo]);\n\n  // To hide/show elements dynamically, we need to know how much space they take up,\n  // even if they're not being rendered. The top navigation elements are hidden/resized\n  // based on the available size or if a search bar is open, and they need to be available\n  // for calculations so we know where to toggle them. So we render a second, more stable\n  // top-nav off screen to do these calculations against.\n  //\n  // We can't \"affix\" these values to pixels because they can depend on spacing tokens.\n  // It's easier to render all of these utilities separately rather than figuring out\n  // spacing token values, icon sizes, text widths, etc.\n  const [responsiveState, setResponsiveState] = useState<ResponsiveState | undefined>();\n  const recalculateFit = useCallback(() => {\n    if (!mainRef?.current || !virtualRef.current) {\n      setResponsiveState(responsiveStates[0]);\n      return;\n    }\n\n    // Get available width from the visible top navigation.\n    const availableWidth = getContentBoxWidth(mainRef.current.querySelector(`.${styles['padding-box']}`)!);\n    if (availableWidth === 0) {\n      // Likely in an SSR or Jest situation.\n      setResponsiveState(responsiveStates[0]);\n      return;\n    }\n\n    const sizeConfiguration = {\n      hasSearch,\n      availableWidth,\n\n      // Get widths from the hidden top navigation\n      fullIdentityWidth: virtualRef.current.querySelector(`.${styles.identity}`)!.getBoundingClientRect().width,\n      titleWidth: virtualRef.current.querySelector(`.${styles.title}`)?.getBoundingClientRect().width ?? 0,\n      searchSlotWidth: virtualRef.current.querySelector(`.${styles.search}`)?.getBoundingClientRect().width ?? 0,\n      searchUtilityWidth: virtualRef.current.querySelector('[data-utility-special=\"search\"]')!.getBoundingClientRect()\n        .width,\n      utilitiesLeftPadding: parseFloat(\n        getComputedStyle(virtualRef.current.querySelector(`.${styles.utilities}`)!).paddingLeft || '0px'\n      ),\n      utilityWithLabelWidths: Array.prototype.slice\n        .call(virtualRef.current.querySelectorAll(`[data-utility-hide=\"false\"]`))\n        .map((element: Element) => element.getBoundingClientRect().width),\n      utilityWithoutLabelWidths: Array.prototype.slice\n        .call(virtualRef.current.querySelectorAll(`[data-utility-hide=\"true\"]`))\n        .map((element: Element) => element.getBoundingClientRect().width),\n      menuTriggerUtilityWidth: virtualRef.current\n        .querySelector('[data-utility-special=\"menu-trigger\"]')!\n        .getBoundingClientRect().width,\n    };\n    setResponsiveState(determineBestResponsiveState(responsiveStates, sizeConfiguration));\n  }, [responsiveStates, hasSearch]);\n\n  const [, containerQueryRef] = useContainerQuery(() => {\n    recalculateFit();\n  }, [recalculateFit]);\n\n  // Due to being rendered in a portal, the virtual navigation isn't rendered\n  // at the same time as the main one.\n  const onVirtualMount = useCallback(\n    (element: HTMLDivElement | null) => {\n      virtualRef.current = element;\n      recalculateFit();\n    },\n    [recalculateFit]\n  );\n\n  // Search slot expansion on small screens\n  const [isSearchMinimized, setSearchMinimized] = useState(true);\n  const isSearchExpanded = !isSearchMinimized && hasSearch && responsiveState?.hideSearch;\n\n  // If the search was expanded, and then the screen resized so that the\n  // expansion is no longer necessary. So we implicitly minimize it.\n  useEffect(() => {\n    if (!responsiveState?.hideSearch) {\n      setSearchMinimized(true);\n    }\n  }, [responsiveState]);\n\n  // If the search is expanded after clicking on the search utility, move\n  // the focus to the input. Since this is a user-controlled slot, we're just\n  // assuming that it contains an input, though it's a pretty safe guess.\n  useEffect(() => {\n    if (isSearchExpanded) {\n      mainRef?.current?.querySelector<HTMLInputElement>(`.${styles.search} input`)?.focus();\n    }\n  }, [isSearchExpanded, mainRef]);\n\n  const mergedMainRef = useMergeRefs(mainRef, containerQueryRef, breakpointRef);\n\n  return {\n    mainRef: mergedMainRef,\n    virtualRef: onVirtualMount,\n    responsiveState: responsiveState ?? responsiveStates[0],\n    breakpoint: breakpoint ?? 'default',\n    isSearchExpanded: !!isSearchExpanded,\n    onSearchUtilityClick: () => setSearchMinimized(isSearchMinimized => !isSearchMinimized),\n  };\n}\n\n/**\n * Get the width of the content box (assuming the element's box-sizing is border-box).\n */\nfunction getContentBoxWidth(element: Element): number {\n  const style = getComputedStyle(element);\n  return (\n    parseFloat(style.width || '0px') - parseFloat(style.paddingLeft || '0px') - parseFloat(style.paddingRight || '0px')\n  );\n}\n\n/**\n * Generates the series of responsive steps that can be performed on the header in order.\n */\nexport function generateResponsiveStateKeys(\n  utilities: ReadonlyArray<TopNavigationProps.Utility>,\n  canHideSearch: boolean,\n  canHideTitle: boolean\n): ReadonlyArray<ResponsiveState> {\n  const states: ResponsiveState[] = [{}];\n  if (utilities.some(utility => utility.text)) {\n    states.push({ hideUtilityText: true });\n  }\n  if (canHideSearch) {\n    states.push({\n      hideUtilityText: true,\n      hideSearch: true,\n    });\n  }\n  const hiddenUtilties = [];\n  for (let i = 0; i < utilities.length; i++) {\n    if (!utilities[i].disableUtilityCollapse) {\n      hiddenUtilties.push(i);\n      states.push({\n        hideUtilityText: true,\n        hideSearch: canHideSearch || undefined,\n        hideUtilities: hiddenUtilties.length > 0 ? hiddenUtilties.slice() : undefined,\n      });\n    }\n  }\n  if (canHideTitle) {\n    states.push({\n      hideUtilityText: true,\n      hideSearch: canHideSearch || undefined,\n      hideUtilities: hiddenUtilties.length > 0 ? hiddenUtilties.slice() : undefined,\n      hideTitle: true,\n    });\n  }\n  return states;\n}\n\n/**\n * Determines the best responsive state configuration of the top navigation, based on the given list of possible responsive states\n * and the current sizes of all elements inside the navigation bar.\n */\nexport function determineBestResponsiveState(\n  possibleStates: ReadonlyArray<ResponsiveState>,\n  sizes: TopNavigationSizeConfiguration\n): ResponsiveState {\n  const {\n    hasSearch,\n    availableWidth,\n    utilitiesLeftPadding,\n    fullIdentityWidth,\n    titleWidth,\n    searchSlotWidth,\n    searchUtilityWidth,\n    utilityWithLabelWidths,\n    utilityWithoutLabelWidths,\n    menuTriggerUtilityWidth,\n  } = sizes;\n  // Iterate through each state and calculate its expected required width.\n  for (const state of possibleStates) {\n    const searchWidth = hasSearch ? (state.hideSearch ? searchUtilityWidth : searchSlotWidth) : 0;\n    const utilitiesWidth: number = (state.hideUtilityText ? utilityWithoutLabelWidths : utilityWithLabelWidths)\n      .filter((_width, i) => !state.hideUtilities || state.hideUtilities.indexOf(i) === -1)\n      .reduce((sum, width) => sum + width, 0);\n    const menuTriggerWidth = state.hideUtilities ? menuTriggerUtilityWidth : 0;\n    const identityWidth = state.hideTitle ? fullIdentityWidth - titleWidth : fullIdentityWidth;\n    const expectedInnerWidth = identityWidth + searchWidth + utilitiesLeftPadding + utilitiesWidth + menuTriggerWidth;\n    if (expectedInnerWidth <= availableWidth - RESPONSIVENESS_BUFFER) {\n      return state;\n    }\n  }\n\n  // If nothing matches, pick the smallest possible state.\n  return possibleStates[possibleStates.length - 1];\n}\n","\n    import './styles.scoped.css';\n    export default {\n  \"button\": \"awsui_button_m5h9f_1vurw_93\",\n  \"expanded\": \"awsui_expanded_m5h9f_1vurw_127\",\n  \"offset-right-none\": \"awsui_offset-right-none_m5h9f_1vurw_138\",\n  \"offset-right-l\": \"awsui_offset-right-l_m5h9f_1vurw_141\",\n  \"offset-right-xxl\": \"awsui_offset-right-xxl_m5h9f_1vurw_144\",\n  \"text\": \"awsui_text_m5h9f_1vurw_166\",\n  \"icon\": \"awsui_icon_m5h9f_1vurw_170\"\n};\n  ","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React from 'react';\n\nimport { MenuDropdownProps, ButtonTriggerProps } from './interfaces';\nimport { getBaseProps } from '../../base-component';\nimport { applyDisplayName } from '../../utils/apply-display-name';\nimport InternalButtonDropdown from '../../../button-dropdown/internal';\nimport InternalIcon from '../../../icon/internal';\nimport buttonDropdownStyles from '../../../button-dropdown/styles.css.js';\nimport styles from './styles.css.js';\n\nexport { MenuDropdownProps };\n\nexport const ButtonTrigger = React.forwardRef(\n  (\n    {\n      iconName,\n      iconUrl,\n      iconAlt,\n      iconSvg,\n      badge,\n      ariaLabel,\n      offsetRight,\n      disabled,\n      expanded,\n      children,\n      onClick,\n    }: ButtonTriggerProps,\n    ref: React.Ref<any>\n  ) => {\n    const hasIcon = iconName || iconUrl || iconSvg;\n\n    return (\n      <button\n        ref={ref}\n        type=\"button\"\n        className={clsx(styles.button, styles[`offset-right-${offsetRight}`], { [styles.expanded]: expanded })}\n        aria-label={ariaLabel}\n        aria-expanded={!!expanded}\n        aria-haspopup={true}\n        disabled={disabled}\n        onClick={event => {\n          event.preventDefault();\n          onClick && onClick();\n        }}\n      >\n        {hasIcon && (\n          <InternalIcon\n            className={styles.icon}\n            name={iconName}\n            url={iconUrl}\n            alt={iconAlt}\n            svg={iconSvg}\n            badge={badge}\n          />\n        )}\n        {children && <span className={styles.text}>{children}</span>}\n        {children && (\n          <InternalIcon\n            name=\"caret-down-filled\"\n            className={expanded ? buttonDropdownStyles['rotate-up'] : buttonDropdownStyles['rotate-down']}\n          />\n        )}\n      </button>\n    );\n  }\n);\n\nconst MenuDropdown = ({\n  iconName,\n  iconUrl,\n  iconAlt,\n  iconSvg,\n  badge,\n  ariaLabel,\n  offsetRight,\n  children,\n  ...props\n}: MenuDropdownProps) => {\n  const baseProps = getBaseProps(props);\n\n  const dropdownTrigger = (clickHandler: () => void, ref: React.Ref<any>, isDisabled: boolean, isExpanded: boolean) => {\n    return (\n      <ButtonTrigger\n        ref={ref}\n        disabled={isDisabled}\n        expanded={isExpanded}\n        iconName={iconName}\n        iconUrl={iconUrl}\n        iconAlt={iconAlt}\n        iconSvg={iconSvg}\n        badge={badge}\n        ariaLabel={ariaLabel}\n        offsetRight={offsetRight}\n        onClick={clickHandler}\n      >\n        {children}\n      </ButtonTrigger>\n    );\n  };\n\n  return (\n    <InternalButtonDropdown\n      {...baseProps}\n      {...props}\n      variant=\"navigation\"\n      customTriggerBuilder={dropdownTrigger}\n      preferCenter={true}\n    />\n  );\n};\n\napplyDisplayName(MenuDropdown, 'MenuDropdown');\nexport default MenuDropdown;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { InternalButton } from '../../button/internal';\nimport InternalLink from '../../link/internal';\nimport InternalIcon from '../../icon/internal';\nimport MenuDropdown, { MenuDropdownProps } from '../../internal/components/menu-dropdown';\n\nimport { TopNavigationProps } from '../interfaces';\n\nimport styles from '../styles.css.js';\nimport { checkSafeUrl } from '../../internal/utils/check-safe-url';\nimport { joinStrings } from '../../internal/utils/strings';\nimport { fireCancelableEvent } from '../../internal/events';\n\nexport interface UtilityProps {\n  hideText: boolean;\n  definition: TopNavigationProps.Utility;\n  offsetRight?: MenuDropdownProps['offsetRight'];\n}\n\nexport default function Utility({ hideText, definition, offsetRight }: UtilityProps) {\n  const hasIcon = !!definition.iconName || !!definition.iconUrl || !!definition.iconAlt || !!definition.iconSvg;\n  const shouldHideText = hideText && !definition.disableTextCollapse && hasIcon;\n  let ariaLabel = definition.ariaLabel ?? definition.text;\n\n  if (definition.type === 'button') {\n    ariaLabel = definition.ariaLabel\n      ? definition.ariaLabel\n      : joinStrings(definition.text, definition.externalIconAriaLabel);\n    checkSafeUrl('TopNavigation', definition.href);\n    if (definition.variant === 'primary-button') {\n      return (\n        <span className={styles[`offset-right-${offsetRight}`]}>\n          <InternalButton\n            variant=\"primary\"\n            href={definition.href}\n            target={definition.external ? '_blank' : undefined}\n            onClick={definition.onClick}\n            onFollow={definition.onFollow}\n            ariaLabel={ariaLabel}\n            iconName={definition.iconName}\n            iconUrl={definition.iconUrl}\n            iconAlt={definition.iconAlt}\n            iconSvg={definition.iconSvg}\n          >\n            {shouldHideText ? null : (\n              <>\n                {definition.text}\n                {definition.external && (\n                  <>\n                    {' '}\n                    <span\n                      className={clsx(styles['utility-button-external-icon'], styles[`offset-right-${offsetRight}`])}\n                      aria-label={definition.externalIconAriaLabel}\n                      role={definition.externalIconAriaLabel ? 'img' : undefined}\n                    >\n                      <InternalIcon name=\"external\" />\n                    </span>\n                  </>\n                )}\n              </>\n            )}\n          </InternalButton>\n        </span>\n      );\n    } else {\n      // Link\n      return (\n        <span className={styles[`offset-right-${offsetRight}`]}>\n          <InternalLink\n            variant=\"top-navigation\"\n            href={definition.href}\n            target={definition.target}\n            rel={definition.rel}\n            external={definition.external}\n            onFollow={evt => {\n              fireCancelableEvent(\n                definition.onFollow,\n                { href: definition.href, target: definition.target, external: definition.external },\n                evt\n              );\n              fireCancelableEvent(\n                definition.onClick,\n                { href: definition.href, target: definition.target, external: definition.external },\n                evt\n              );\n            }}\n            ariaLabel={ariaLabel}\n          >\n            {hasIcon && (\n              <InternalIcon\n                name={definition.iconName}\n                url={definition.iconUrl}\n                alt={definition.iconAlt}\n                svg={definition.iconSvg}\n                badge={definition.badge}\n              />\n            )}\n            {!shouldHideText && definition.text && (\n              <span className={hasIcon ? styles['utility-link-icon'] : undefined}>{definition.text}</span>\n            )}\n          </InternalLink>\n        </span>\n      );\n    }\n  } else if (definition.type === 'menu-dropdown') {\n    const title = definition.title || definition.text;\n    const shouldShowTitle = shouldHideText || !definition.text;\n\n    checkSafeUrlRecursively(definition.items);\n\n    return (\n      <MenuDropdown\n        {...definition}\n        title={shouldShowTitle ? title : ''}\n        ariaLabel={ariaLabel}\n        offsetRight={offsetRight}\n      >\n        {!shouldHideText && definition.text}\n      </MenuDropdown>\n    );\n  }\n\n  return null;\n}\n\nfunction checkSafeUrlRecursively(itemOrGroup: MenuDropdownProps['items']) {\n  for (const item of itemOrGroup) {\n    checkSafeUrl('TopNavigation', item.href);\n\n    if ('items' in item) {\n      checkSafeUrlRecursively(item.items);\n    }\n  }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { createContext, Dispatch, SetStateAction, useContext, useState } from 'react';\n\ntype View = 'utilities' | 'dropdown-menu';\n\ninterface RouteData {\n  headerText?: string;\n  headerSecondaryText?: string;\n  definition?: any;\n\n  utilityIndex?: number;\n}\n\ninterface RouteState {\n  view: View;\n  data: RouteData | null;\n}\n\ninterface IViewContext {\n  state: RouteState;\n  setState: Dispatch<SetStateAction<RouteState>>;\n}\n\nconst defaultCtx: IViewContext = { state: { view: 'utilities', data: null }, setState: () => {} };\nexport const ViewContext = createContext<IViewContext>(defaultCtx);\n\nexport const useNavigate = () => {\n  const { setState } = useContext(ViewContext);\n\n  const navigate = (view: View, data: any) => {\n    setState({ view, data });\n  };\n\n  return navigate;\n};\n\ninterface RouteProps {\n  view: View;\n  element?: React.ReactNode | ((data: RouteData | null) => React.ReactElement);\n}\n\nexport const Route = ({ view, element }: RouteProps) => {\n  const { state } = useContext(ViewContext);\n\n  if (view === state.view) {\n    if (typeof element === 'function') {\n      return element(state.data);\n    }\n\n    return <>{element}</>;\n  }\n\n  return null;\n};\n\ninterface RouterProps {\n  children?: React.ReactNode;\n}\n\nconst Router = ({ children }: RouterProps) => {\n  const [state, setState] = useState<RouteState>({ view: 'utilities', data: null });\n  return <ViewContext.Provider value={{ state, setState }}>{children}</ViewContext.Provider>;\n};\n\nexport default Router;\n","export var FOCUS_GROUP = 'data-focus-lock';\nexport var FOCUS_DISABLED = 'data-focus-lock-disabled';\nexport var FOCUS_ALLOW = 'data-no-focus-lock';\nexport var FOCUS_AUTO = 'data-autofocus-inside';\n","import { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n *   const ownRef = useRef();\n *   const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n *   return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n    return useCallbackRef(defaultValue || null, function (newValue) { return refs.forEach(function (ref) { return assignRef(ref, newValue); }); });\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n    var ref = useState(function () { return ({\n        // value\n        value: initialValue,\n        // last callback\n        callback: callback,\n        // \"memoized\" public interface\n        facade: {\n            get current() {\n                return ref.value;\n            },\n            set current(value) {\n                var last = ref.value;\n                if (last !== value) {\n                    ref.value = value;\n                    ref.callback(value, last);\n                }\n            },\n        },\n    }); })[0];\n    // update callback\n    ref.callback = callback;\n    return ref.facade;\n}\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n    if (typeof ref === 'function') {\n        ref(value);\n    }\n    else if (ref) {\n        ref.current = value;\n    }\n    return ref;\n}\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nexport var hiddenGuard = {\n  width: '1px',\n  height: '0px',\n  padding: 0,\n  overflow: 'hidden',\n  position: 'fixed',\n  top: '1px',\n  left: '1px'\n};\n\nvar InFocusGuard = function InFocusGuard(_ref) {\n  var children = _ref.children;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n    key: \"guard-first\",\n    \"data-focus-guard\": true,\n    \"data-focus-auto-guard\": true,\n    style: hiddenGuard\n  }), children, children && /*#__PURE__*/React.createElement(\"div\", {\n    key: \"guard-last\",\n    \"data-focus-guard\": true,\n    \"data-focus-auto-guard\": true,\n    style: hiddenGuard\n  }));\n};\n\nInFocusGuard.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  children: PropTypes.node\n} : {};\nInFocusGuard.defaultProps = {\n  children: null\n};\nexport default InFocusGuard;","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n    return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    var buffer = [];\n    var assigned = false;\n    var medium = {\n        read: function () {\n            if (assigned) {\n                throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n            }\n            if (buffer.length) {\n                return buffer[buffer.length - 1];\n            }\n            return defaults;\n        },\n        useMedium: function (data) {\n            var item = middleware(data, assigned);\n            buffer.push(item);\n            return function () {\n                buffer = buffer.filter(function (x) { return x !== item; });\n            };\n        },\n        assignSyncMedium: function (cb) {\n            assigned = true;\n            while (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n            }\n            buffer = {\n                push: function (x) { return cb(x); },\n                filter: function () { return buffer; },\n            };\n        },\n        assignMedium: function (cb) {\n            assigned = true;\n            var pendingQueue = [];\n            if (buffer.length) {\n                var cbs = buffer;\n                buffer = [];\n                cbs.forEach(cb);\n                pendingQueue = buffer;\n            }\n            var executeQueue = function () {\n                var cbs = pendingQueue;\n                pendingQueue = [];\n                cbs.forEach(cb);\n            };\n            var cycle = function () { return Promise.resolve().then(executeQueue); };\n            cycle();\n            buffer = {\n                push: function (x) {\n                    pendingQueue.push(x);\n                    cycle();\n                },\n                filter: function (filter) {\n                    pendingQueue = pendingQueue.filter(filter);\n                    return buffer;\n                },\n            };\n        },\n    };\n    return medium;\n}\nexport function createMedium(defaults, middleware) {\n    if (middleware === void 0) { middleware = ItoI; }\n    return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n    if (options === void 0) { options = {}; }\n    var medium = innerCreateMedium(null);\n    medium.options = __assign({ async: true, ssr: false }, options);\n    return medium;\n}\n","import { createMedium, createSidecarMedium } from 'use-sidecar';\nexport var mediumFocus = createMedium({}, function (_ref) {\n  var target = _ref.target,\n      currentTarget = _ref.currentTarget;\n  return {\n    target: target,\n    currentTarget: currentTarget\n  };\n});\nexport var mediumBlur = createMedium();\nexport var mediumEffect = createMedium();\nexport var mediumSidecar = createSidecarMedium({\n  async: true\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { node, bool, string, any, arrayOf, oneOfType, object, func } from 'prop-types';\nimport * as constants from 'focus-lock/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { useEffect } from 'react';\nimport { hiddenGuard } from './FocusGuard';\nimport { mediumFocus, mediumBlur, mediumSidecar } from './medium';\nvar emptyArray = [];\nvar FocusLock = /*#__PURE__*/React.forwardRef(function FocusLockUI(props, parentRef) {\n  var _extends2;\n\n  var _React$useState = React.useState(),\n      realObserved = _React$useState[0],\n      setObserved = _React$useState[1];\n\n  var observed = React.useRef();\n  var isActive = React.useRef(false);\n  var originalFocusedElement = React.useRef(null);\n  var children = props.children,\n      disabled = props.disabled,\n      noFocusGuards = props.noFocusGuards,\n      persistentFocus = props.persistentFocus,\n      crossFrame = props.crossFrame,\n      autoFocus = props.autoFocus,\n      allowTextSelection = props.allowTextSelection,\n      group = props.group,\n      className = props.className,\n      whiteList = props.whiteList,\n      hasPositiveIndices = props.hasPositiveIndices,\n      _props$shards = props.shards,\n      shards = _props$shards === void 0 ? emptyArray : _props$shards,\n      _props$as = props.as,\n      Container = _props$as === void 0 ? 'div' : _props$as,\n      _props$lockProps = props.lockProps,\n      containerProps = _props$lockProps === void 0 ? {} : _props$lockProps,\n      SideCar = props.sideCar,\n      shouldReturnFocus = props.returnFocus,\n      focusOptions = props.focusOptions,\n      onActivationCallback = props.onActivation,\n      onDeactivationCallback = props.onDeactivation;\n\n  var _React$useState2 = React.useState({}),\n      id = _React$useState2[0]; // SIDE EFFECT CALLBACKS\n\n\n  var onActivation = React.useCallback(function () {\n    originalFocusedElement.current = originalFocusedElement.current || document && document.activeElement;\n\n    if (observed.current && onActivationCallback) {\n      onActivationCallback(observed.current);\n    }\n\n    isActive.current = true;\n  }, [onActivationCallback]);\n  var onDeactivation = React.useCallback(function () {\n    isActive.current = false;\n\n    if (onDeactivationCallback) {\n      onDeactivationCallback(observed.current);\n    }\n  }, [onDeactivationCallback]);\n  useEffect(function () {\n    if (!disabled) {\n      // cleanup return focus on trap deactivation\n      // sideEffect/returnFocus should happen by this time\n      originalFocusedElement.current = null;\n    }\n  }, []);\n  var returnFocus = React.useCallback(function (allowDefer) {\n    var returnFocusTo = originalFocusedElement.current;\n\n    if (returnFocusTo && returnFocusTo.focus) {\n      var howToReturnFocus = typeof shouldReturnFocus === 'function' ? shouldReturnFocus(returnFocusTo) : shouldReturnFocus;\n\n      if (howToReturnFocus) {\n        var returnFocusOptions = typeof howToReturnFocus === 'object' ? howToReturnFocus : undefined;\n        originalFocusedElement.current = null;\n\n        if (allowDefer) {\n          // React might return focus after update\n          // it's safer to defer the action\n          Promise.resolve().then(function () {\n            return returnFocusTo.focus(returnFocusOptions);\n          });\n        } else {\n          returnFocusTo.focus(returnFocusOptions);\n        }\n      }\n    }\n  }, [shouldReturnFocus]); // MEDIUM CALLBACKS\n\n  var onFocus = React.useCallback(function (event) {\n    if (isActive.current) {\n      mediumFocus.useMedium(event);\n    }\n  }, []);\n  var onBlur = mediumBlur.useMedium; // REF PROPAGATION\n  // not using real refs due to race conditions\n\n  var setObserveNode = React.useCallback(function (newObserved) {\n    if (observed.current !== newObserved) {\n      observed.current = newObserved;\n      setObserved(newObserved);\n    }\n  }, []);\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof allowTextSelection !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn('React-Focus-Lock: allowTextSelection is deprecated and enabled by default');\n    }\n\n    React.useEffect(function () {\n      if (!observed.current) {\n        // eslint-disable-next-line no-console\n        console.error('FocusLock: could not obtain ref to internal node');\n      }\n    }, []);\n  }\n\n  var lockProps = _extends((_extends2 = {}, _extends2[constants.FOCUS_DISABLED] = disabled && 'disabled', _extends2[constants.FOCUS_GROUP] = group, _extends2), containerProps);\n\n  var hasLeadingGuards = noFocusGuards !== true;\n  var hasTailingGuards = hasLeadingGuards && noFocusGuards !== 'tail';\n  var mergedRef = useMergeRefs([parentRef, setObserveNode]);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, hasLeadingGuards && [\n  /*#__PURE__*/\n  // nearest focus guard\n  React.createElement(\"div\", {\n    key: \"guard-first\",\n    \"data-focus-guard\": true,\n    tabIndex: disabled ? -1 : 0,\n    style: hiddenGuard\n  }), // first tabbed element guard\n  hasPositiveIndices ? /*#__PURE__*/React.createElement(\"div\", {\n    key: \"guard-nearest\",\n    \"data-focus-guard\": true,\n    tabIndex: disabled ? -1 : 1,\n    style: hiddenGuard\n  }) : null], !disabled && /*#__PURE__*/React.createElement(SideCar, {\n    id: id,\n    sideCar: mediumSidecar,\n    observed: realObserved,\n    disabled: disabled,\n    persistentFocus: persistentFocus,\n    crossFrame: crossFrame,\n    autoFocus: autoFocus,\n    whiteList: whiteList,\n    shards: shards,\n    onActivation: onActivation,\n    onDeactivation: onDeactivation,\n    returnFocus: returnFocus,\n    focusOptions: focusOptions\n  }), /*#__PURE__*/React.createElement(Container, _extends({\n    ref: mergedRef\n  }, lockProps, {\n    className: className,\n    onBlur: onBlur,\n    onFocus: onFocus\n  }), children), hasTailingGuards && /*#__PURE__*/React.createElement(\"div\", {\n    \"data-focus-guard\": true,\n    tabIndex: disabled ? -1 : 0,\n    style: hiddenGuard\n  }));\n});\nFocusLock.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  children: node,\n  disabled: bool,\n  returnFocus: oneOfType([bool, object, func]),\n  focusOptions: object,\n  noFocusGuards: bool,\n  hasPositiveIndices: bool,\n  allowTextSelection: bool,\n  autoFocus: bool,\n  persistentFocus: bool,\n  crossFrame: bool,\n  group: string,\n  className: string,\n  whiteList: func,\n  shards: arrayOf(any),\n  as: oneOfType([string, func, object]),\n  lockProps: object,\n  onActivation: func,\n  onDeactivation: func,\n  sideCar: any.isRequired\n} : {};\nFocusLock.defaultProps = {\n  children: undefined,\n  disabled: false,\n  returnFocus: false,\n  focusOptions: undefined,\n  noFocusGuards: false,\n  autoFocus: true,\n  persistentFocus: false,\n  crossFrame: true,\n  hasPositiveIndices: undefined,\n  allowTextSelection: undefined,\n  group: undefined,\n  className: undefined,\n  whiteList: undefined,\n  shards: undefined,\n  as: 'div',\n  lockProps: {},\n  onActivation: undefined,\n  onDeactivation: undefined\n};\nexport default FocusLock;","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { PureComponent } from 'react';\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient) {\n  if (process.env.NODE_ENV !== \"production\") {\n    if (typeof reducePropsToState !== 'function') {\n      throw new Error('Expected reducePropsToState to be a function.');\n    }\n\n    if (typeof handleStateChangeOnClient !== 'function') {\n      throw new Error('Expected handleStateChangeOnClient to be a function.');\n    }\n  }\n\n  function getDisplayName(WrappedComponent) {\n    return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n  }\n\n  return function wrap(WrappedComponent) {\n    if (process.env.NODE_ENV !== \"production\") {\n      if (typeof WrappedComponent !== 'function') {\n        throw new Error('Expected WrappedComponent to be a React component.');\n      }\n    }\n\n    var mountedInstances = [];\n    var state;\n\n    function emitChange() {\n      state = reducePropsToState(mountedInstances.map(function (instance) {\n        return instance.props;\n      }));\n      handleStateChangeOnClient(state);\n    }\n\n    var SideEffect = /*#__PURE__*/function (_PureComponent) {\n      _inheritsLoose(SideEffect, _PureComponent);\n\n      function SideEffect() {\n        return _PureComponent.apply(this, arguments) || this;\n      }\n\n      // Try to use displayName of wrapped component\n      SideEffect.peek = function peek() {\n        return state;\n      };\n\n      var _proto = SideEffect.prototype;\n\n      _proto.componentDidMount = function componentDidMount() {\n        mountedInstances.push(this);\n        emitChange();\n      };\n\n      _proto.componentDidUpdate = function componentDidUpdate() {\n        emitChange();\n      };\n\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        var index = mountedInstances.indexOf(this);\n        mountedInstances.splice(index, 1);\n        emitChange();\n      };\n\n      _proto.render = function render() {\n        return /*#__PURE__*/React.createElement(WrappedComponent, this.props);\n      };\n\n      return SideEffect;\n    }(PureComponent);\n\n    _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n    return SideEffect;\n  };\n}\n\nexport default withSideEffect;\n","export var toArray = function (a) {\n    var ret = Array(a.length);\n    for (var i = 0; i < a.length; ++i) {\n        ret[i] = a[i];\n    }\n    return ret;\n};\nexport var asArray = function (a) { return (Array.isArray(a) ? a : [a]); };\n","export var getActiveElement = function () {\n    return (document.activeElement\n        ? document.activeElement.shadowRoot\n            ? document.activeElement.shadowRoot.activeElement\n            : document.activeElement\n        : undefined);\n};\n","import { FOCUS_DISABLED, FOCUS_GROUP } from '../constants';\nimport { asArray, toArray } from './array';\nvar filterNested = function (nodes) {\n    var contained = new Set();\n    var l = nodes.length;\n    for (var i = 0; i < l; i += 1) {\n        for (var j = i + 1; j < l; j += 1) {\n            var position = nodes[i].compareDocumentPosition(nodes[j]);\n            if ((position & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {\n                contained.add(j);\n            }\n            if ((position & Node.DOCUMENT_POSITION_CONTAINS) > 0) {\n                contained.add(i);\n            }\n        }\n    }\n    return nodes.filter(function (_, index) { return !contained.has(index); });\n};\nvar getTopParent = function (node) {\n    return node.parentNode ? getTopParent(node.parentNode) : node;\n};\nexport var getAllAffectedNodes = function (node) {\n    var nodes = asArray(node);\n    return nodes.filter(Boolean).reduce(function (acc, currentNode) {\n        var group = currentNode.getAttribute(FOCUS_GROUP);\n        acc.push.apply(acc, (group\n            ? filterNested(toArray(getTopParent(currentNode).querySelectorAll(\"[\".concat(FOCUS_GROUP, \"=\\\"\").concat(group, \"\\\"]:not([\").concat(FOCUS_DISABLED, \"=\\\"disabled\\\"])\"))))\n            : [currentNode]));\n        return acc;\n    }, []);\n};\n","import { getAllAffectedNodes } from './utils/all-affected';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\nvar focusInFrame = function (frame) { return frame === document.activeElement; };\nvar focusInsideIframe = function (topNode) {\n    return Boolean(toArray(topNode.querySelectorAll('iframe')).some(function (node) { return focusInFrame(node); }));\n};\nexport var focusInside = function (topNode) {\n    var activeElement = document && getActiveElement();\n    if (!activeElement || (activeElement.dataset && activeElement.dataset.focusGuard)) {\n        return false;\n    }\n    return getAllAffectedNodes(topNode).reduce(function (result, node) { return result || node.contains(activeElement) || focusInsideIframe(node); }, false);\n};\n","var isElementHidden = function (node) {\n    if (node.nodeType !== Node.ELEMENT_NODE) {\n        return false;\n    }\n    var computedStyle = window.getComputedStyle(node, null);\n    if (!computedStyle || !computedStyle.getPropertyValue) {\n        return false;\n    }\n    return (computedStyle.getPropertyValue('display') === 'none' || computedStyle.getPropertyValue('visibility') === 'hidden');\n};\nvar isVisibleUncached = function (node, checkParent) {\n    return !node ||\n        node === document ||\n        (node && node.nodeType === Node.DOCUMENT_NODE) ||\n        (!isElementHidden(node) &&\n            checkParent(node.parentNode && node.parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE\n                ?\n                    node.parentNode.host\n                : node.parentNode));\n};\nexport var isVisibleCached = function (visibilityCache, node) {\n    var cached = visibilityCache.get(node);\n    if (cached !== undefined) {\n        return cached;\n    }\n    var result = isVisibleUncached(node, isVisibleCached.bind(undefined, visibilityCache));\n    visibilityCache.set(node, result);\n    return result;\n};\nexport var getDataset = function (node) {\n    return node.dataset;\n};\nexport var isHTMLButtonElement = function (node) { return node.tagName === 'BUTTON'; };\nexport var isHTMLInputElement = function (node) { return node.tagName === 'INPUT'; };\nexport var isRadioElement = function (node) {\n    return isHTMLInputElement(node) && node.type === 'radio';\n};\nexport var notHiddenInput = function (node) {\n    return !((isHTMLInputElement(node) || isHTMLButtonElement(node)) && (node.type === 'hidden' || node.disabled)) &&\n        !node.ariaDisabled;\n};\nexport var isGuard = function (node) { var _a; return Boolean(node && ((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.focusGuard)); };\nexport var isNotAGuard = function (node) { return !isGuard(node); };\nexport var isDefined = function (x) { return Boolean(x); };\n","import { isRadioElement } from './is';\nvar findSelectedRadio = function (node, nodes) {\n    return nodes\n        .filter(isRadioElement)\n        .filter(function (el) { return el.name === node.name; })\n        .filter(function (el) { return el.checked; })[0] || node;\n};\nexport var correctNode = function (node, nodes) {\n    if (isRadioElement(node) && node.name) {\n        return findSelectedRadio(node, nodes);\n    }\n    return node;\n};\nexport var correctNodes = function (nodes) {\n    var resultSet = new Set();\n    nodes.forEach(function (node) { return resultSet.add(correctNode(node, nodes)); });\n    return nodes.filter(function (node) { return resultSet.has(node); });\n};\n","import { correctNode } from './correctFocus';\nexport var pickFirstFocus = function (nodes) {\n    if (nodes[0] && nodes.length > 1) {\n        return correctNode(nodes[0], nodes);\n    }\n    return nodes[0];\n};\nexport var pickFocusable = function (nodes, index) {\n    if (nodes.length > 1) {\n        return nodes.indexOf(correctNode(nodes[index], nodes));\n    }\n    return index;\n};\n","import { correctNodes } from './utils/correctFocus';\nimport { pickFocusable } from './utils/firstFocus';\nimport { isGuard } from './utils/is';\nexport var NEW_FOCUS = 'NEW_FOCUS';\nexport var newFocus = function (innerNodes, outerNodes, activeElement, lastNode) {\n    var cnt = innerNodes.length;\n    var firstFocus = innerNodes[0];\n    var lastFocus = innerNodes[cnt - 1];\n    var isOnGuard = isGuard(activeElement);\n    if (activeElement && innerNodes.indexOf(activeElement) >= 0) {\n        return undefined;\n    }\n    var activeIndex = activeElement !== undefined ? outerNodes.indexOf(activeElement) : -1;\n    var lastIndex = lastNode ? outerNodes.indexOf(lastNode) : activeIndex;\n    var lastNodeInside = lastNode ? innerNodes.indexOf(lastNode) : -1;\n    var indexDiff = activeIndex - lastIndex;\n    var firstNodeIndex = outerNodes.indexOf(firstFocus);\n    var lastNodeIndex = outerNodes.indexOf(lastFocus);\n    var correctedNodes = correctNodes(outerNodes);\n    var correctedIndex = activeElement !== undefined ? correctedNodes.indexOf(activeElement) : -1;\n    var correctedIndexDiff = correctedIndex - (lastNode ? correctedNodes.indexOf(lastNode) : activeIndex);\n    var returnFirstNode = pickFocusable(innerNodes, 0);\n    var returnLastNode = pickFocusable(innerNodes, cnt - 1);\n    if (activeIndex === -1 || lastNodeInside === -1) {\n        return NEW_FOCUS;\n    }\n    if (!indexDiff && lastNodeInside >= 0) {\n        return lastNodeInside;\n    }\n    if (activeIndex <= firstNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n        return returnLastNode;\n    }\n    if (activeIndex >= lastNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n        return returnFirstNode;\n    }\n    if (indexDiff && Math.abs(correctedIndexDiff) > 1) {\n        return lastNodeInside;\n    }\n    if (activeIndex <= firstNodeIndex) {\n        return returnLastNode;\n    }\n    if (activeIndex > lastNodeIndex) {\n        return returnFirstNode;\n    }\n    if (indexDiff) {\n        if (Math.abs(indexDiff) > 1) {\n            return lastNodeInside;\n        }\n        return (cnt + lastNodeInside + indexDiff) % cnt;\n    }\n    return undefined;\n};\n","import { toArray } from './array';\nexport var tabSort = function (a, b) {\n    var tabDiff = a.tabIndex - b.tabIndex;\n    var indexDiff = a.index - b.index;\n    if (tabDiff) {\n        if (!a.tabIndex) {\n            return 1;\n        }\n        if (!b.tabIndex) {\n            return -1;\n        }\n    }\n    return tabDiff || indexDiff;\n};\nexport var orderByTabIndex = function (nodes, filterNegative, keepGuards) {\n    return toArray(nodes)\n        .map(function (node, index) { return ({\n        node: node,\n        index: index,\n        tabIndex: keepGuards && node.tabIndex === -1 ? ((node.dataset || {}).focusGuard ? 0 : -1) : node.tabIndex,\n    }); })\n        .filter(function (data) { return !filterNegative || data.tabIndex >= 0; })\n        .sort(tabSort);\n};\n","import { FOCUS_AUTO } from '../constants';\nimport { toArray } from './array';\nimport { tabbables } from './tabbables';\nvar queryTabbables = tabbables.join(',');\nvar queryGuardTabbables = \"\".concat(queryTabbables, \", [data-focus-guard]\");\nexport var getFocusables = function (parents, withGuards) {\n    return parents.reduce(function (acc, parent) {\n        return acc.concat(toArray(parent.querySelectorAll(withGuards ? queryGuardTabbables : queryTabbables)), parent.parentNode\n            ? toArray(parent.parentNode.querySelectorAll(queryTabbables)).filter(function (node) { return node === parent; })\n            : []);\n    }, []);\n};\nexport var getParentAutofocusables = function (parent) {\n    var parentFocus = parent.querySelectorAll(\"[\".concat(FOCUS_AUTO, \"]\"));\n    return toArray(parentFocus)\n        .map(function (node) { return getFocusables([node]); })\n        .reduce(function (acc, nodes) { return acc.concat(nodes); }, []);\n};\n","export var tabbables = [\n    'button:enabled',\n    'select:enabled',\n    'textarea:enabled',\n    'input:enabled',\n    'a[href]',\n    'area[href]',\n    'summary',\n    'iframe',\n    'object',\n    'embed',\n    'audio[controls]',\n    'video[controls]',\n    '[tabindex]',\n    '[contenteditable]',\n    '[autofocus]',\n];\n","import { toArray } from './array';\nimport { isVisibleCached, notHiddenInput } from './is';\nimport { orderByTabIndex } from './tabOrder';\nimport { getFocusables, getParentAutofocusables } from './tabUtils';\nexport var filterFocusable = function (nodes, visibilityCache) {\n    return toArray(nodes)\n        .filter(function (node) { return isVisibleCached(visibilityCache, node); })\n        .filter(function (node) { return notHiddenInput(node); });\n};\nexport var getTabbableNodes = function (topNodes, visibilityCache, withGuards) {\n    return orderByTabIndex(filterFocusable(getFocusables(topNodes, withGuards), visibilityCache), true, withGuards);\n};\nexport var getAllTabbableNodes = function (topNodes, visibilityCache) {\n    return orderByTabIndex(filterFocusable(getFocusables(topNodes), visibilityCache), false);\n};\nexport var parentAutofocusables = function (topNode, visibilityCache) {\n    return filterFocusable(getParentAutofocusables(topNode), visibilityCache);\n};\n","import { parentAutofocusables } from './DOMutils';\nimport { asArray } from './array';\nvar getParents = function (node, parents) {\n    if (parents === void 0) { parents = []; }\n    parents.push(node);\n    if (node.parentNode) {\n        getParents(node.parentNode, parents);\n    }\n    return parents;\n};\nexport var getCommonParent = function (nodeA, nodeB) {\n    var parentsA = getParents(nodeA);\n    var parentsB = getParents(nodeB);\n    for (var i = 0; i < parentsA.length; i += 1) {\n        var currentParent = parentsA[i];\n        if (parentsB.indexOf(currentParent) >= 0) {\n            return currentParent;\n        }\n    }\n    return false;\n};\nexport var getTopCommonParent = function (baseActiveElement, leftEntry, rightEntries) {\n    var activeElements = asArray(baseActiveElement);\n    var leftEntries = asArray(leftEntry);\n    var activeElement = activeElements[0];\n    var topCommon = false;\n    leftEntries.filter(Boolean).forEach(function (entry) {\n        topCommon = getCommonParent(topCommon || entry, entry) || topCommon;\n        rightEntries.filter(Boolean).forEach(function (subEntry) {\n            var common = getCommonParent(activeElement, subEntry);\n            if (common) {\n                if (!topCommon || common.contains(topCommon)) {\n                    topCommon = common;\n                }\n                else {\n                    topCommon = getCommonParent(common, topCommon);\n                }\n            }\n        });\n    });\n    return topCommon;\n};\nexport var allParentAutofocusables = function (entries, visibilityCache) {\n    return entries.reduce(function (acc, node) { return acc.concat(parentAutofocusables(node, visibilityCache)); }, []);\n};\n","import { NEW_FOCUS, newFocus } from './solver';\nimport { getAllTabbableNodes, getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { pickFirstFocus } from './utils/firstFocus';\nimport { getActiveElement } from './utils/getActiveElement';\nimport { getDataset, isDefined, isNotAGuard } from './utils/is';\nimport { allParentAutofocusables, getTopCommonParent } from './utils/parenting';\nvar findAutoFocused = function (autoFocusables) {\n    return function (node) { var _a; return node.autofocus || !!((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.autofocus) || autoFocusables.indexOf(node) >= 0; };\n};\nvar reorderNodes = function (srcNodes, dstNodes) {\n    var remap = new Map();\n    dstNodes.forEach(function (entity) { return remap.set(entity.node, entity); });\n    return srcNodes.map(function (node) { return remap.get(node); }).filter(isDefined);\n};\nexport var getFocusMerge = function (topNode, lastNode) {\n    var activeElement = document && getActiveElement();\n    var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n    var commonParent = getTopCommonParent(activeElement || topNode, topNode, entries);\n    var visibilityCache = new Map();\n    var anyFocusable = getAllTabbableNodes(entries, visibilityCache);\n    var innerElements = getTabbableNodes(entries, visibilityCache).filter(function (_a) {\n        var node = _a.node;\n        return isNotAGuard(node);\n    });\n    if (!innerElements[0]) {\n        innerElements = anyFocusable;\n        if (!innerElements[0]) {\n            return undefined;\n        }\n    }\n    var outerNodes = getAllTabbableNodes([commonParent], visibilityCache).map(function (_a) {\n        var node = _a.node;\n        return node;\n    });\n    var orderedInnerElements = reorderNodes(outerNodes, innerElements);\n    var innerNodes = orderedInnerElements.map(function (_a) {\n        var node = _a.node;\n        return node;\n    });\n    var newId = newFocus(innerNodes, outerNodes, activeElement, lastNode);\n    if (newId === NEW_FOCUS) {\n        var autoFocusable = anyFocusable\n            .map(function (_a) {\n            var node = _a.node;\n            return node;\n        })\n            .filter(findAutoFocused(allParentAutofocusables(entries, visibilityCache)));\n        return {\n            node: autoFocusable && autoFocusable.length ? pickFirstFocus(autoFocusable) : pickFirstFocus(innerNodes),\n        };\n    }\n    if (newId === undefined) {\n        return newId;\n    }\n    return orderedInnerElements[newId];\n};\n","import { getFocusMerge } from './focusMerge';\nexport var focusOn = function (target, focusOptions) {\n    if ('focus' in target) {\n        target.focus(focusOptions);\n    }\n    if ('contentWindow' in target && target.contentWindow) {\n        target.contentWindow.focus();\n    }\n};\nvar guardCount = 0;\nvar lockDisabled = false;\nexport var setFocus = function (topNode, lastNode, options) {\n    if (options === void 0) { options = {}; }\n    var focusable = getFocusMerge(topNode, lastNode);\n    if (lockDisabled) {\n        return;\n    }\n    if (focusable) {\n        if (guardCount > 2) {\n            console.error('FocusLock: focus-fighting detected. Only one focus management system could be active. ' +\n                'See https://github.com/theKashey/focus-lock/#focus-fighting');\n            lockDisabled = true;\n            setTimeout(function () {\n                lockDisabled = false;\n            }, 1);\n            return;\n        }\n        guardCount++;\n        focusOn(focusable.node, options.focusOptions);\n        guardCount--;\n    }\n};\n","import * as constants from './constants';\nimport { focusInside } from './focusInside';\nimport { focusIsHidden } from './focusIsHidden';\nimport { getFocusMerge as focusMerge } from './focusMerge';\nimport { getFocusabledIn } from './focusables';\nimport { setFocus } from './setFocus';\nimport { focusNextElement, focusPrevElement } from './sibling';\nimport tabHook from './tabHook';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { getActiveElement } from './utils/getActiveElement';\nexport { tabHook, focusInside, focusIsHidden, focusMerge, getFocusabledIn, constants, getAllAffectedNodes, focusNextElement, focusPrevElement, getActiveElement, };\nexport default setFocus;\n","export function deferAction(action) {\n  // Hidding setImmediate from Webpack to avoid inserting polyfill\n  var _window = window,\n      setImmediate = _window.setImmediate;\n\n  if (typeof setImmediate !== 'undefined') {\n    setImmediate(action);\n  } else {\n    setTimeout(action, 1);\n  }\n}\nexport var inlineProp = function inlineProp(name, value) {\n  var obj = {};\n  obj[name] = value;\n  return obj;\n};","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport withSideEffect from 'react-clientside-effect';\nimport moveFocusInside, { focusInside, focusIsHidden, getFocusabledIn } from 'focus-lock';\nimport { deferAction } from './util';\nimport { mediumFocus, mediumBlur, mediumEffect } from './medium';\n\nvar focusOnBody = function focusOnBody() {\n  return document && document.activeElement === document.body;\n};\n\nvar isFreeFocus = function isFreeFocus() {\n  return focusOnBody() || focusIsHidden();\n};\n\nvar lastActiveTrap = null;\nvar lastActiveFocus = null;\nvar lastPortaledElement = null;\nvar focusWasOutsideWindow = false;\n\nvar defaultWhitelist = function defaultWhitelist() {\n  return true;\n};\n\nvar focusWhitelisted = function focusWhitelisted(activeElement) {\n  return (lastActiveTrap.whiteList || defaultWhitelist)(activeElement);\n};\n\nvar recordPortal = function recordPortal(observerNode, portaledElement) {\n  lastPortaledElement = {\n    observerNode: observerNode,\n    portaledElement: portaledElement\n  };\n};\n\nvar focusIsPortaledPair = function focusIsPortaledPair(element) {\n  return lastPortaledElement && lastPortaledElement.portaledElement === element;\n};\n\nfunction autoGuard(startIndex, end, step, allNodes) {\n  var lastGuard = null;\n  var i = startIndex;\n\n  do {\n    var item = allNodes[i];\n\n    if (item.guard) {\n      if (item.node.dataset.focusAutoGuard) {\n        lastGuard = item;\n      }\n    } else if (item.lockItem) {\n      if (i !== startIndex) {\n        // we will tab to the next element\n        return;\n      }\n\n      lastGuard = null;\n    } else {\n      break;\n    }\n  } while ((i += step) !== end);\n\n  if (lastGuard) {\n    lastGuard.node.tabIndex = 0;\n  }\n}\n\nvar extractRef = function extractRef(ref) {\n  return ref && 'current' in ref ? ref.current : ref;\n};\n\nvar focusWasOutside = function focusWasOutside(crossFrameOption) {\n  if (crossFrameOption) {\n    // with cross frame return true for any value\n    return Boolean(focusWasOutsideWindow);\n  } // in other case return only of focus went a while aho\n\n\n  return focusWasOutsideWindow === 'meanwhile';\n};\n\nvar checkInHost = function checkInHost(check, el, boundary) {\n  return el // find host equal to active element and check nested active element\n  && (el.host === check && (!el.activeElement || boundary.contains(el.activeElement)) // dive up\n  || el.parentNode && checkInHost(check, el.parentNode, boundary));\n};\n\nvar withinHost = function withinHost(activeElement, workingArea) {\n  return workingArea.some(function (area) {\n    return checkInHost(activeElement, area, area);\n  });\n};\n\nvar activateTrap = function activateTrap() {\n  var result = false;\n\n  if (lastActiveTrap) {\n    var _lastActiveTrap = lastActiveTrap,\n        observed = _lastActiveTrap.observed,\n        persistentFocus = _lastActiveTrap.persistentFocus,\n        autoFocus = _lastActiveTrap.autoFocus,\n        shards = _lastActiveTrap.shards,\n        crossFrame = _lastActiveTrap.crossFrame,\n        focusOptions = _lastActiveTrap.focusOptions;\n    var workingNode = observed || lastPortaledElement && lastPortaledElement.portaledElement;\n    var activeElement = document && document.activeElement;\n\n    if (workingNode) {\n      var workingArea = [workingNode].concat(shards.map(extractRef).filter(Boolean));\n\n      if (!activeElement || focusWhitelisted(activeElement)) {\n        if (persistentFocus || focusWasOutside(crossFrame) || !isFreeFocus() || !lastActiveFocus && autoFocus) {\n          if (workingNode && !( // active element is \"inside\" working area\n          focusInside(workingArea) || // check for shadow-dom contained elements\n          activeElement && withinHost(activeElement, workingArea) || focusIsPortaledPair(activeElement, workingNode))) {\n            if (document && !lastActiveFocus && activeElement && !autoFocus) {\n              // Check if blur() exists, which is missing on certain elements on IE\n              if (activeElement.blur) {\n                activeElement.blur();\n              }\n\n              document.body.focus();\n            } else {\n              result = moveFocusInside(workingArea, lastActiveFocus, {\n                focusOptions: focusOptions\n              });\n              lastPortaledElement = {};\n            }\n          }\n\n          focusWasOutsideWindow = false;\n          lastActiveFocus = document && document.activeElement;\n        }\n      }\n\n      if (document) {\n        var newActiveElement = document && document.activeElement;\n        var allNodes = getFocusabledIn(workingArea);\n        var focusedIndex = allNodes.map(function (_ref) {\n          var node = _ref.node;\n          return node;\n        }).indexOf(newActiveElement);\n\n        if (focusedIndex > -1) {\n          // remove old focus\n          allNodes.filter(function (_ref2) {\n            var guard = _ref2.guard,\n                node = _ref2.node;\n            return guard && node.dataset.focusAutoGuard;\n          }).forEach(function (_ref3) {\n            var node = _ref3.node;\n            return node.removeAttribute('tabIndex');\n          });\n          autoGuard(focusedIndex, allNodes.length, +1, allNodes);\n          autoGuard(focusedIndex, -1, -1, allNodes);\n        }\n      }\n    }\n  }\n\n  return result;\n};\n\nvar onTrap = function onTrap(event) {\n  if (activateTrap() && event) {\n    // prevent scroll jump\n    event.stopPropagation();\n    event.preventDefault();\n  }\n};\n\nvar onBlur = function onBlur() {\n  return deferAction(activateTrap);\n};\n\nvar onFocus = function onFocus(event) {\n  // detect portal\n  var source = event.target;\n  var currentNode = event.currentTarget;\n\n  if (!currentNode.contains(source)) {\n    recordPortal(currentNode, source);\n  }\n};\n\nvar FocusWatcher = function FocusWatcher() {\n  return null;\n};\n\nvar FocusTrap = function FocusTrap(_ref4) {\n  var children = _ref4.children;\n  return /*#__PURE__*/React.createElement(\"div\", {\n    onBlur: onBlur,\n    onFocus: onFocus\n  }, children);\n};\n\nFocusTrap.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  children: PropTypes.node.isRequired\n} : {};\n\nvar onWindowBlur = function onWindowBlur() {\n  focusWasOutsideWindow = 'just'; // using setTimeout to set  this variable after React/sidecar reaction\n\n  setTimeout(function () {\n    focusWasOutsideWindow = 'meanwhile';\n  }, 0);\n};\n\nvar attachHandler = function attachHandler() {\n  document.addEventListener('focusin', onTrap);\n  document.addEventListener('focusout', onBlur);\n  window.addEventListener('blur', onWindowBlur);\n};\n\nvar detachHandler = function detachHandler() {\n  document.removeEventListener('focusin', onTrap);\n  document.removeEventListener('focusout', onBlur);\n  window.removeEventListener('blur', onWindowBlur);\n};\n\nfunction reducePropsToState(propsList) {\n  return propsList.filter(function (_ref5) {\n    var disabled = _ref5.disabled;\n    return !disabled;\n  });\n}\n\nfunction handleStateChangeOnClient(traps) {\n  var trap = traps.slice(-1)[0];\n\n  if (trap && !lastActiveTrap) {\n    attachHandler();\n  }\n\n  var lastTrap = lastActiveTrap;\n  var sameTrap = lastTrap && trap && trap.id === lastTrap.id;\n  lastActiveTrap = trap;\n\n  if (lastTrap && !sameTrap) {\n    lastTrap.onDeactivation(); // return focus only of last trap was removed\n\n    if (!traps.filter(function (_ref6) {\n      var id = _ref6.id;\n      return id === lastTrap.id;\n    }).length) {\n      // allow defer is no other trap is awaiting restore\n      lastTrap.returnFocus(!trap);\n    }\n  }\n\n  if (trap) {\n    lastActiveFocus = null;\n\n    if (!sameTrap || lastTrap.observed !== trap.observed) {\n      trap.onActivation();\n    }\n\n    activateTrap(true);\n    deferAction(activateTrap);\n  } else {\n    detachHandler();\n    lastActiveFocus = null;\n  }\n} // bind medium\n\n\nmediumFocus.assignSyncMedium(onFocus);\nmediumBlur.assignMedium(onBlur);\nmediumEffect.assignMedium(function (cb) {\n  return cb({\n    moveFocusInside: moveFocusInside,\n    focusInside: focusInside\n  });\n});\nexport default withSideEffect(reducePropsToState, handleStateChangeOnClient)(FocusWatcher);","import { FOCUS_ALLOW } from './constants';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\nexport var focusIsHidden = function () {\n    var activeElement = document && getActiveElement();\n    if (!activeElement) {\n        return false;\n    }\n    return toArray(document.querySelectorAll(\"[\".concat(FOCUS_ALLOW, \"]\"))).some(function (node) { return node.contains(activeElement); });\n};\n","import { getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { isGuard, isNotAGuard } from './utils/is';\nimport { getTopCommonParent } from './utils/parenting';\nexport var getFocusabledIn = function (topNode) {\n    var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n    var commonParent = getTopCommonParent(topNode, topNode, entries);\n    var visibilityCache = new Map();\n    var outerNodes = getTabbableNodes([commonParent], visibilityCache, true);\n    var innerElements = getTabbableNodes(entries, visibilityCache)\n        .filter(function (_a) {\n        var node = _a.node;\n        return isNotAGuard(node);\n    })\n        .map(function (_a) {\n        var node = _a.node;\n        return node;\n    });\n    return outerNodes.map(function (_a) {\n        var node = _a.node, index = _a.index;\n        return ({\n            node: node,\n            index: index,\n            lockItem: innerElements.indexOf(node) >= 0,\n            guard: isGuard(node),\n        });\n    });\n};\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport FocusLockUI from './Lock';\nimport FocusTrap from './Trap';\n/* that would be a BREAKING CHANGE!\n// delaying sidecar execution till the first usage\nconst RequireSideCar = (props) => {\n  // eslint-disable-next-line global-require\n  const SideCar = require('./Trap').default;\n  return <SideCar {...props} />;\n};\n*/\n\nvar FocusLockCombination = /*#__PURE__*/React.forwardRef(function FocusLockUICombination(props, ref) {\n  return /*#__PURE__*/React.createElement(FocusLockUI, _extends({\n    sideCar: FocusTrap,\n    ref: ref\n  }, props));\n});\n\nvar _ref = FocusLockUI.propTypes || {},\n    sideCar = _ref.sideCar,\n    propTypes = _objectWithoutPropertiesLoose(_ref, [\"sideCar\"]);\n\nFocusLockCombination.propTypes = process.env.NODE_ENV !== \"production\" ? propTypes : {};\nexport default FocusLockCombination;","import FocusLock from './Combination';\nexport * from './UI';\nexport default FocusLock;","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport InternalButton from '../../../button/internal';\nimport styles from '../../styles.css.js';\nexport interface HeaderProps {\n  dismissIconAriaLabel?: string;\n  backIconAriaLabel?: string;\n  secondaryText?: string;\n  onClose?: () => void;\n  onBack?: () => void;\n  children: React.ReactNode;\n}\n\nconst Header: React.FC<HeaderProps> = ({\n  children,\n  secondaryText,\n  backIconAriaLabel,\n  dismissIconAriaLabel,\n  onBack,\n  onClose,\n}) => {\n  return (\n    <div className={styles['overflow-menu-header']}>\n      {onBack && (\n        <InternalButton\n          // Used for test-utils, which require the selectable element to have a classname.\n          // eslint-disable-next-line react/forbid-component-props\n          className={styles['overflow-menu-back-button']}\n          ariaLabel={backIconAriaLabel}\n          iconName=\"angle-left\"\n          variant=\"icon\"\n          onClick={() => onBack()}\n        />\n      )}\n      <h2 className={styles['overflow-menu-header-text']}>\n        <div className={styles['overflow-menu-header-text--title']}>{children}</div>\n        {secondaryText && <div className={styles['overflow-menu-header-text--secondary']}>{secondaryText}</div>}\n      </h2>\n      <InternalButton\n        // eslint-disable-next-line react/forbid-component-props\n        className={styles['overflow-menu-dismiss-button']}\n        ariaLabel={dismissIconAriaLabel}\n        iconName=\"close\"\n        variant=\"icon\"\n        onClick={() => onClose && onClose()}\n      />\n    </div>\n  );\n};\n\nexport default Header;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { forwardRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { fireCancelableEvent, isPlainLeftClick } from '../../../internal/events';\nimport { useUniqueId } from '../../../internal/hooks/use-unique-id';\n\nimport { LinkProps } from '../../../link/interfaces';\nimport { ButtonDropdownProps } from '../../../button-dropdown/interfaces';\nimport InternalIcon from '../../../icon/internal';\n\nimport { useNavigate } from './router';\nimport { TopNavigationProps } from '../../interfaces';\nimport styles from '../../styles.css.js';\n\ninterface ListItemProps {\n  startIcon?: React.ReactNode;\n  endIcon?: React.ReactNode;\n  context?: 'dropdown-menu';\n  children?: React.ReactNode;\n  testId?: string;\n}\n\nconst ListItem = ({ children, startIcon, endIcon }: ListItemProps) => {\n  return (\n    <>\n      {startIcon && <span className={styles['overflow-menu-list-item-icon']}>{startIcon}</span>}\n      <span className={styles['overflow-menu-list-item-text']}>{children}</span>\n      {endIcon && endIcon}\n    </>\n  );\n};\n\ninterface LinkItemProps extends ButtonItemProps, Pick<LinkProps, 'href' | 'external' | 'target' | 'rel'> {}\n\nconst LinkItem = forwardRef(\n  (\n    { children, external, href, target, rel, startIcon, endIcon, onClick, context, testId }: LinkItemProps,\n    ref: React.Ref<HTMLAnchorElement & HTMLButtonElement>\n  ) => {\n    const anchorTarget = target ?? (external ? '_blank' : undefined);\n    const anchorRel = rel ?? (anchorTarget === '_blank' ? 'noopener noreferrer' : undefined);\n\n    return (\n      <a\n        ref={ref}\n        onClick={onClick}\n        className={clsx(\n          styles['overflow-menu-control'],\n          styles['overflow-menu-control-link'],\n          context && styles[`overflow-menu-control-${context}`]\n        )}\n        href={href}\n        target={anchorTarget}\n        rel={anchorRel}\n        {...(testId ? { 'data-testid': testId } : {})}\n      >\n        <ListItem startIcon={startIcon} endIcon={endIcon}>\n          {children}\n        </ListItem>\n      </a>\n    );\n  }\n);\n\ninterface ButtonItemProps extends ListItemProps {\n  onClick?: (event: React.MouseEvent) => void;\n}\n\nconst ButtonItem = forwardRef(\n  (\n    { children, startIcon, endIcon, onClick, testId }: ButtonItemProps & { testId?: string },\n    ref: React.Ref<HTMLButtonElement>\n  ) => {\n    return (\n      <button\n        ref={ref}\n        className={styles['overflow-menu-control']}\n        onClick={onClick}\n        {...(typeof testId === 'string' ? { 'data-testid': testId } : {})}\n      >\n        <ListItem startIcon={startIcon} endIcon={endIcon}>\n          {children}\n        </ListItem>\n      </button>\n    );\n  }\n);\n\nconst NavigationItem = forwardRef(\n  (\n    {\n      startIcon,\n      children,\n      index,\n      testId,\n      ...definition\n    }: ButtonItemProps & TopNavigationProps.MenuDropdownUtility & { index: number; testId?: string },\n    ref: React.Ref<HTMLButtonElement>\n  ) => {\n    const navigate = useNavigate();\n    return (\n      <ButtonItem\n        ref={ref}\n        startIcon={startIcon}\n        endIcon={<InternalIcon name=\"angle-right\" />}\n        testId={testId}\n        onClick={() =>\n          navigate('dropdown-menu', {\n            definition,\n            headerText: definition.text || definition.title,\n            headerSecondaryText: definition.description,\n            utilityIndex: index,\n          })\n        }\n      >\n        {children}\n      </ButtonItem>\n    );\n  }\n);\n\nconst ExpandableItem: React.FC<\n  ButtonItemProps &\n    ButtonDropdownProps.ItemGroup & { onItemClick: (event: React.MouseEvent, item: ButtonDropdownProps.Item) => void }\n> = ({ children, onItemClick, ...definition }) => {\n  const [expanded, setExpanded] = useState(false);\n  const headerId = useUniqueId('overflow-menu-item');\n\n  return (\n    <>\n      <button\n        className={clsx(styles['overflow-menu-control'], styles['overflow-menu-control-expandable-menu-trigger'])}\n        onClick={() => setExpanded(value => !value)}\n        aria-expanded={expanded}\n      >\n        <ListItem\n          endIcon={\n            <span className={clsx(styles.icon, expanded && styles.expanded)}>\n              <InternalIcon name=\"caret-up-filled\" />\n            </span>\n          }\n        >\n          <span id={headerId}>{children}</span>\n        </ListItem>\n      </button>\n      {expanded && (\n        <ul\n          className={clsx(styles['overflow-menu-list'], styles['overflow-menu-list-submenu'])}\n          aria-labelledby={headerId}\n        >\n          {definition.items.map((item, index) => {\n            const isGroup = typeof (item as ButtonDropdownProps.ItemGroup).items !== 'undefined';\n\n            return (\n              <li\n                key={index}\n                className={clsx(styles[`overflow-menu-list-item`], styles[`overflow-menu-list-item-dropdown-menu`])}\n              >\n                {dropdownComponentFactory(item, isGroup, onItemClick)}\n              </li>\n            );\n          })}\n        </ul>\n      )}\n    </>\n  );\n};\n\nfunction utilityComponentFactory(\n  utility: TopNavigationProps.Utility & { onClose?: () => void },\n  index: number,\n  ref?: React.Ref<HTMLAnchorElement & HTMLButtonElement>\n) {\n  const label = utility.text || utility.title;\n  const hasIcon = !!utility.iconName || !!utility.iconUrl || !!utility.iconAlt || !!utility.iconSvg;\n  const startIcon = hasIcon && (\n    <InternalIcon name={utility.iconName} url={utility.iconUrl} alt={utility.iconAlt} svg={utility.iconSvg} />\n  );\n\n  switch (utility.type) {\n    case 'button': {\n      const handleClick = (event: React.MouseEvent) => {\n        if (Boolean(utility.href) && isPlainLeftClick(event)) {\n          fireCancelableEvent(utility.onFollow, { href: utility.href, target: utility.target }, event);\n        }\n\n        fireCancelableEvent(utility.onClick, {}, event);\n        utility.onClose?.();\n      };\n\n      const content = (\n        <>\n          {label}\n          {utility.external && (\n            <>\n              {' '}\n              <span aria-label={utility.externalIconAriaLabel} role={utility.externalIconAriaLabel ? 'img' : undefined}>\n                <InternalIcon name=\"external\" size=\"normal\" />\n              </span>\n            </>\n          )}\n        </>\n      );\n\n      if (!utility.href) {\n        return (\n          <ButtonItem ref={ref} startIcon={startIcon} onClick={handleClick} testId={`__${index}`}>\n            {content}\n          </ButtonItem>\n        );\n      }\n\n      return (\n        <LinkItem\n          ref={ref}\n          startIcon={startIcon}\n          href={utility.href}\n          external={utility.external}\n          target={utility.target}\n          rel={utility.rel}\n          testId={`__${index}`}\n          onClick={handleClick}\n        >\n          {content}\n        </LinkItem>\n      );\n    }\n    case 'menu-dropdown': {\n      return (\n        <NavigationItem\n          ref={ref}\n          startIcon={startIcon}\n          index={index}\n          {...(utility as TopNavigationProps.MenuDropdownUtility)}\n          testId={`__${index}`}\n        >\n          {label}\n        </NavigationItem>\n      );\n    }\n  }\n}\n\nfunction dropdownComponentFactory(\n  item: ButtonDropdownProps.ItemOrGroup,\n  expandable: boolean,\n  onItemClick: (event: React.MouseEvent, item: ButtonDropdownProps.Item) => void\n) {\n  const label = item.text;\n  const hasIcon = !!item.iconName || !!item.iconUrl || !!item.iconAlt || !!item.iconSvg;\n  const startIcon = hasIcon && (\n    <InternalIcon name={item.iconName} url={item.iconUrl} alt={item.iconAlt} svg={item.iconSvg} />\n  );\n\n  if (expandable) {\n    return (\n      <ExpandableItem {...(item as ButtonDropdownProps.ItemGroup)} onItemClick={onItemClick}>\n        {label}\n      </ExpandableItem>\n    );\n  }\n\n  return (\n    <LinkItem\n      startIcon={startIcon}\n      href={item.href}\n      external={item.external}\n      context=\"dropdown-menu\"\n      testId={item.id}\n      onClick={event => onItemClick(event, item as ButtonDropdownProps.Item)}\n    >\n      {label}\n      {item.external && (\n        <>\n          {' '}\n          <span aria-label={item.externalIconAriaLabel} role={item.externalIconAriaLabel ? 'img' : undefined}>\n            <InternalIcon name=\"external\" size=\"normal\" />\n          </span>\n        </>\n      )}\n    </LinkItem>\n  );\n}\n\ntype UtilityMenuItemProps = TopNavigationProps.Utility & { index: number; onClose?: () => void };\n\nexport const UtilityMenuItem = forwardRef(\n  ({ index, ...props }: UtilityMenuItemProps, ref: React.Ref<HTMLAnchorElement & HTMLButtonElement>) => {\n    return (\n      <li className={clsx(styles[`overflow-menu-list-item`], styles[`overflow-menu-list-item-utility`])}>\n        {utilityComponentFactory(props, index, ref)}\n      </li>\n    );\n  }\n);\n\ntype SubmenuItemProps = ButtonDropdownProps.ItemOrGroup & {\n  onClick: (event: React.MouseEvent, item: ButtonDropdownProps.Item) => void;\n};\n\nexport const SubmenuItem = (props: SubmenuItemProps) => {\n  const expandable = typeof (props as ButtonDropdownProps.ItemGroup).items !== 'undefined';\n\n  return (\n    <li\n      className={clsx(\n        styles[`overflow-menu-list-item`],\n        styles[`overflow-menu-list-item-submenu`],\n        expandable && styles[`overflow-menu-list-item-expandable`]\n      )}\n    >\n      {dropdownComponentFactory(props, expandable, props.onClick)}\n    </li>\n  );\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef } from 'react';\nimport FocusLock from 'react-focus-lock';\n\nimport Header from '../header';\nimport { UtilityMenuItem } from '../menu-item';\n\nimport { TopNavigationProps } from '../../../interfaces';\n\nimport { View } from '..';\nimport styles from '../../../styles.css.js';\nimport { useUniqueId } from '../../../../internal/hooks/use-unique-id';\n\ninterface UtilitiesViewProps extends View {\n  items: TopNavigationProps['utilities'];\n  focusIndex?: number;\n}\n\nconst UtilitiesView = ({ headerText, dismissIconAriaLabel, onClose, items = [], focusIndex }: UtilitiesViewProps) => {\n  const headerId = useUniqueId('overflow-menu-header');\n  const ref = useRef<HTMLAnchorElement & HTMLButtonElement>(null);\n\n  useEffect(() => {\n    // A focus index is used to set the focus back to the submenu trigger\n    // returning from a submenu.\n    if (typeof focusIndex === 'number') {\n      ref.current?.focus();\n    }\n  }, [focusIndex]);\n\n  return (\n    <FocusLock returnFocus={true}>\n      <Header dismissIconAriaLabel={dismissIconAriaLabel} onClose={onClose}>\n        <span id={headerId}>{headerText}</span>\n      </Header>\n      <ul className={styles['overflow-menu-list']} aria-labelledby={headerId}>\n        {items.map((utility, index) => (\n          <UtilityMenuItem\n            key={index}\n            index={index}\n            ref={index === focusIndex ? ref : undefined}\n            onClose={onClose}\n            {...utility}\n          />\n        ))}\n      </ul>\n    </FocusLock>\n  );\n};\n\nexport default UtilitiesView;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport FocusLock from 'react-focus-lock';\n\nimport { useNavigate } from '../router';\nimport Header from '../header';\nimport { SubmenuItem } from '../menu-item';\nimport { useUniqueId } from '../../../../internal/hooks/use-unique-id';\n\nimport { TopNavigationProps } from '../../../interfaces';\n\nimport { View } from '..';\nimport styles from '../../../styles.css.js';\nimport { fireCancelableEvent, isPlainLeftClick } from '../../../../internal/events';\n\ninterface SubmenuViewProps extends View {\n  definition: TopNavigationProps.MenuDropdownUtility;\n  utilityIndex?: number;\n}\n\nconst SubmenuView = ({\n  onClose,\n  utilityIndex,\n  headerText,\n  headerSecondaryText,\n  dismissIconAriaLabel,\n  backIconAriaLabel,\n  definition,\n}: SubmenuViewProps) => {\n  const navigate = useNavigate();\n  const headerId = useUniqueId('overflow-menu-header');\n\n  return (\n    <FocusLock returnFocus={true}>\n      <Header\n        secondaryText={headerSecondaryText}\n        dismissIconAriaLabel={dismissIconAriaLabel}\n        backIconAriaLabel={backIconAriaLabel}\n        onClose={onClose}\n        onBack={() => navigate('utilities', { utilityIndex })}\n      >\n        <span id={headerId}>{headerText}</span>\n      </Header>\n      <ul\n        className={clsx(styles['overflow-menu-list'], styles['overflow-menu-list-submenu'])}\n        aria-labelledby={headerId}\n      >\n        {(definition as TopNavigationProps.MenuDropdownUtility).items.map((item, index) => (\n          <SubmenuItem\n            key={index}\n            {...item}\n            onClick={(event, item) => {\n              if (item.href && isPlainLeftClick(event)) {\n                fireCancelableEvent(\n                  definition.onItemFollow,\n                  { id: item.id, href: item.href, external: item.external },\n                  event\n                );\n              }\n\n              fireCancelableEvent(\n                definition.onItemClick,\n                { id: item.id, href: item.href, external: item.external },\n                event\n              );\n              onClose?.();\n            }}\n          />\n        ))}\n      </ul>\n    </FocusLock>\n  );\n};\n\nexport default SubmenuView;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport Router, { Route } from './router';\nimport UtilitiesView from './views/utilities';\nimport SubmenuView from './views/submenu';\n\nimport { HeaderProps } from './header';\n\nimport styles from '../../styles.css.js';\nimport { TopNavigationProps } from '../../interfaces';\nimport { useInternalI18n } from '../../../internal/i18n/context';\ninterface OverflowMenuProps {\n  headerText?: string;\n  items?: TopNavigationProps['utilities'];\n  dismissIconAriaLabel?: HeaderProps['dismissIconAriaLabel'];\n  backIconAriaLabel?: HeaderProps['backIconAriaLabel'];\n  onClose?: HeaderProps['onClose'];\n}\n\nexport interface View extends Omit<OverflowMenuProps, 'items'> {\n  headerSecondaryText?: HeaderProps['secondaryText'];\n}\n\nconst OverflowMenu = ({\n  headerText,\n  dismissIconAriaLabel,\n  backIconAriaLabel,\n  items = [],\n  onClose,\n}: OverflowMenuProps) => {\n  const i18n = useInternalI18n('top-navigation');\n  const renderedDismissIconAriaLabel = i18n('i18nStrings.overflowMenuDismissIconAriaLabel', dismissIconAriaLabel);\n  const renderedBackIconAriaLabel = i18n('i18nStrings.overflowMenuBackIconAriaLabel', backIconAriaLabel);\n\n  return (\n    <div\n      className={styles['overflow-menu']}\n      onKeyUp={event => {\n        if (event.key === 'Escape') {\n          onClose?.();\n        }\n      }}\n    >\n      <Router>\n        <Route\n          view=\"utilities\"\n          element={data => (\n            <UtilitiesView\n              headerText={i18n('i18nStrings.overflowMenuTitleText', headerText)}\n              items={items}\n              focusIndex={data?.utilityIndex}\n              dismissIconAriaLabel={renderedDismissIconAriaLabel}\n              backIconAriaLabel={renderedBackIconAriaLabel}\n              onClose={onClose}\n            />\n          )}\n        />\n        <Route\n          view=\"dropdown-menu\"\n          element={data => (\n            <SubmenuView\n              headerText={data?.headerText}\n              headerSecondaryText={data?.headerSecondaryText}\n              dismissIconAriaLabel={renderedDismissIconAriaLabel}\n              backIconAriaLabel={renderedBackIconAriaLabel}\n              definition={data?.definition}\n              utilityIndex={data?.utilityIndex}\n              onClose={onClose}\n            />\n          )}\n        />\n      </Router>\n    </div>\n  );\n};\n\nexport default OverflowMenu;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { getBaseProps } from '../internal/base-component';\nimport { fireCancelableEvent, isPlainLeftClick } from '../internal/events';\nimport VisualContext from '../internal/components/visual-context';\nimport Portal from '../internal/components/portal';\nimport { useEffectOnUpdate } from '../internal/hooks/use-effect-on-update';\n\nimport { TopNavigationProps } from './interfaces';\nimport { useTopNavigation } from './use-top-navigation.js';\nimport Utility from './parts/utility';\nimport OverflowMenu from './parts/overflow-menu';\nimport { ButtonTrigger } from '../internal/components/menu-dropdown';\n\nimport styles from './styles.css.js';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport { SomeRequired } from '../internal/types';\nimport { useInternalI18n } from '../internal/i18n/context';\n\nexport type InternalTopNavigationProps = SomeRequired<TopNavigationProps, 'utilities'> & InternalBaseComponentProps;\n\nexport default function InternalTopNavigation({\n  __internalRootRef,\n  identity,\n  i18nStrings,\n  utilities,\n  search,\n  ...restProps\n}: InternalTopNavigationProps) {\n  checkSafeUrl('TopNavigation', identity.href);\n  const baseProps = getBaseProps(restProps);\n  const { mainRef, virtualRef, breakpoint, responsiveState, isSearchExpanded, onSearchUtilityClick } = useTopNavigation(\n    { identity, search, utilities }\n  );\n  const [overflowMenuOpen, setOverflowMenuOpen] = useState(false);\n  const overflowMenuTriggerRef = useRef<HTMLButtonElement>(null);\n  const isNarrowViewport = breakpoint === 'default';\n  const isMediumViewport = breakpoint === 'xxs';\n  const isLargeViewport = breakpoint === 's';\n  const i18n = useInternalI18n('top-navigation');\n\n  const onIdentityClick = (event: React.MouseEvent) => {\n    if (isPlainLeftClick(event)) {\n      fireCancelableEvent(identity.onFollow, {}, event);\n    }\n  };\n\n  const toggleOverflowMenu = () => {\n    setOverflowMenuOpen(overflowMenuOpen => !overflowMenuOpen);\n  };\n\n  const menuTriggerVisible = !isSearchExpanded && responsiveState.hideUtilities;\n\n  useEffect(() => {\n    setOverflowMenuOpen(false);\n  }, [menuTriggerVisible]);\n\n  useEffectOnUpdate(() => {\n    if (!overflowMenuOpen) {\n      overflowMenuTriggerRef.current?.focus();\n    }\n  }, [overflowMenuOpen]);\n\n  // Render the top nav twice; once as the top nav that users can see, and another\n  // \"virtual\" top nav used just for calculations. The virtual top nav doesn't react to\n  // layout changes and renders two sets of utilities: one with labels and one without.\n  const content = (isVirtual: boolean) => {\n    const Wrapper = isVirtual ? 'div' : 'header';\n    const showIdentity = isVirtual || !isSearchExpanded;\n    const showTitle = isVirtual || !responsiveState.hideTitle;\n    const showSearchSlot = search && (isVirtual || !responsiveState.hideSearch || isSearchExpanded);\n    const showSearchUtility = isVirtual || (search && responsiveState.hideSearch);\n    const showUtilities = isVirtual || !isSearchExpanded;\n    const showMenuTrigger = isVirtual || menuTriggerVisible;\n\n    return (\n      <Wrapper\n        ref={isVirtual ? virtualRef : mainRef}\n        aria-hidden={isVirtual ? true : undefined}\n        // Wrapper is an alias for \"div\" or \"header\".\n        // eslint-disable-next-line react/forbid-component-props\n        className={clsx(styles['top-navigation'], {\n          [styles.virtual]: isVirtual,\n          [styles.hidden]: isVirtual,\n          [styles.narrow]: isNarrowViewport,\n          [styles.medium]: isMediumViewport,\n        })}\n      >\n        <div className={styles['padding-box']}>\n          {showIdentity && (\n            <div className={clsx(styles.identity, !identity.logo && styles['no-logo'])}>\n              <a className={styles['identity-link']} href={identity.href} onClick={onIdentityClick}>\n                {identity.logo && (\n                  <img\n                    role=\"img\"\n                    src={identity.logo?.src}\n                    alt={identity.logo?.alt}\n                    className={clsx(styles.logo, {\n                      [styles.narrow]: isNarrowViewport,\n                    })}\n                  />\n                )}\n                {showTitle && <span className={styles.title}>{identity.title}</span>}\n              </a>\n            </div>\n          )}\n\n          {showSearchSlot && (\n            <div className={styles.inputs}>\n              <div className={clsx(styles.search, !isVirtual && isSearchExpanded && styles['search-expanded'])}>\n                {search}\n              </div>\n            </div>\n          )}\n\n          <div className={styles.utilities}>\n            {showSearchUtility && (\n              <div\n                className={clsx(\n                  styles['utility-wrapper'],\n                  styles['utility-type-button'],\n                  styles['utility-type-button-link'],\n                  {\n                    [styles.narrow]: isNarrowViewport,\n                    [styles.medium]: isMediumViewport,\n                  }\n                )}\n                data-utility-special=\"search\"\n              >\n                <Utility\n                  hideText={true}\n                  definition={{\n                    type: 'button',\n                    iconName: isSearchExpanded ? 'close' : 'search',\n                    ariaLabel: isSearchExpanded\n                      ? i18n('i18nStrings.searchDismissIconAriaLabel', i18nStrings?.searchDismissIconAriaLabel)\n                      : i18n('i18nStrings.searchIconAriaLabel', i18nStrings?.searchIconAriaLabel),\n                    onClick: onSearchUtilityClick,\n                  }}\n                />\n              </div>\n            )}\n\n            {showUtilities &&\n              utilities\n                .filter(\n                  (_utility, i) =>\n                    isVirtual || !responsiveState.hideUtilities || responsiveState.hideUtilities.indexOf(i) === -1\n                )\n                .map((utility, i) => {\n                  const hideText = !!responsiveState.hideUtilityText;\n                  const isLast = (isVirtual || !showMenuTrigger) && i === utilities.length - 1;\n                  const offsetRight = isLast && isLargeViewport ? 'xxl' : isLast ? 'l' : undefined;\n\n                  return (\n                    <div\n                      key={i}\n                      className={clsx(\n                        styles['utility-wrapper'],\n                        styles[`utility-type-${utility.type}`],\n                        utility.type === 'button' && styles[`utility-type-button-${utility.variant ?? 'link'}`],\n                        {\n                          [styles.narrow]: isNarrowViewport,\n                          [styles.medium]: isMediumViewport,\n                        }\n                      )}\n                      data-utility-index={i}\n                      data-utility-hide={`${hideText}`}\n                    >\n                      <Utility hideText={hideText} definition={utility} offsetRight={offsetRight} />\n                    </div>\n                  );\n                })}\n\n            {isVirtual &&\n              utilities.map((utility, i) => {\n                const hideText = !responsiveState.hideUtilityText;\n                const isLast = !showMenuTrigger && i === utilities.length - 1;\n                const offsetRight = isLast && isLargeViewport ? 'xxl' : isLast ? 'l' : undefined;\n\n                return (\n                  <div\n                    key={i}\n                    className={clsx(\n                      styles['utility-wrapper'],\n                      styles[`utility-type-${utility.type}`],\n                      utility.type === 'button' && styles[`utility-type-button-${utility.variant ?? 'link'}`],\n                      {\n                        [styles.narrow]: isNarrowViewport,\n                        [styles.medium]: isMediumViewport,\n                      }\n                    )}\n                    data-utility-index={i}\n                    data-utility-hide={`${hideText}`}\n                  >\n                    <Utility hideText={hideText} definition={utility} offsetRight={offsetRight} />\n                  </div>\n                );\n              })}\n\n            {showMenuTrigger && (\n              <div\n                className={clsx(styles['utility-wrapper'], styles['utility-type-menu-dropdown'], {\n                  [styles.narrow]: isNarrowViewport,\n                  [styles.medium]: isMediumViewport,\n                })}\n                data-utility-special=\"menu-trigger\"\n              >\n                <ButtonTrigger\n                  expanded={overflowMenuOpen}\n                  onClick={toggleOverflowMenu}\n                  offsetRight=\"l\"\n                  ref={!isVirtual ? overflowMenuTriggerRef : undefined}\n                >\n                  {i18n('i18nStrings.overflowMenuTriggerText', i18nStrings?.overflowMenuTriggerText)}\n                </ButtonTrigger>\n              </div>\n            )}\n          </div>\n        </div>\n      </Wrapper>\n    );\n  };\n\n  return (\n    <div {...baseProps} ref={__internalRootRef}>\n      <VisualContext contextName=\"top-navigation\">\n        {content(false)}\n        <Portal>{content(true)}</Portal>\n        {menuTriggerVisible && overflowMenuOpen && (\n          <div className={styles['overflow-menu-drawer']}>\n            <OverflowMenu\n              headerText={i18nStrings?.overflowMenuTitleText}\n              dismissIconAriaLabel={i18nStrings?.overflowMenuDismissIconAriaLabel}\n              backIconAriaLabel={i18nStrings?.overflowMenuBackIconAriaLabel}\n              items={utilities.filter(\n                (utility, i) =>\n                  (!responsiveState.hideUtilities || responsiveState.hideUtilities.indexOf(i) !== -1) &&\n                  !utility.disableUtilityCollapse\n              )}\n              onClose={toggleOverflowMenu}\n            />\n          </div>\n        )}\n      </VisualContext>\n    </div>\n  );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { TopNavigationProps } from './interfaces';\nimport InternalTopNavigation from './internal';\n\nexport { TopNavigationProps };\n\nexport default function TopNavigation({ utilities = [], ...restProps }: TopNavigationProps) {\n  const baseComponentProps = useBaseComponent('TopNavigation');\n  return <InternalTopNavigation {...baseComponentProps} utilities={utilities} {...restProps} />;\n}\n\napplyDisplayName(TopNavigation, 'TopNavigation');\n","// © 2021 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\n/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { useState } from \"react\";\nimport Alert from \"@awsui/components-react/alert\";\nimport \"../../index.css\";\nimport params from \"../../parameters.json\";\nimport { Auth } from \"aws-amplify\";\nimport TopNavigation from \"@awsui/components-react/top-navigation\";\nimport { useHistory } from \"react-router-dom\";\n\nfunction Header(props) {\n  const history = useHistory();\n  const [visible, setVisible] = useState(false);\n\n  async function signOut() {\n    try {\n      await Auth.signOut();\n    } catch (error) {\n      console.log(\"error signing out\");\n    }\n  }\n\n  function Notification() {\n    return (\n      <Alert\n        dismissible\n        statusIconAriaLabel=\"Info\"\n        header=\"Feature announcement\"\n        visible={visible}\n        onDismiss={() => setVisible(false)}\n      >\n        🚀 TEAM v1.2.0 introduces support for the use of external repositories due to CodeCommit deprecation \n      </Alert>\n    );\n  }\n\n  return (\n    <div>\n      <TopNavigation\n        identity={{\n          href: \"/\",\n          logo: {\n            src: \"data:image/png;base64,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\",\n            alt: \"TEAM\",\n          },\n        }}\n        utilities={[\n          {\n            type: \"button\",\n            text: \"IAM Identity Center\",\n            href: `${params.Login}`,\n            external: true,\n            externalIconAriaLabel: \" (opens in a new tab)\",\n          },\n          {\n            type: \"button\",\n            iconName: \"notification\",\n            title: \"Notifications\",\n            ariaLabel: \"Notifications (unread)\",\n            badge: true,\n            disableUtilityCollapse: false,\n            onClick: () => setVisible(true),\n          },\n          {\n            type: \"button\",\n            text: \"v1.3.0\",\n            href: \"https://github.com/aws-samples/iam-identity-center-team/releases/tag/v1.3.0\",\n            external: true,\n            externalIconAriaLabel: \" (opens in a new tab)\",\n          },\n          {\n            type: \"menu-dropdown\",\n            text: `${props.user}`,\n            description: `${props.user}`,\n            iconName: \"user-profile\",\n            onItemClick: ({ detail }) => {\n              if (detail.id === \"signout\") {\n                signOut().then(() => history.push(\"/\"));\n              }\n            },\n            items: [\n              { id: \"signout\", text: \"Sign out\" },\n              {\n                id: \"support-group\",\n                text: \"Support\",\n                items: [\n                  {\n                    id: \"documentation\",\n                    text: \"Documentation\",\n                    href: \"https://aws-samples.github.io/iam-identity-center-team/\",\n                    external: true,\n                    externalIconAriaLabel: \" (opens in new tab)\",\n                  },\n                  { id: \"support\", text: \"Support\" },\n                  {\n                    id: \"feedback\",\n                    text: \"Feedback\",\n                    href: \"https://pulse.aws/survey/PZDTVK85\",\n                    external: true,\n                    externalIconAriaLabel: \" (opens in new tab)\",\n                  },\n                  {\n                    id: \"bug\",\n                    text: \"Report Bug\",\n                    href: \"https://github.com/aws-samples/iam-identity-center-team/issues\",\n                    external: true,\n                    externalIconAriaLabel: \" (opens in new tab)\",\n                  },\n                ],\n              },\n            ],\n          },\n        ]}\n        onFollow={() => {\n          history.push(\"/\");\n          props.setActiveHref(\"/\");\n          props.addNotification([]);\n        }}\n      />\n      <Notification />\n    </div>\n  );\n}\n\nexport default Header;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useState, useEffect } from \"react\";\nimport {\n  Box,\n  Button,\n  Header,\n  Pagination,\n  Table,\n  TextFilter,\n  SpaceBetween,\n  CollectionPreferences,\n  Multiselect,\n  TextContent,\n  Modal,\n  FormField,\n  ButtonDropdown,\n  Form,\n  Select,\n  ColumnLayout,\n  Toggle,\n  Input,\n  Spinner\n} from \"@awsui/components-react\";\nimport { useCollection } from \"@awsui/collection-hooks\";\nimport Ous from \"../Shared/Ous\";\nimport { API, graphqlOperation } from \"aws-amplify\";\nimport { onPublishOUs, onPublishPermissions } from \"../../graphql/subscriptions\";\nimport {\n  fetchAccounts,\n  fetchOUs,\n  fetchIdCGroups,\n  fetchPermissions,\n  addPolicy,\n  editPolicy,\n  delPolicy,\n  fetchUsers,\n  getAllEligibility,\n  getSetting\n} from \"../Shared/RequestService\";\nimport \"../../index.css\";\n\nconst COLUMN_DEFINITIONS = [\n  {\n    id: \"id\",\n    sortingField: \"id\",\n    header: \"Id\",\n    cell: (item) => item.id,\n    width: 140,\n  },\n  {\n    id: \"name\",\n    sortingField: \"name\",\n    header: \"Name\",\n    cell: (item) => item.name,\n    width: 220,\n  },\n  {\n    id: \"type\",\n    sortingField: \"type\",\n    header: \"Type\",\n    cell: (item) => item.type,\n    width: 130,\n  },\n  {\n    id: \"ticketNo\",\n    sortingField: \"ticketNo\",\n    header: \"TicketNo\",\n    cell: (item) => item.ticketNo || \"-\",\n    width: 130,\n  },\n  {\n    id: \"accounts\",\n    sortingField: \"accounts\",\n    header: \"Accounts\",\n    cell: (item) => (\n      <>{item.accounts.length > 0 ?  <TextContent>\n        <ul>\n          {item.accounts.map(({name}) => (\n            <li>{name}</li>\n          ))}\n        </ul>\n      </TextContent> : <TextContent><ul>-</ul></TextContent>}</>   \n    ), \n    width: 200,\n  },\n  {\n    id: \"ous\",\n    sortingField: \"ous\",\n    header: \"OUs\",\n    cell: (item) => (\n      <>{item.ous.length > 0 ?  <TextContent>\n        <ul>\n          {item.ous.map(({name}) => (\n            <li>{name}</li>\n          ))}\n        </ul>\n      </TextContent> : <TextContent><ul>-</ul></TextContent>}</>   \n    ), \n    width: 200,\n  },\n  {\n    id: \"permissions\",\n    sortingField: \"permissions\",\n    header: \"Permissions\",\n    cell: (item) => (\n      <TextContent>\n        <ul>\n          {item.permissions.map(({name}) => (\n            <li>{name}</li>\n          ))}\n        </ul>\n      </TextContent>\n    ),\n    width: 200,\n  },\n  {\n    id: \"duration\",\n    sortingField: \"duration\",\n    header: \"Max duration\",\n    cell: (item) => `${item.duration} hours`,\n    width: 120,\n  },\n  {\n    id: \"approvalRequired\",\n    sortingField: \"approvalRequired\",\n    header: \"Approval required\",\n    cell: (item) => item.approvalRequired ? \"Yes\" : \"No\",\n    width: 130,\n  },\n];\n\nconst MyCollectionPreferences = ({ preferences, setPreferences }) => {\n  return (\n    <CollectionPreferences\n      title=\"Preferences\"\n      confirmLabel=\"Confirm\"\n      cancelLabel=\"Cancel\"\n      preferences={preferences}\n      onConfirm={({ detail }) => setPreferences(detail)}\n      pageSizePreference={{\n        title: \"Page size\",\n        options: [\n          { value: 10, label: \"10 Policy\" },\n          { value: 30, label: \"30 Policy\" },\n          { value: 50, label: \"50 Policy\" },\n        ],\n      }}\n      wrapLinesPreference={{\n        label: \"Wrap lines\",\n        description: \"Check to see all the text and wrap the lines\",\n      }}\n      visibleContentPreference={{\n        title: \"Select visible columns\",\n        options: [\n          {\n            label: \"Policy properties\",\n            options: [\n              { id: \"id\", label: \"Id\" },\n              { id: \"name\", label: \"name\" },\n              { id: \"type\", label: \"type\" },\n              { id: \"ticketNo\", label: \"ticketNo\" },\n              { id: \"accounts\", label: \"accounts\" },\n              { id: \"ous\", label: \"ous\" },\n              { id: \"permissions\", label: \"permissions\" },\n              { id: \"duration\", label: \"duration\" },\n              { id: \"approvalRequired\", label: \"approvalRequired\" },\n            ],\n          },\n        ],\n      }}\n    />\n  );\n};\n\nfunction EmptyState({ title, subtitle, action }) {\n  return (\n    <Box textAlign=\"center\">\n      <Box variant=\"strong\">{title}</Box>\n      <Box variant=\"p\" padding={{ bottom: \"s\" }}>\n        {subtitle}\n      </Box>\n      {action}\n    </Box>\n  );\n}\n\nconst defaultType = {\n  label: \"All entities\",\n  value: \"0\",\n};\n\nfunction Eligible(props) {\n  const [allItems, setAllItems] = useState([]);\n  const [preferences, setPreferences] = useState({\n    pageSize: 10,\n    visibleContent: [\n      // \"id\",\n      \"name\",\n      \"type\",\n      \"ticketNo\",\n      \"accounts\",\n      \"ous\",\n      \"permissions\",\n      \"duration\",\n      \"approvalRequired\",\n      \"modifiedBy\"\n    ],\n  });\n\n  const [selectedOption, setSelectedOption] = useState(defaultType);\n  const selectTypeOptions = prepareSelectOptions(\"type\", defaultType);\n\n  function prepareSelectOptions(field, defaultOption) {\n    const optionSet = [];\n    // Building a non redundant list of the field passed as parameter.\n\n    allItems.forEach((item) => {\n      if (optionSet.indexOf(item[field]) === -1) {\n        optionSet.push(item[field]);\n      }\n    });\n    optionSet.sort();\n\n    // The first element is the default one.\n    const options = [defaultOption];\n\n    // Adding the other element ot the list.\n    optionSet.forEach((item, index) =>\n      options.push({ label: item, value: (index + 1).toString() })\n    );\n    return options;\n  }\n\n  function matchesType(item, selectedType) {\n    return selectedType === defaultType || item.type === selectedType.label;\n  }\n\n  const SEARCHABLE_COLUMNS = COLUMN_DEFINITIONS.map((item) => item.id);\n\n  const {\n    items,\n    actions,\n    filteredItemsCount,\n    collectionProps,\n    filterProps,\n    paginationProps,\n  } = useCollection(allItems, {\n    filtering: {\n      filteringFunction: (item, filteringText) => {\n        if (!matchesType(item, selectedOption)) {\n          return false;\n        }\n        const filteringTextLowerCase = filteringText.toLowerCase();\n\n        return SEARCHABLE_COLUMNS.map((key) => item[key]).some(\n          (value) =>\n            typeof value === \"string\" &&\n            value.toLowerCase().indexOf(filteringTextLowerCase) > -1\n        );\n      },\n      empty: (\n        <EmptyState\n          title=\"No Policy\"\n          subtitle=\"No eligibility policy to display.\"\n          action={<Button onClick={handleAdd}>Create eligibility policy</Button>}\n        />\n      ),\n      noMatch: (\n        <EmptyState\n          title=\"No matches\"\n          subtitle=\"Your search didn't return any records.\"\n          action={\n            <Button onClick={() => actions.setFiltering(\"\")}>\n              Clear filter\n            </Button>\n          }\n        />\n      ),\n    },\n    pagination: { pageSize: preferences.pageSize },\n    sorting: {},\n    selection: {},\n  });\n\n  const { selectedItems } = collectionProps;\n  const [confirmLoading, setConfirmLoading] = useState(false);\n  const [submitLoading, setSubmitLoading] = useState(false);\n  const [tableLoading, setTableLoading] = useState(true);\n  const [visible, setVisible] = useState(false);\n  const [deleteVisible, setDeleteVisible] = useState(false);\n  const [editVisible, setEditVisible] = useState(false);\n  const [Type, setType] = useState(\"\");\n  const [typeError, setTypeError] = useState(\"\");\n  const [ticketNo, setTicketNo] = useState(\"\");\n  const [duration, setDuration] = useState(\"9\");\n  const [durationError, setDurationError] = useState(\"\");\n  const [approvalRequired, setApprovalRequired] = useState(true);\n  const [ticketError, setTicketError] = useState(\"\");\n  const [resource, setResource] = useState(\"\");\n  const [resourceError, setResourceError] = useState(\"\");\n  const [account, setAccount] = useState([]);\n  const [accountError, setAccountError] = useState(\"\");\n  const [ou, setOU] = useState([]);\n  const [ouError, setOuError] = useState(\"\");\n  const [permission, setPermission] = useState([]);\n  const [permissionError, setPermissionError] = useState(\"\");\n\n  const [accounts, setAccounts] = useState([]);\n  const [accountStatus, setAccountStatus] = useState(\"finished\");\n\n  const [users, setUsers] = useState([]);\n  const [userStatus, setUserStatus] = useState(\"finished\");\n\n  const [groups, setGroups] = useState([]);\n  const [groupStatus, setGroupStatus] = useState(\"finished\");\n\n  const [ous, setOUs] = useState([]);\n  const [ouStatus, setOUStatus] = useState(\"finished\");\n\n  const [permissions, setPermissions] = useState([]);\n  const [permissionStatus, setPermissionStatus] = useState(\"finished\");\n  const [ticketRequired, setTicketRequired] = useState(true);\n\n\n  useEffect(() => {\n    views();\n    props.addNotification([]);\n    getOUs()\n    getAccounts();\n    getPermissions();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  function views() {\n    getAllEligibility().then((items) => {\n      setAllItems(items);\n      setTableLoading(false);\n      setConfirmLoading(false);\n      setSubmitLoading(false);\n      setVisible(false);\n      setDeleteVisible(false);\n      handleDismiss();\n      getSettings()\n    });\n  }\n\n  function handleAdd() {\n    setVisible(true);\n  }\n\n  function getSettings(){\n    getSetting(\"settings\").then((data) => {\n      if (data !== null) {\n        setTicketRequired(data.ticketNo);\n        setDuration(data.duration)\n        }\n    });\n  }\n\n  function handleSelect(data) {\n    if (data.detail.id === \"delete\") {\n      setDeleteVisible(true);\n    } else handleEdit();\n  }\n\n  function handleDelete() {\n    selectedItems.forEach((item) => {\n      setConfirmLoading(true);\n      const data = {\n        id: item.id,\n      };\n      delPolicy(data).then(() => {\n        views();\n        props.addNotification([\n          {\n            type: \"success\",\n            content: `Eligibility policy deleted successfully`,\n            dismissible: true,\n            onDismiss: () => props.addNotification([]),\n          },\n        ]);\n      });\n    });\n  }\n\n  function handleConfirmEdit() {\n    let action = \"edit\";\n    validate(action).then((valid) => {\n      if (valid) {\n        setConfirmLoading(true);\n        const data = {\n          id: selectedItems[0].id,\n          accounts: account.map(({ value, label }) => ({name: label, id: value})),\n          permissions: permission.map(({ value,label }) => ({name: label, id: value})),\n          ous: ou.map(({ value,label }) => ({name: label, id: value})),\n          ticketNo: ticketNo,\n          approvalRequired: approvalRequired,\n          duration: duration\n        };\n        editPolicy(data).then(() => {\n          views();\n          props.addNotification([\n            {\n              type: \"success\",\n              content: `Eligibility policy updated successfully`,\n              dismissible: true,\n              onDismiss: () => props.addNotification([]),\n            },\n          ]);\n        });\n      }\n    });\n  }\n\n  function handleEdit() {\n    setAccount(\n      selectedItems[0].accounts.map((data) => {\n        return {\n          label: data.name,\n          value: data.id,\n          description: data.id,\n        };\n      })\n    );\n    setOU(\n      selectedItems[0].ous.map((data) => {\n        return {\n          label: data.name,\n          value: data.id,\n          description: data.id,\n        };\n      })\n    );\n    setPermission(\n      selectedItems[0].permissions.map((data) => {\n        return {\n          label: data.name,\n          value: data.id,\n          description: data.id,\n        };\n      })\n    );\n    setApprovalRequired(\n      selectedItems[0].approvalRequired \n    );\n    setDuration(\n      selectedItems[0].duration \n    );\n    setEditVisible(true);\n  }\n\n  const onTypeChange = (value) => {\n    setResource([]);\n    setType(value);\n    value.value === \"User\" ? getUsers() : getGroups();\n  };\n\n  function getUsers() {\n    setUserStatus(\"loading\");\n    fetchUsers().then((data) => {\n      setUsers(data);\n      setUserStatus(\"finished\");\n    });\n  }\n\n  function getGroups() {\n    setGroupStatus(\"loading\");\n    fetchIdCGroups().then((data) => {\n      setGroups(data);\n      setGroupStatus(\"finished\");\n    });\n  }\n\n  function getOUs() {\n    setOUStatus(\"loading\");\n    fetchOUs().then(() =>{\n      const subscription = API.graphql(\n        graphqlOperation(onPublishOUs)\n      ).subscribe({\n        next: (result) => {\n          const data = result.value.data.onPublishOUs.ous\n          setOUs(JSON.parse(data));\n          setOUStatus(\"finished\");\n          subscription.unsubscribe();\n        },\n      });\n    });\n  }\n\n  function getAccounts() {\n    setAccountStatus(\"loading\");\n    fetchAccounts().then((data) => {\n      setAccounts(data);\n      setAccountStatus(\"finished\");\n    });\n  }\n\n  function getPermissions() {\n    setPermissionStatus(\"loading\");\n    fetchPermissions().then((data) => {\n      const subscription = API.graphql(\n        graphqlOperation(onPublishPermissions)\n      ).subscribe({\n        next: (result) => {\n          if (result.value.data.onPublishPermissions.id === data.id) {\n            setPermissions(result.value.data.onPublishPermissions.permissions);\n            setPermissionStatus(\"finished\");\n            subscription.unsubscribe();\n          }\n        },\n      });\n    });\n  }\n\n  const onResourceChange = (value) => {\n    setResource(value);\n  };\n\n  async function validate(action) {\n    let valid = true;\n    if (permission.length < 1 ) {\n      valid = false;\n      setPermissionError(\"Select permission set\");\n    }\n    if (ou.length < 1 && account.length < 1) {\n      valid = false;\n      setOuError(\"Select OUs and/or Accounts\");\n      setAccountError(\"Select OUs and/or Accounts\");\n    }\n    if ((!ticketNo && ticketRequired) || !(/^[a-zA-Z0-9]+$/.test(ticketNo[0]))) {\n      setTicketError(\"Enter valid change management ticket number\");\n      valid = false;\n    }\n    if (!duration || isNaN(duration) || Number(duration ) > 8000 || Number(duration ) < 1) {\n      setDurationError(`Enter number between 1-8000`);\n      valid = false;\n    }\n    if (!resource && action === \"submit\") {\n      setResourceError(\"Select a valid entity\");\n      valid = false;\n    }\n    if (!Type && action === \"submit\") {\n      setTypeError(\"Select a valid entity type\");\n      valid = false;\n    }\n    return valid;\n  }\n\n  function handleSubmit(event) {\n    let action = \"submit\";\n    setSubmitLoading(true);\n    validate(action).then((valid) => {\n      if (valid) {\n        event.preventDefault();\n        resource.forEach((item) => {\n          const data = {\n            type: Type.value,\n            name: item.label,\n            accounts: account.map(({ value, label }) => ({name: label, id: value})),\n            permissions: permission.map(({ value,label }) => ({name: label, id: value})),\n            ous: ou.map(({ value,label }) => ({name: label, id: value})),\n            id: item.value,\n            ticketNo: ticketNo,\n            approvalRequired: approvalRequired,\n            duration: duration\n          };\n          addPolicy(data).then(() => {\n            views();\n            props.addNotification([\n              {\n                type: \"success\",\n                content: \"Eligibility policy added successfully\",\n                dismissible: true,\n                onDismiss: () => props.addNotification([]),\n              },\n            ]);\n          });\n        });\n      }\n    });\n  }\n\n  function handleDismiss() {\n    setVisible(false);\n    setDeleteVisible(false);\n    setEditVisible(false);\n    setType(\"\");\n    setTypeError(\"\");\n    setResource(\"\");\n    setResourceError(\"\");\n    setAccount([]);\n    setAccountError(\"\");\n    setOU([]);\n    setOuError(\"\");\n    setPermission([]);\n    setPermissionError(\"\");\n    setTicketNo(\"\");\n    setTicketError(\"\");\n  }\n\n  const ValueWithLabel = ({ label, children }) => (\n    <div>\n      <Box variant=\"awsui-key-label\">{label}</Box>\n      <div>{children}</div>\n    </div>\n  );\n\n\n  return (\n    <div className=\"container\">\n      <Table\n        {...collectionProps}\n        resizableColumns=\"true\"\n        loading={tableLoading}\n        loadingText=\"Fetching eligibility policy\"\n        wrapLines\n        header={\n          <Header\n            counter={\n              selectedItems.length\n                ? `(${selectedItems.length}/${allItems.length})`\n                : `(${allItems.length})`\n            }\n            actions={\n              <SpaceBetween size=\"s\" direction=\"horizontal\">\n                <Button iconName=\"refresh\" />\n                <ButtonDropdown\n                  items={[\n                    {\n                      text: \"Edit\",\n                      id: \"edit\",\n                      disabled:\n                        selectedItems.length === 0 || selectedItems.length > 1,\n                    },\n                    {\n                      text: \"Delete\",\n                      id: \"delete\",\n                      disabled: selectedItems.length === 0,\n                    },\n                  ]}\n                  onItemClick={(props) => handleSelect(props)}\n                >\n                  Actions\n                </ButtonDropdown>\n                <Button variant=\"primary\" onClick={handleAdd}>\n                  Add policy\n                </Button>\n              </SpaceBetween>\n            }\n          >\n            Eligibility policy\n          </Header>\n        }\n        filter={\n          <div className=\"input-container\">\n            <TextFilter\n              {...filterProps}\n              filteringPlaceholder=\"Find policy\"\n              countText={filteredItemsCount}\n              className=\"input-filter\"\n            />\n            <Select\n              {...filterProps}\n              className=\"select-filter engine-filter\"\n              selectedAriaLabel=\"Selected\"\n              options={selectTypeOptions}\n              selectedOption={selectedOption}\n              onChange={({ detail }) =>\n                setSelectedOption(detail.selectedOption)\n              }\n              ariaDescribedby={null}\n            />\n          </div>\n        }\n        columnDefinitions={COLUMN_DEFINITIONS}\n        visibleColumns={preferences.visibleContent}\n        pagination={<Pagination {...paginationProps} />}\n        preferences={\n          <MyCollectionPreferences\n            preferences={preferences}\n            setPreferences={setPreferences}\n          />\n        }\n        items={items}\n        selectionType=\"multi\"\n      />\n      <Modal\n        onDismiss={() => handleDismiss()}\n        visible={visible}\n        closeAriaLabel=\"Close modal\"\n        size=\"large\"\n        header=\"Policy\"\n      >\n        <Form\n          actions={\n            <SpaceBetween direction=\"horizontal\" size=\"xs\">\n              <Button\n                variant=\"primary\"\n                type=\"submit\"\n                onClick={handleSubmit}\n                className=\"buttons\"\n              >\n                Add eligibility policy\n              </Button>\n            </SpaceBetween>\n          }\n        >\n          <SpaceBetween direction=\"vertical\" size=\"l\">\n            <FormField\n              label=\"Entity type\"\n              stretch\n              description=\"User or Group\"\n              errorText={typeError}\n            >\n              <Select\n                selectedAriaLabel=\"Selected\"\n                options={[\n                  {\n                    label: \"User\",\n                    value: \"User\",\n                  },\n                  {\n                    label: \"Group\",\n                    value: \"Group\",\n                  },\n                ]}\n                selectedOption={Type}\n                onChange={(event) => {\n                  setTypeError();\n                  onTypeChange(event.detail.selectedOption);\n                }}\n              />\n            </FormField>\n            {Type.value === \"User\" && (\n              <FormField\n                label=\"User\"\n                stretch\n                description=\"User eligibility policy\"\n                errorText={resourceError}\n              >\n                <Multiselect\n                  statusType={userStatus}\n                  placeholder=\"Select Users\"\n                  loadingText=\"Loading users\"\n                  filteringType=\"auto\"\n                  empty=\"No options\"\n                  options={users.map((user) => ({\n                    label: user.UserName,\n                    value: user.UserId,\n                    description: user.UserId,\n                    disabled: allItems.map(({ id }) => id).includes(user.UserId),\n                  }))}\n                  selectedOptions={resource}\n                  onChange={(event) => {\n                    setResourceError();\n                    onResourceChange(event.detail.selectedOptions);\n                  }}\n                  selectedAriaLabel=\"selected\"\n                  deselectAriaLabel={(e) => `Remove ${e.label}`}\n                />\n              </FormField>\n            )}\n            {Type.value === \"Group\" && (\n              <FormField\n                label=\"Group\"\n                stretch\n                description=\"Group eligibility policy\"\n                errorText={resourceError}\n              >\n                <Multiselect\n                  statusType={groupStatus}\n                  placeholder=\"Select Groups\"\n                  loadingText=\"Loading Groups\"\n                  filteringType=\"auto\"\n                  empty=\"No options\"\n                  options={groups.map((group) => ({\n                    label: group.DisplayName,\n                    value: group.GroupId,\n                    description: group.GroupId,\n                    disabled: allItems.map(({ id }) => id).includes(group.GroupId),\n                  }))}\n                  selectedOptions={resource}\n                  onChange={(event) => {\n                    setResourceError();\n                    onResourceChange(event.detail.selectedOptions);\n                  }}\n                  selectedAriaLabel=\"selected\"\n                  deselectAriaLabel={(e) => `Remove ${e.label}`}\n                />\n              </FormField>\n            )}\n            <FormField\n              label=\"Ticket No\"\n              stretch\n              description=\"Change Management system ticket system number\"\n              errorText={ticketError}\n            >\n              <Input\n                value={ticketNo}\n                onChange={(event) => {\n                  setTicketError();\n                  setTicketNo(event.detail.value);\n                }}\n              />\n            </FormField>\n            <FormField\n              label=\"Accounts\"\n              stretch\n              description=\"List of Eligible Accounts\"\n              errorText={accountError}\n            >\n              <Multiselect\n                statusType={accountStatus}\n                placeholder=\"Select accounts\"\n                loadingText=\"Loading accounts\"\n                filteringType=\"auto\"\n                empty=\"No options\"\n                options={accounts.map((account) => ({\n                  label: account.name,\n                  value: account.id,\n                  description: account.id,\n                }))}\n                selectedOptions={account}\n                onChange={({ detail }) => {\n                  setAccountError();\n                  setAccount(detail.selectedOptions);\n                }}\n                selectedAriaLabel=\"selected\"\n                deselectAriaLabel={(e) => `Remove ${e.label}`}\n              />\n            </FormField>\n            <FormField\n              label=\"OUs\"\n              stretch\n              description=\"List of Eligible OUs\"\n              errorText={ouError}\n            >\n                {ous.length === 1 ? (<Ous\n                  options={ous}\n                  setResource={setOU}\n                  resource={ou}\n                  />) : <Spinner size=\"large\"/>}\n\n              {/* <Multiselect\n                statusType={ouStatus}\n                placeholder=\"Select OUs\"\n                loadingText=\"Loading OUs\"\n                filteringType=\"auto\"\n                empty=\"No options\"\n                options={ous.map((ou) => ({\n                  label: ou.Name,\n                  value: ou.Id,\n                  description: ou.Id,\n                }))}\n                selectedOptions={ou}\n                onChange={({ detail }) => {\n                  setOuError();\n                  setOU(detail.selectedOptions);\n                }}\n                selectedAriaLabel=\"selected\"\n                deselectAriaLabel={(e) => `Remove ${e.label}`}\n              /> */}\n            </FormField>\n            <FormField\n              label=\"Permission\"\n              stretch\n              description=\"List of Eligible Permissions\"\n              errorText={permissionError}\n            >\n              <Multiselect\n                statusType={permissionStatus}\n                placeholder=\"Select Permissions\"\n                loadingText=\"Loading Permissions\"\n                filteringType=\"auto\"\n                empty=\"No options\"\n                options={permissions.map((permission) => ({\n                  label: permission.Name,\n                  value: permission.Arn,\n                  description: permission.Arn,\n                }))}\n                selectedOptions={permission}\n                onChange={({ detail }) => {\n                  setPermissionError();\n                  setPermission(detail.selectedOptions);\n                }}\n                selectedAriaLabel=\"selected\"\n                deselectAriaLabel={(e) => `Remove ${e.label}`}\n              />\n            </FormField>\n            <FormField\n              label=\"Max duration\"\n              stretch\n              description=\"Maximum elevated access request duration in hours\"\n              errorText={durationError}\n              placeholder={`Enter number between 1-8000`}\n            >\n              <Input\n                value={duration}\n                onChange={(event) => {\n                  setDurationError();\n                  event.detail.value > 8000\n                    ? setDurationError(\n                        `Enter a number between 1 and 8000`\n                      )\n                    : setDuration(event.detail.value);\n                }}\n                type=\"number\"\n              />\n            </FormField>\n            <FormField\n                label=\"Approval required\"\n                stretch\n                description=\"Determines if approval is required for elevated access\"\n              >\n                <Toggle\n                  onChange={({ detail }) => setApprovalRequired(detail.checked)}\n                  checked={approvalRequired}\n                >\n                  Approval required\n                </Toggle>\n              </FormField>\n          </SpaceBetween>\n        </Form>\n      </Modal>\n      <Modal\n        onDismiss={() => setDeleteVisible(false)}\n        visible={deleteVisible}\n        closeAriaLabel=\"Close modal\"\n        size=\"medium\"\n        footer={\n          <Box float=\"right\">\n            <SpaceBetween direction=\"horizontal\" size=\"xs\">\n              <Button\n                variant=\"link\"\n                onClick={() => {\n                  setDeleteVisible(false);\n                }}\n              >\n                Cancel\n              </Button>\n              <Button\n                variant=\"primary\"\n                onClick={handleDelete}\n                loading={confirmLoading}\n              >\n                Confirm\n              </Button>\n            </SpaceBetween>\n          </Box>\n        }\n        header=\"Delete eligibility policy\"\n      >\n        Are you sure you want to delete policy ?\n      </Modal>\n      {selectedItems.length > 0 && (\n        <Modal\n          onDismiss={() => handleDismiss()}\n          visible={editVisible}\n          closeAriaLabel=\"Close modal\"\n          size=\"large\"\n          footer={\n            <Box float=\"right\">\n              <SpaceBetween direction=\"horizontal\" size=\"xs\">\n                <Button\n                  variant=\"link\"\n                  onClick={() => {\n                    handleDismiss();\n                  }}\n                >\n                  Cancel\n                </Button>\n                <Button\n                  variant=\"primary\"\n                  onClick={handleConfirmEdit}\n                  loading={confirmLoading}\n                >\n                  Confirm\n                </Button>\n              </SpaceBetween>\n            </Box>\n          }\n          header=\"Edit policy\"\n        >\n          <SpaceBetween size=\"l\">\n            <ColumnLayout columns={3} variant=\"text-grid\">\n              <ValueWithLabel label=\"Entity type\">\n                {selectedItems[0].type}\n              </ValueWithLabel>\n              <ValueWithLabel label=\"Name\">\n                {selectedItems[0].name}\n              </ValueWithLabel>\n              <ValueWithLabel label=\"Id\">{selectedItems[0].id}</ValueWithLabel>\n            </ColumnLayout>\n            <FormField\n              label=\"Ticket No\"\n              stretch\n              description=\"Change Management system ticket system number\"\n              errorText={ticketError}\n            >\n              <Input\n                value={ticketNo}\n                onChange={(event) => {\n                  setTicketError();\n                  setTicketNo(event.detail.value);\n                }}\n              />\n            </FormField>\n            <FormField\n              label=\"Account\"\n              stretch\n              description=\"List of Eligible Accounts\"\n              errorText={accountError}\n            >\n              <Multiselect\n                statusType={accountStatus}\n                placeholder=\"Select accounts\"\n                loadingText=\"Loading accounts\"\n                filteringType=\"auto\"\n                empty=\"No options\"\n                options={accounts.map((account) => ({\n                  label: account.name,\n                  value: account.id,\n                  description: account.id,\n                }))}\n                selectedOptions={account}\n                onChange={({ detail }) => {\n                  setAccountError();\n                  setAccount(detail.selectedOptions);\n                }}\n                selectedAriaLabel=\"selected\"\n                deselectAriaLabel={(e) => `Remove ${e.label}`}\n              />\n            </FormField>\n            <FormField\n              label=\"OU\"\n              stretch\n              description=\"List of Eligible OUs\"\n              errorText={ouError}\n            >\n              {ous.length === 1 ? (<Ous\n                  options={ous}\n                  setResource={setOU}\n                  resource={ou}\n                  />) : <Spinner size=\"large\"/>}\n              {/* <Multiselect\n                statusType={ouStatus}\n                placeholder=\"Select OUs\"\n                loadingText=\"Loading OUs\"\n                filteringType=\"auto\"\n                empty=\"No options\"\n                options={ous.map((ou) => ({\n                  label: ou.Name,\n                  value: ou.Id,\n                  description: ou.Id,\n                }))}\n                selectedOptions={ou}\n                onChange={({ detail }) => {\n                  setOuError();\n                  setOU(detail.selectedOptions);\n                }}\n                selectedAriaLabel=\"selected\"\n                deselectAriaLabel={(e) => `Remove ${e.label}`}\n              /> */}\n            </FormField>\n            <FormField\n              label=\"Permission\"\n              stretch\n              description=\"List of Eligible Permissions\"\n              errorText={permissionError}\n            >\n              <Multiselect\n                statusType={permissionStatus}\n                placeholder=\"Select Permissions\"\n                loadingText=\"Loading Permissions\"\n                filteringType=\"auto\"\n                empty=\"No options\"\n                options={permissions.map((permission) => ({\n                  label: permission.Name,\n                  value: permission.Arn,\n                  description: permission.Arn,\n                }))}\n                selectedOptions={permission}\n                onChange={({ detail }) => {\n                  setPermissionError();\n                  setPermission(detail.selectedOptions);\n                }}\n                selectedAriaLabel=\"selected\"\n                deselectAriaLabel={(e) => `Remove ${e.label}`}\n              />\n            </FormField>\n            <FormField\n              label=\"Max duration\"\n              stretch\n              description=\"Maximum elevated access request duration in hours\"\n              errorText={durationError}\n              placeholder={`Enter number between 1-8000`}\n            >\n              <Input\n                value={duration}\n                onChange={(event) => {\n                  setDurationError();\n                  event.detail.value > 8000\n                    ? setDurationError(\n                        `Enter a number between 1 and 8000`\n                      )\n                    : setDuration(event.detail.value);\n                }}\n                type=\"number\"\n              />\n            </FormField>\n            <FormField\n                label=\"Approval required\"\n                stretch\n                description=\"Determines if approval is required for elevated access\"\n              >\n                <Toggle\n                  onChange={({ detail }) => setApprovalRequired(detail.checked)}\n                  checked={approvalRequired}\n                >\n                  Approval required\n                </Toggle>\n              </FormField>\n          </SpaceBetween>\n        </Modal>\n      )}\n    </div>\n  );\n}\n\nexport default Eligible;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useState, useEffect } from \"react\";\nimport {\n  Box,\n  Button,\n  Header,\n  Pagination,\n  Table,\n  TextFilter,\n  SpaceBetween,\n  CollectionPreferences,\n  Modal,\n  Select,\n  Textarea,\n  FormField,\n  ColumnLayout,\n  ExpandableSection,\n} from \"@awsui/components-react\";\nimport { useCollection } from \"@awsui/collection-hooks\";\nimport { useHistory } from \"react-router-dom\";\nimport { sessions, updateStatus, getSetting} from \"../Shared/RequestService\";\nimport { API, graphqlOperation } from \"aws-amplify\";\nimport { onUpdateRequests } from \"../../graphql/subscriptions\";\nimport Status from \"../Shared/Status\";\nimport Details from \"../Shared/Details\";\nimport \"../../index.css\";\nimport { Divider } from \"antd\";\nimport Logs from \"../Sessions/Logs\"\nimport Timer from \"../Sessions/Timer\";\n\nfunction convertAwsDateTime(awsDateTime) {\n  // Parse AWS datetime string into a Date object\n  const date = new Date(awsDateTime);\n  // Format date in user-friendly format\n  const options = {\n    weekday: 'short',\n    day: 'numeric',\n    month: 'short',\n    hour: '2-digit',\n    minute: '2-digit'\n  };\n  const userFriendlyFormat = date.toLocaleString('en-US', options);\n  return userFriendlyFormat\n}\n\nconst COLUMN_DEFINITIONS = [\n  {\n    id: \"id\",\n    sortingField: \"id\",\n    header: \"Id\",\n    cell: (item) => item.id,\n    width: 50,\n  },\n  {\n    id: \"email\",\n    sortingField: \"email\",\n    header: \"Requester\",\n    cell: (item) => item.email,\n    minWidth: 160,\n  },\n  {\n    id: \"account\",\n    sortingField: \"account\",\n    header: \"Account\",\n    cell: (item) => item.accountName,\n    minWidth: 10,\n  },\n  {\n    id: \"role\",\n    sortingField: \"role\",\n    header: \"Role\",\n    cell: (item) => item.role,\n    minWidth: 10,\n  },\n  {\n    id: \"startTime\",\n    sortingField: \"startTime\",\n    header: \"StartTime\",\n    cell: (item) => convertAwsDateTime(item.startTime),\n    minWidth: 160,\n  },\n  {\n    id: \"duration\",\n    sortingField: \"duration\",\n    header: \"Duration\",\n    cell: (item) => `${item.duration} hours`,\n    maxWidth: 120,\n  },\n  {\n    id: \"justification\",\n    sortingField: \"justification\",\n    header: \"Justification\",\n    cell: (item) => item.justification,\n    maxWidth: 200,\n  },\n  {\n    id: \"ticketNo\",\n    sortingField: \"ticketNo\",\n    header: \"Ticket no\",\n    cell: (item) => item.ticketNo || \"-\",\n    minWidth: 10,\n  },\n  {\n    id: \"status\",\n    sortingField: \"status\",\n    header: \"Status\",\n    cell: (item) => <Status status={item.status} />,\n    minWidth: 10,\n  },\n];\n\nconst MyCollectionPreferences = ({ preferences, setPreferences }) => {\n  return (\n    <CollectionPreferences\n      title=\"Preferences\"\n      confirmLabel=\"Confirm\"\n      cancelLabel=\"Cancel\"\n      preferences={preferences}\n      onConfirm={({ detail }) => setPreferences(detail)}\n      pageSizePreference={{\n        title: \"Page size\",\n        options: [\n          { value: 10, label: \"10 Sessions\" },\n          { value: 30, label: \"30 Sessions\" },\n          { value: 50, label: \"50 Sessions\" },\n        ],\n      }}\n      wrapLinesPreference={{\n        label: \"Wrap lines\",\n        description: \"Check to see all the text and wrap the lines\",\n      }}\n      visibleContentPreference={{\n        title: \"Select visible columns\",\n        options: [\n          {\n            label: \"Sessions properties\",\n            options: [\n              // { id: \"id\", label: \"Id\", editable: false },\n              { id: \"email\", label: \"Requester\" },\n              { id: \"account\", label: \"Account\" },\n              { id: \"role\", label: \"Role\" },\n              { id: \"duration\", label: \"Duration\" },\n              { id: \"startTime\", label: \"StartTime\" },\n              { id: \"justification\", label: \"Justification\" },\n              { id: \"ticketNo\", label: \"TicketNo\" },\n              { id: \"status\", label: \"Status\" },\n            ],\n          },\n        ],\n      }}\n    />\n  );\n};\n\nfunction EmptyState({ title, subtitle, action }) {\n  return (\n    <Box textAlign=\"center\">\n      <Box variant=\"strong\">{title}</Box>\n      <Box variant=\"p\" padding={{ bottom: \"s\" }}>\n        {subtitle}\n      </Box>\n      {action}\n    </Box>\n  );\n}\n\nconst defaultStatus = {\n  label: \"All status\",\n  value: \"0\",\n};\n\nfunction Active(props) {\n  const [allItems, setAllItems] = useState([]);\n  const [preferences, setPreferences] = useState({\n    pageSize: 10,\n    visibleContent: [\n      \"email\",\n      \"account\",\n      \"role\",\n      \"duration\",\n      \"startTime\",\n      \"justification\",\n      \"ticketNo\",\n      \"status\",\n    ],\n  });\n\n  const [selectedOption, setSelectedOption] = useState(defaultStatus);\n  const selectStatusOptions = prepareSelectOptions(\"status\", defaultStatus);\n\n  function prepareSelectOptions(field, defaultOption) {\n    const optionSet = [];\n    // Building a non redundant list of the field passed as parameter.\n\n    allItems.forEach((item) => {\n      if (optionSet.indexOf(item[field]) === -1) {\n        optionSet.push(item[field]);\n      }\n    });\n    optionSet.sort();\n\n    // The first element is the default one.\n    const options = [defaultOption];\n\n    // Adding the other element ot the list.\n    optionSet.forEach((item, index) =>\n      options.push({ label: item, value: (index + 1).toString() })\n    );\n    return options;\n  }\n\n  function matchesStatus(item, selectedStatus) {\n    return (\n      selectedStatus === defaultStatus || item.status === selectedStatus.label\n    );\n  }\n\n  const SEARCHABLE_COLUMNS = COLUMN_DEFINITIONS.map((item) => item.id);\n\n  const {\n    items,\n    actions,\n    filteredItemsCount,\n    collectionProps,\n    filterProps,\n    paginationProps,\n  } = useCollection(allItems, {\n    filtering: {\n      filteringFunction: (item, filteringText) => {\n        if (!matchesStatus(item, selectedOption)) {\n          return false;\n        }\n        const filteringTextLowerCase = filteringText.toLowerCase();\n\n        return SEARCHABLE_COLUMNS.map((key) => item[key]).some(\n          (value) =>\n            typeof value === \"string\" &&\n            value.toLowerCase().indexOf(filteringTextLowerCase) > -1\n        );\n      },\n      empty: (\n        <EmptyState\n          title=\"No elevated access\"\n          subtitle=\"No elevated access to display.\"\n          action={<Button onClick={handleCreate}>Create request</Button>}\n        />\n      ),\n      noMatch: (\n        <EmptyState\n          title=\"No matches\"\n          subtitle=\"Your search didn't return any records.\"\n          action={\n            <Button onClick={() => actions.setFiltering(\"\")}>\n              Clear filter\n            </Button>\n          }\n        />\n      ),\n    },\n    pagination: { pageSize: preferences.pageSize },\n    sorting: {},\n    selection: {},\n  });\n\n  const { selectedItems } = collectionProps;\n  const history = useHistory();\n  const [tableLoading, setTableLoading] = useState(true);\n  const [visible, setVisible] = useState(false);\n  const [revokeVisible, setrevokeVisible] = useState(false);\n  const [comment, setComment] = useState();\n  const [commentError, setCommentError] = useState();\n  const [refreshLoading, setRefreshLoading] = useState(false);\n  const [revokeLoading, setRevokeLoading] = useState(false);\n  const [expand, setExpand] = useState(false);\n  const [viewLogs, setViewLogs] = useState(false);\n  const [commentRequired, setCommentRequired] = useState(true);\n\n  useEffect(() => {\n    views();\n    props.addNotification([]);\n    approveEvent();\n    getSettings()\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  function views() {\n    let filter = {\n      and: [\n        {or: [{ status: { eq: \"scheduled\" } }, { status: { eq: \"in progress\" } }]},\n        {or: [{ email: { eq: props.user } }, { approvers: { contains: props.user } }]}\n      ]\n    };\n    sessions(filter).then((items) => {\n      items.sort((a, b) => (a.updatedAt < b.updatedAt ? 1 : -1));\n      setAllItems(items);\n      setTableLoading(false);\n      setRefreshLoading(false);\n      setRevokeLoading(false);\n      setVisible(false);\n      setrevokeVisible(false);\n      setComment()\n    });\n  }\n\n  function getSettings(){\n    getSetting(\"settings\").then((data) => {\n      if (data !== null) {\n        setCommentRequired(data.comments);\n        }\n    });\n  }\n\n  function approveEvent() {\n    API.graphql(graphqlOperation(onUpdateRequests)).subscribe({\n      next: ({ value }) => {\n        // eslint-disable-next-line default-case\n        switch (value.data.onUpdateRequests.status) {\n          case \"in progress\":\n          case \"ended\":\n          case \"revoked\":\n            views();\n        }\n      },\n      error: (error) => console.warn(error),\n    });\n  }\n\n  function handleRefresh() {\n    setRefreshLoading(true);\n    setTableLoading(true);\n    views();\n  }\n\n  function handleSelect() {\n    setVisible(true);\n    setExpand(false);\n    setViewLogs(true);\n  }\n\n  const ValueWithLabel = ({ label, children }) => (\n    <div>\n      <div className=\"headings\">\n        <Box color=\"inherit\" fontSize=\"body-m\">\n          {label}\n        </Box>\n      </div>\n      <div>{children}</div>\n    </div>\n  );\n\n\n  function handleCreate() {\n    history.push(\"/requests/request\");\n    props.setActiveHref(\"/requests/request\");\n  }\n\n  function revoke() {\n    setRevokeLoading(true);\n    const data = {\n      id: selectedItems[0].id,\n      status: \"revoked\",\n      revokeComment: comment,\n    };\n    updateStatus(data).then(() => {\n      views();\n      props.addNotification([\n        {\n          type: \"success\",\n          content: \"Elevated access revoked\",\n          dismissible: true,\n          onDismiss: () => props.addNotification([]),\n        },\n      ]);\n    });\n  }\n  function handleRevoke() {\n    (!comment && commentRequired) || (comment && !(/[\\p{L}\\p{N}]/u.test(comment[0]))) ? setCommentError(\"Enter valid reason for revoking elevated access\") : revoke();\n  }\n\n  return (\n    <div className=\"container\">\n      <Table\n        {...collectionProps}\n        resizableColumns=\"true\"\n        loading={tableLoading}\n        loadingText=\"Fetching elevated access\"\n        // sortingColumn={SORT_COLUMN}\n        header={\n          <Header\n            counter={\n              selectedItems.length\n                ? `(${selectedItems.length}/${allItems.length})`\n                : `(${allItems.length})`\n            }\n            actions={\n              <SpaceBetween size=\"s\" direction=\"horizontal\">\n                <Button\n                  iconName=\"refresh\"\n                  onClick={handleRefresh}\n                  loading={refreshLoading}\n                />\n                <Button\n                  // variant=\"primary\"\n                  onClick={() => {\n                    setrevokeVisible(true)\n                    }}\n                  disabled={selectedItems.length === 0}\n                >\n                  Revoke\n                </Button>\n                <Button\n                  disabled={selectedItems.length === 0}\n                  variant=\"primary\"\n                  onClick={handleSelect}\n                >\n                  View details\n                </Button>\n              </SpaceBetween>\n            }\n            description=\"Scheduled or in-progress elevated access requests\"\n          >\n            Elevated access\n          </Header>\n        }\n        filter={\n          <div className=\"input-container\">\n            <TextFilter\n              {...filterProps}\n              filteringPlaceholder=\"Find elevated access\"\n              countText={filteredItemsCount}\n              className=\"input-filter\"\n            />\n            <Select\n              {...filterProps}\n              className=\"select-filter engine-filter\"\n              selectedAriaLabel=\"Selected\"\n              options={selectStatusOptions}\n              selectedOption={selectedOption}\n              onChange={({ detail }) =>\n                setSelectedOption(detail.selectedOption)\n              }\n              ariaDescribedby={null}\n            />\n          </div>\n        }\n        columnDefinitions={COLUMN_DEFINITIONS}\n        visibleColumns={preferences.visibleContent}\n        pagination={<Pagination {...paginationProps} />}\n        preferences={\n          <MyCollectionPreferences\n            preferences={preferences}\n            setPreferences={setPreferences}\n          />\n        }\n        items={items}\n        selectionType=\"single\"\n      />\n      <div>\n        {selectedItems.length ? (\n          <Modal\n            onDismiss={() => {\n              setVisible(false);\n              setExpand(true);\n              setViewLogs(false);\n            }}\n            visible={visible}\n            closeAriaLabel=\"Close modal\"\n            size=\"large\"\n            footer={\n              <Box float=\"right\">\n                <SpaceBetween direction=\"horizontal\" size=\"s\">\n                  <Button\n                    variant=\"link\"\n                    onClick={() => {\n                      setViewLogs(false);\n                      setVisible(false);\n                    }}\n                  >\n                    Cancel\n                  </Button>\n                  <Button\n                    variant=\"primary\"\n                    onClick={() => setrevokeVisible(true)}\n                    disabled={selectedItems.length === 0 && (props.user===selectedItems[0].email || selectedItems[0].approvers.includes(props.user))}\n                  >\n                    Revoke\n                  </Button>\n                </SpaceBetween>\n              </Box>\n            }\n            header=\"Elevated access details\"\n          >\n            <SpaceBetween size=\"s\">\n              <ColumnLayout columns={3} variant=\"text-grid\">\n                <SpaceBetween size=\"l\">\n                  <ValueWithLabel\n                    label=\"Requester\"\n                    children={`${selectedItems[0].email}`}\n                  />\n                  <ValueWithLabel label=\"Status\">\n                    <Status status={selectedItems[0].status} />\n                  </ValueWithLabel>\n                  <ValueWithLabel\n                    label=\"Justification\"\n                    children={`${selectedItems[0].justification}`}\n                  />\n                </SpaceBetween>\n                <SpaceBetween size=\"l\">\n                  <ValueWithLabel\n                    label=\"Account\"\n                    children={`${selectedItems[0].accountName} (${selectedItems[0].accountId})`}\n                  />\n                  <ValueWithLabel\n                    label=\"Role\"\n                    children={`${selectedItems[0].role}`}\n                  />\n                  <ValueWithLabel\n                    label=\"TicketNo\"\n                    children={`${selectedItems[0].ticketNo}`}\n                  />\n                </SpaceBetween>\n                <SpaceBetween size=\"l\">\n                  <ValueWithLabel\n                    label=\"Start time\"\n                    children={convertAwsDateTime(selectedItems[0].startTime)}\n                  />\n                  <ValueWithLabel\n                    label=\"Duration\"\n                    children={`${selectedItems[0].duration} Hours`}\n                  />\n                  <Timer item={selectedItems[0]} />\n                </SpaceBetween>\n              </ColumnLayout>\n\n              <div>\n                {selectedItems[0].approver && (\n                  <div>\n                    <Divider\n                      style={{ marginBottom: \"10px\", marginTop: \"10px\" }}\n                    />\n                    <ColumnLayout columns={3}>\n                      <SpaceBetween size=\"m\">\n                        <ValueWithLabel\n                          label=\"Approved by\"\n                          children={`${selectedItems[0].approver}`}\n                        />\n                        <ValueWithLabel\n                          label=\"Comments\"\n                          children={`${selectedItems[0].comment}`}\n                        />\n                      </SpaceBetween>\n                    </ColumnLayout>\n                  </div>\n                )}\n              </div>\n              {selectedItems[0].status === \"in progress\" && (\n                <div>\n                  <ExpandableSection\n                    variant=\"footer\"\n                    header=\"Session activity logs\"\n                    className=\"expanded\"\n                  >\n                    <div>{viewLogs && <Logs item={selectedItems[0]} />}</div>\n                  </ExpandableSection>\n                </div>\n              )}\n            </SpaceBetween>\n          </Modal>\n        ) : null}\n      </div>\n      <div>\n        {selectedItems.length ? (\n          <Modal\n            onDismiss={() => {\n              setrevokeVisible(false);\n              setComment()\n            }}\n            visible={revokeVisible}\n            closeAriaLabel=\"Close modal\"\n            size=\"large\"\n            footer={\n              <Box float=\"right\">\n                <SpaceBetween direction=\"horizontal\" size=\"s\">\n                  <Button\n                    variant=\"link\"\n                    onClick={() => {\n                      setrevokeVisible(false);\n                      setComment()\n                    }}\n                  >\n                    Cancel\n                  </Button>\n                  <Button\n                    variant=\"primary\"\n                    onClick={handleRevoke}\n                    loading={revokeLoading}\n                  >\n                    Confirm\n                  </Button>\n                </SpaceBetween>\n              </Box>\n            }\n            header=\"Revoke elevated access\"\n          >\n            <SpaceBetween size=\"m\">\n              <Details item={selectedItems[0]} status={expand} />\n              <Divider style={{ marginBottom: \"10px\", marginTop: \"10px\" }} />\n              <FormField\n                label=\"Revoke Comments\"\n                stretch\n                description=\"Revoked elevated access prevents users from invoking new session. Active sessions might remain valid until session duration expires\"\n                errorText={commentError}\n              >\n                <Textarea\n                  onChange={({ detail }) => {\n                    setCommentError();\n                    setComment(detail.value);\n                  }}\n                  value={comment}\n                />\n              </FormField>\n            </SpaceBetween>\n          </Modal>\n        ) : null}\n      </div>\n    </div>\n  );\n}\n\nexport default Active;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useState, useEffect } from \"react\";\nimport {\n  Box,\n  Button,\n  Header,\n  Pagination,\n  Table,\n  TextFilter,\n  SpaceBetween,\n  CollectionPreferences,\n  Modal,\n  ColumnLayout,\n  ExpandableSection,\n  Select,\n} from \"@awsui/components-react\";\nimport { useCollection } from \"@awsui/collection-hooks\";\nimport { Divider } from \"antd\";\nimport { sessions } from \"../Shared/RequestService\";\nimport { API, graphqlOperation } from \"aws-amplify\";\nimport { onUpdateRequests } from \"../../graphql/subscriptions\";\nimport Status from \"../Shared/Status\";\nimport \"../../index.css\";\nimport Logs from \"../Sessions/Logs\";\n\nfunction convertAwsDateTime(awsDateTime) {\n  // Parse AWS datetime string into a Date object\n  const date = new Date(awsDateTime);\n  // Format date in user-friendly format\n  const options = {\n    weekday: 'short',\n    day: 'numeric',\n    month: 'short',\n    hour: '2-digit',\n    minute: '2-digit'\n  };\n  const userFriendlyFormat = date.toLocaleString('en-US', options);\n  return userFriendlyFormat\n}\n\nconst COLUMN_DEFINITIONS = [\n  {\n    id: \"id\",\n    sortingField: \"id\",\n    header: \"Id\",\n    cell: (item) => item.id,\n    width: 50,\n  },\n  {\n    id: \"email\",\n    sortingField: \"email\",\n    header: \"Requester\",\n    cell: (item) => item.email,\n    minWidth: 160,\n  },\n  {\n    id: \"account\",\n    sortingField: \"account\",\n    header: \"Account\",\n    cell: (item) => item.accountName,\n    minWidth: 10,\n  },\n  {\n    id: \"role\",\n    sortingField: \"role\",\n    header: \"Role\",\n    cell: (item) => item.role,\n    minWidth: 10,\n  },\n  {\n    id: \"startTime\",\n    sortingField: \"startTime\",\n    header: \"StartTime\",\n    cell: (item) => convertAwsDateTime(item.startTime),\n    minWidth: 160,\n  },\n  {\n    id: \"endTime\",\n    sortingField: \"endTime\",\n    header: \"EndTime\",\n    cell: (item) => convertAwsDateTime(item.endTime),\n    minWidth: 10,\n  },\n  // {\n  //   id: \"duration\",\n  //   sortingField: \"duration\",\n  //   header: \"Duration\",\n  //   cell: (item) => `${item.duration} hours`,\n  //   maxWidth: 120,\n  // },\n  {\n    id: \"justification\",\n    sortingField: \"justification\",\n    header: \"Justification\",\n    cell: (item) => item.justification,\n    maxWidth: 200,\n  },\n  {\n    id: \"status\",\n    sortingField: \"status\",\n    header: \"Status\",\n    cell: (item) => <Status status={item.status} />,\n    minWidth: 10,\n  },\n];\n\nconst MyCollectionPreferences = ({ preferences, setPreferences }) => {\n  return (\n    <CollectionPreferences\n      title=\"Preferences\"\n      confirmLabel=\"Confirm\"\n      cancelLabel=\"Cancel\"\n      preferences={preferences}\n      onConfirm={({ detail }) => setPreferences(detail)}\n      pageSizePreference={{\n        title: \"Page size\",\n        options: [\n          { value: 10, label: \"10 Sessions\" },\n          { value: 30, label: \"30 Sessions\" },\n          { value: 50, label: \"50 Sessions\" },\n        ],\n      }}\n      wrapLinesPreference={{\n        label: \"Wrap lines\",\n        description: \"Check to see all the text and wrap the lines\",\n      }}\n      visibleContentPreference={{\n        title: \"Select visible columns\",\n        options: [\n          {\n            label: \"Sessions properties\",\n            options: [\n              // { id: \"id\", label: \"Id\", editable: false },\n              { id: \"email\", label: \"Requester\" },\n              { id: \"account\", label: \"Account\" },\n              { id: \"role\", label: \"Role\" },\n              // { id: \"duration\", label: \"Duration\" },\n              { id: \"startTime\", label: \"StartTime\" },\n              { id: \"justification\", label: \"Justification\" },\n              { id: \"endTime\", label: \"EndTime\" },\n              { id: \"status\", label: \"Status\" },\n            ],\n          },\n        ],\n      }}\n    />\n  );\n};\n\nfunction EmptyState({ title, subtitle, action }) {\n  return (\n    <Box textAlign=\"center\">\n      <Box variant=\"strong\">{title}</Box>\n      <Box variant=\"p\" padding={{ bottom: \"s\" }}>\n        {subtitle}\n      </Box>\n      {action}\n    </Box>\n  );\n}\n\nconst defaultStatus = {\n  label: \"All status\",\n  value: \"0\",\n};\n\nfunction Audit(props) {\n  const [allItems, setAllItems] = useState([]);\n  const [preferences, setPreferences] = useState({\n    pageSize: 10,\n    visibleContent: [\n      \"email\",\n      \"account\",\n      \"role\",\n      // \"duration\",\n      \"startTime\",\n      \"justification\",\n      \"endTime\",\n      \"status\",\n    ],\n  });\n\n  const [selectedOption, setSelectedOption] = useState(defaultStatus);\n  const selectStatusOptions = prepareSelectOptions(\"status\", defaultStatus);\n\n  function prepareSelectOptions(field, defaultOption) {\n    const optionSet = [];\n    // Building a non redundant list of the field passed as parameter.\n\n    allItems.forEach((item) => {\n      if (optionSet.indexOf(item[field]) === -1) {\n        optionSet.push(item[field]);\n      }\n    });\n    optionSet.sort();\n\n    // The first element is the default one.\n    const options = [defaultOption];\n\n    // Adding the other element ot the list.\n    optionSet.forEach((item, index) =>\n      options.push({ label: item, value: (index + 1).toString() })\n    );\n    return options;\n  }\n\n  function matchesStatus(item, selectedStatus) {\n    return (\n      selectedStatus === defaultStatus || item.status === selectedStatus.label\n    );\n  }\n\n  const SEARCHABLE_COLUMNS = COLUMN_DEFINITIONS.map((item) => item.id);\n  const {\n    items,\n    actions,\n    filteredItemsCount,\n    collectionProps,\n    filterProps,\n    paginationProps,\n  } = useCollection(allItems, {\n    filtering: {\n      filteringFunction: (item, filteringText) => {\n        if (!matchesStatus(item, selectedOption)) {\n          return false;\n        }\n        const filteringTextLowerCase = filteringText.toLowerCase();\n\n        return SEARCHABLE_COLUMNS.map((key) => item[key]).some(\n          (value) =>\n            typeof value === \"string\" &&\n            value.toLowerCase().indexOf(filteringTextLowerCase) > -1\n        );\n      },\n      empty: (\n        <EmptyState title=\"No elevated access\" subtitle=\"No elevated access to display.\" />\n      ),\n      noMatch: (\n        <EmptyState\n          title=\"No matches\"\n          subtitle=\"Your search didn't return any records.\"\n          action={\n            <Button onClick={() => actions.setFiltering(\"\")}>\n              Clear filter\n            </Button>\n          }\n        />\n      ),\n    },\n    pagination: { pageSize: preferences.pageSize },\n    sorting: {},\n    selection: {},\n  });\n\n  const { selectedItems } = collectionProps;\n  const [tableLoading, setTableLoading] = useState(true);\n  const [visible, setVisible] = useState(false);\n  const [refreshLoading, setRefreshLoading] = useState(false);\n  const [viewLogs, setViewLogs] = useState(false);\n\n  useEffect(() => {\n    views();\n    props.addNotification([]);\n    approveEvent();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  function views() {\n    let filter = {\n      and: [\n        {or: [{ status: { eq: \"ended\" } }, { status: { eq: \"revoked\" } }]},\n        {or: [{ email: { eq: props.user } }, { approvers: { contains: props.user } }]}\n      ]\n    };\n    sessions(filter).then((items) => {\n      items.sort((a, b) => (a.updatedAt < b.updatedAt ? 1 : -1));\n      setAllItems(items);\n      setTableLoading(false);\n      setRefreshLoading(false);\n    });\n  }\n\n  function approveEvent() {\n    API.graphql(graphqlOperation(onUpdateRequests)).subscribe({\n      next: ({ value }) => {\n        if (value.data.onUpdateRequests.status === \"ended\") views();\n      },\n      error: (error) => console.warn(error),\n    });\n  }\n\n  function handleRefresh() {\n    setRefreshLoading(true);\n    setTableLoading(true);\n    views();\n  }\n\n  function handleSelect() {\n    setVisible(true);\n    setViewLogs(true);\n  }\n\n  const ValueWithLabel = ({ label, children }) => (\n    <div>\n      <div className=\"headings\">\n        <Box color=\"inherit\" fontSize=\"body-m\">\n          {label}\n        </Box>\n      </div>\n      <div>{children}</div>\n    </div>\n  );\n\n  return (\n    <div className=\"container\">\n      <Table\n        {...collectionProps}\n        resizableColumns=\"true\"\n        loading={tableLoading}\n        loadingText=\"Fetching elevated access\"\n        // sortingColumn={SORT_COLUMN}\n        header={\n          <Header\n            counter={\n              selectedItems.length\n                ? `(${selectedItems.length}/${allItems.length})`\n                : `(${allItems.length})`\n            }\n            actions={\n              <SpaceBetween size=\"s\" direction=\"horizontal\">\n                <Button\n                  iconName=\"refresh\"\n                  onClick={handleRefresh}\n                  loading={refreshLoading}\n                />\n                <Button\n                  disabled={selectedItems.length === 0}\n                  onClick={handleSelect}\n                >\n                  View details\n                </Button>\n              </SpaceBetween>\n            }\n            description=\"Ended or revoked elevated access\"\n          >\n            Elevated access\n          </Header>\n        }\n        filter={\n          <div className=\"input-container\">\n            <TextFilter\n              {...filterProps}\n              filteringPlaceholder=\"Find elevated access\"\n              countText={filteredItemsCount}\n              className=\"input-filter\"\n            />\n            <Select\n              {...filterProps}\n              className=\"select-filter engine-filter\"\n              selectedAriaLabel=\"Selected\"\n              options={selectStatusOptions}\n              selectedOption={selectedOption}\n              onChange={({ detail }) =>\n                setSelectedOption(detail.selectedOption)\n              }\n              ariaDescribedby={null}\n            />\n          </div>\n        }\n        columnDefinitions={COLUMN_DEFINITIONS}\n        visibleColumns={preferences.visibleContent}\n        pagination={<Pagination {...paginationProps} />}\n        preferences={\n          <MyCollectionPreferences\n            preferences={preferences}\n            setPreferences={setPreferences}\n          />\n        }\n        items={items}\n        selectionType=\"single\"\n      />\n      <div>\n        {selectedItems.length ? (\n          <Modal\n            onDismiss={() => {\n              setVisible(false);\n              setViewLogs(false);\n            }}\n            visible={visible}\n            closeAriaLabel=\"Close modal\"\n            size=\"large\"\n            footer={\n              <Box float=\"right\">\n                <SpaceBetween direction=\"horizontal\" size=\"s\">\n                  <Button\n                    variant=\"link\"\n                    onClick={() => {\n                      setViewLogs(false);\n                      setVisible(false);\n                    }}\n                  >\n                    Cancel\n                  </Button>\n                </SpaceBetween>\n              </Box>\n            }\n            header=\"Elevated access details\"\n          >\n            <SpaceBetween size=\"s\">\n              <ColumnLayout columns={3} variant=\"text-grid\">\n                <SpaceBetween size=\"l\">\n                  <ValueWithLabel\n                    label=\"Requester\"\n                    children={`${selectedItems[0].email}`}\n                  />\n                  <ValueWithLabel label=\"Status\">\n                    <Status status={selectedItems[0].status} />\n                  </ValueWithLabel>\n                  <ValueWithLabel\n                    label=\"Justification\"\n                    children={`${selectedItems[0].justification}`}\n                  />\n                </SpaceBetween>\n                <SpaceBetween size=\"l\">\n                  <ValueWithLabel\n                    label=\"Account\"\n                    children={`${selectedItems[0].accountName} (${selectedItems[0].accountId})`}\n                  />\n                  <ValueWithLabel\n                    label=\"Role\"\n                    children={`${selectedItems[0].role}`}\n                  />\n                  <ValueWithLabel\n                    label=\"TicketNo\"\n                    children={`${selectedItems[0].ticketNo}`}\n                  />\n                </SpaceBetween>\n                <SpaceBetween size=\"l\">\n                  <ValueWithLabel\n                    label=\"Start Time\"\n                    children={convertAwsDateTime(selectedItems[0].startTime)}\n                  />\n                  <ValueWithLabel\n                    label=\"End Time\"\n                    children={convertAwsDateTime(selectedItems[0].endTime)}\n                  />\n                </SpaceBetween>\n              </ColumnLayout>\n              <Divider style={{ marginBottom: \"7px\", marginTop: \"7px\" }} />\n              <ColumnLayout columns={3}>\n                <SpaceBetween size=\"m\">\n                  <ValueWithLabel\n                    label=\"Approved by\"\n                    children={`${selectedItems[0].approver}`}\n                  />\n                  <ValueWithLabel\n                    label=\"Comments\"\n                    children={`${selectedItems[0].comment}`}\n                  />\n                </SpaceBetween>\n                <div>\n                  {selectedItems[0].status === \"revoked\" && (\n                    <SpaceBetween size=\"m\">\n                      <ValueWithLabel\n                        label={\n                          selectedItems[0].revoker === props.user\n                            ? \"Revoked by (requester)\"\n                            : \"Revoked by (approver)\"\n                        }\n                        children={`${selectedItems[0].revoker}`}\n                      />\n                      <ValueWithLabel\n                        label=\"Comments\"\n                        children={`${selectedItems[0].revokeComment}`}\n                      />\n                    </SpaceBetween>\n                  )}\n                </div>\n              </ColumnLayout>\n              <ExpandableSection\n                variant=\"footer\"\n                header=\"Session activity logs\"\n                className=\"expanded\"\n              >\n                <div>{viewLogs && <Logs item={selectedItems[0]} />}</div>\n              </ExpandableSection>\n            </SpaceBetween>\n          </Modal>\n        ) : null}\n      </div>\n    </div>\n  );\n}\n\nexport default Audit;\n","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useEffect, useState } from \"react\";\nimport AppLayout from \"@awsui/components-react/app-layout\";\nimport Navigation from \"./Navigation\";\nimport ToolsDrawer from \"./ToolsDrawer\";\nimport { BrowserRouter, Switch, Route } from \"react-router-dom\";\nimport Flashbar from \"@awsui/components-react/flashbar\";\nimport Request from \"../Requests/Request\";\nimport Approvals from \"../Approvals/Approvals\";\nimport Approvers from \"../Admin/Approvers\";\nimport Settings from \"../Admin/Settings\";\nimport View from \"../Requests/View\";\nimport Review from \"../Approvals/Review\";\nimport AuditApprovals from \"../Audit/AuditApprovals\";\nimport AuditSessions from \"../Audit/AuditSessions\";\nimport \"../../index.css\";\nimport Landing from \"./Landing\";\nimport Header from \"./Header\";\nimport Eligible from \"../Admin/Eligible\";\nimport Active from \"../Sessions/Active\";\nimport Audit from \"../Sessions/Audit\";\nimport { Amplify } from \"aws-amplify\";\nimport awsExports from \"../../aws-exports\";\nAmplify.configure(awsExports);\n\nfunction Nav(props) {\n  const [notifications, setNotifications] = useState([]);\n  const [activeHref, setActiveHref] = useState(\"/\");\n  const [cognitoGroups,setCognitoGroups] = useState([])\n  const [User, setUser] = useState();\n  const [group, setGroup] = useState();\n\n  async function fetchUser() {\n    try {\n      setUser(props.user.attributes.email);\n      setGroup(\n        props.groups\n      )\n      setCognitoGroups(props.cognitoGroups);\n    } catch (err) {\n      console.log(\"error fetching user data\");\n    }\n  }\n\n  useEffect(() => {\n    fetchUser();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  return (\n    <div>\n      {User ? (\n        <BrowserRouter>\n          <div id=\"b\">\n            <div id=\"h\">\n              <Header\n                user={User}\n                setActiveHref={setActiveHref}\n                addNotification={setNotifications}\n              />\n            </div>\n          </div>\n          <AppLayout\n            className=\"main\"\n            notifications={<Flashbar items={notifications} />}\n            navigation={\n              <Navigation\n                setActiveHref={setActiveHref}\n                active={activeHref}\n                user={User}\n                group={group}\n                cognitoGroups={cognitoGroups}\n              />\n            }\n            tools={<ToolsDrawer></ToolsDrawer>}\n            content={\n              <Switch>\n                <Route\n                  path=\"/\"\n                  exact={true}\n                  component={Landing}\n                  setActiveHref={setActiveHref}\n                />\n                <Route path=\"/requests/request\">\n                  <Request\n                    addNotification={setNotifications}\n                    setActiveHref={setActiveHref}\n                    user={User}\n                    group={group}\n                    userId={props.userId}\n                    groupIds={props.groupIds}\n                  />\n                </Route>\n                <Route path=\"/approvals/approve\">\n                  <Approvals\n                    addNotification={setNotifications}\n                    setActiveHref={setActiveHref}\n                    user={User}\n                    group={group}\n                  />\n                </Route>\n                <Route path=\"/approvals/view\">\n                  <Review\n                    addNotification={setNotifications}\n                    setActiveHref={setActiveHref}\n                    user={User}\n                    group={group}\n                  />\n                </Route>\n                <Route path=\"/requests/view\">\n                  <View\n                    addNotification={setNotifications}\n                    setActiveHref={setActiveHref}\n                    user={User}\n                    group={group}\n                  />\n                </Route>\n                <Route path=\"/sessions/audit\">\n                  <Audit\n                    addNotification={setNotifications}\n                    setActiveHref={setActiveHref}\n                    user={User}\n                    group={group}\n                  />\n                </Route>\n                <Route path=\"/sessions/active\">\n                  <Active\n                    addNotification={setNotifications}\n                    setActiveHref={setActiveHref}\n                    user={User}\n                    group={group}\n                  />\n                </Route>\n                {group && group.includes(\"Admin\") ? (\n                  <Route path=\"/admin/approvers\">\n                    <Approvers\n                      addNotification={setNotifications}\n                      setActiveHref={setActiveHref}\n                      user={User}\n                      group={group}\n                    />\n                  </Route>\n                ) : null}\n                {group && group.includes(\"Admin\") ? (\n                  <Route path=\"/admin/policy\">\n                    <Eligible\n                      addNotification={setNotifications}\n                      setActiveHref={setActiveHref}\n                      user={User}\n                      group={group}\n                    />\n                  </Route>\n                ) : null}\n                {group && group.includes(\"Admin\") ? (\n                  <Route path=\"/admin/settings\">\n                    <Settings\n                      addNotification={setNotifications}\n                      setActiveHref={setActiveHref}\n                      user={User}\n                      group={group}\n                    />\n                  </Route>\n                ) : null}\n                {group && group.includes(\"Auditors\") ? (\n                  <Route path=\"/audit/approvals\">\n                    <AuditApprovals\n                      addNotification={setNotifications}\n                      setActiveHref={setActiveHref}\n                      user={User}\n                      group={group}\n                    />\n                  </Route>\n                ) : null}\n                {group && group.includes(\"Auditors\") ? (\n                  <Route path=\"/audit/sessions\">\n                    <AuditSessions\n                      addNotification={setNotifications}\n                      setActiveHref={setActiveHref}\n                      user={User}\n                      group={group}\n                    />\n                  </Route>\n                ) : null}\n              </Switch>\n            }\n          />\n        </BrowserRouter>\n      ) : (\n        <> loading </>\n      )}\n    </div>\n  );\n}\n\n// export default withAuthenticator(App);\nexport default Nav;\n","var _rect, _path, _path2, _path3, _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgHome = (_ref, ref) => {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: 1440,\n    height: 1024,\n    viewBox: \"0 0 1440 1024\",\n    fill: \"none\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    ref: ref,\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n    width: 1440,\n    height: 1024,\n    fill: \"white\"\n  })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M74.648 207V184.6H77.016V207H74.648ZM79.4403 207L89.6803 184.6H92.0163L102.256 207H99.7603L90.3523 185.976H91.3123L81.9043 207H79.4403ZM83.4723 201.016L84.1763 199.096H97.2003L97.9043 201.016H83.4723ZM104.682 207V184.6H106.634L116.874 202.072H115.85L125.994 184.6H127.946V207H125.674V188.152H126.218L116.874 204.152H115.754L106.346 188.152H106.954V207H104.682ZM141.059 207V184.6H143.427V207H141.059ZM155.643 207.16C154.043 207.16 152.603 206.797 151.323 206.072C150.065 205.347 149.073 204.344 148.347 203.064C147.622 201.763 147.259 200.269 147.259 198.584C147.259 196.877 147.622 195.384 148.347 194.104C149.073 192.824 150.065 191.832 151.323 191.128C152.603 190.403 154.043 190.04 155.643 190.04C157.115 190.04 158.427 190.371 159.579 191.032C160.753 191.693 161.681 192.664 162.363 193.944C163.067 195.203 163.419 196.749 163.419 198.584C163.419 200.397 163.078 201.944 162.396 203.224C161.713 204.504 160.785 205.485 159.611 206.168C158.459 206.829 157.137 207.16 155.643 207.16ZM155.803 205.144C156.998 205.144 158.065 204.877 159.003 204.344C159.963 203.789 160.71 203.021 161.243 202.04C161.798 201.037 162.075 199.885 162.075 198.584C162.075 197.261 161.798 196.109 161.243 195.128C160.71 194.147 159.963 193.389 159.003 192.856C158.065 192.301 156.998 192.024 155.803 192.024C154.63 192.024 153.574 192.301 152.635 192.856C151.697 193.389 150.95 194.147 150.395 195.128C149.841 196.109 149.563 197.261 149.563 198.584C149.563 199.885 149.841 201.037 150.395 202.04C150.95 203.021 151.697 203.789 152.635 204.344C153.574 204.877 154.63 205.144 155.803 205.144ZM162.139 207V201.944L162.363 198.552L162.043 195.16V183.256H164.316V207H162.139ZM176.499 207.16C174.75 207.16 173.214 206.797 171.891 206.072C170.568 205.325 169.534 204.312 168.787 203.032C168.04 201.731 167.667 200.248 167.667 198.584C167.667 196.92 168.019 195.448 168.723 194.168C169.448 192.888 170.43 191.885 171.667 191.16C172.926 190.413 174.334 190.04 175.891 190.04C177.47 190.04 178.867 190.403 180.083 191.128C181.32 191.832 182.291 192.835 182.995 194.136C183.699 195.416 184.051 196.899 184.051 198.584C184.051 198.691 184.04 198.808 184.019 198.936C184.019 199.043 184.019 199.16 184.019 199.288H169.395V197.592H182.803L181.907 198.264C181.907 197.048 181.64 195.971 181.107 195.032C180.595 194.072 179.891 193.325 178.995 192.792C178.099 192.259 177.064 191.992 175.891 191.992C174.739 191.992 173.704 192.259 172.787 192.792C171.87 193.325 171.155 194.072 170.643 195.032C170.131 195.992 169.875 197.091 169.875 198.328V198.68C169.875 199.96 170.152 201.091 170.707 202.072C171.283 203.032 172.072 203.789 173.075 204.344C174.099 204.877 175.262 205.144 176.563 205.144C177.587 205.144 178.536 204.963 179.411 204.6C180.307 204.237 181.075 203.683 181.715 202.936L182.995 204.408C182.248 205.304 181.31 205.987 180.179 206.456C179.07 206.925 177.843 207.16 176.499 207.16ZM195.972 190.04C197.337 190.04 198.532 190.307 199.556 190.84C200.601 191.352 201.412 192.141 201.988 193.208C202.585 194.275 202.884 195.619 202.884 197.24V207H200.612V197.464C200.612 195.693 200.164 194.36 199.268 193.464C198.393 192.547 197.156 192.088 195.556 192.088C194.361 192.088 193.316 192.333 192.42 192.824C191.545 193.293 190.862 193.987 190.372 194.904C189.902 195.8 189.668 196.888 189.668 198.168V207H187.396V190.2H189.572V194.808L189.22 193.944C189.753 192.728 190.606 191.779 191.78 191.096C192.953 190.392 194.35 190.04 195.972 190.04ZM213.052 207.16C211.474 207.16 210.258 206.733 209.404 205.88C208.551 205.027 208.124 203.821 208.124 202.264V186.488H210.396V202.136C210.396 203.117 210.642 203.875 211.132 204.408C211.644 204.941 212.37 205.208 213.308 205.208C214.311 205.208 215.143 204.92 215.804 204.344L216.604 205.976C216.156 206.381 215.612 206.68 214.972 206.872C214.354 207.064 213.714 207.16 213.052 207.16ZM205.116 192.088V190.2H215.516V192.088H205.116ZM219.46 207V190.2H221.732V207H219.46ZM220.612 186.488C220.143 186.488 219.748 186.328 219.428 186.008C219.108 185.688 218.948 185.304 218.948 184.856C218.948 184.408 219.108 184.035 219.428 183.736C219.748 183.416 220.143 183.256 220.612 183.256C221.082 183.256 221.476 183.405 221.796 183.704C222.116 184.003 222.276 184.376 222.276 184.824C222.276 185.293 222.116 185.688 221.796 186.008C221.498 186.328 221.103 186.488 220.612 186.488ZM232.086 207.16C230.508 207.16 229.292 206.733 228.438 205.88C227.585 205.027 227.158 203.821 227.158 202.264V186.488H229.43V202.136C229.43 203.117 229.676 203.875 230.166 204.408C230.678 204.941 231.404 205.208 232.342 205.208C233.345 205.208 234.177 204.92 234.838 204.344L235.638 205.976C235.19 206.381 234.646 206.68 234.006 206.872C233.388 207.064 232.748 207.16 232.086 207.16ZM224.15 192.088V190.2H234.55V192.088H224.15ZM238.31 213.368C237.52 213.368 236.763 213.24 236.038 212.984C235.334 212.728 234.726 212.344 234.214 211.832L235.27 210.136C235.696 210.541 236.155 210.851 236.646 211.064C237.158 211.299 237.723 211.416 238.342 211.416C239.088 211.416 239.728 211.203 240.262 210.776C240.816 210.371 241.339 209.645 241.83 208.6L242.918 206.136L243.174 205.784L250.086 190.2H252.326L243.91 209.016C243.44 210.104 242.918 210.968 242.342 211.608C241.787 212.248 241.179 212.696 240.518 212.952C239.856 213.229 239.12 213.368 238.31 213.368ZM242.79 207.48L235.046 190.2H237.414L244.262 205.624L242.79 207.48ZM271.549 207.192C269.863 207.192 268.306 206.915 266.877 206.36C265.447 205.784 264.21 204.984 263.165 203.96C262.119 202.936 261.298 201.731 260.701 200.344C260.125 198.957 259.837 197.443 259.837 195.8C259.837 194.157 260.125 192.643 260.701 191.256C261.298 189.869 262.119 188.664 263.165 187.64C264.231 186.616 265.479 185.827 266.909 185.272C268.338 184.696 269.895 184.408 271.581 184.408C273.202 184.408 274.727 184.685 276.157 185.24C277.586 185.773 278.791 186.584 279.773 187.672L278.269 189.176C277.351 188.237 276.338 187.565 275.229 187.16C274.119 186.733 272.925 186.52 271.645 186.52C270.301 186.52 269.053 186.755 267.901 187.224C266.749 187.672 265.746 188.323 264.893 189.176C264.039 190.008 263.367 190.989 262.877 192.12C262.407 193.229 262.173 194.456 262.173 195.8C262.173 197.144 262.407 198.381 262.877 199.512C263.367 200.621 264.039 201.603 264.893 202.456C265.746 203.288 266.749 203.939 267.901 204.408C269.053 204.856 270.301 205.08 271.645 205.08C272.925 205.08 274.119 204.867 275.229 204.44C276.338 204.013 277.351 203.331 278.269 202.392L279.773 203.896C278.791 204.984 277.586 205.805 276.157 206.36C274.727 206.915 273.191 207.192 271.549 207.192ZM289.447 207.16C287.697 207.16 286.161 206.797 284.839 206.072C283.516 205.325 282.481 204.312 281.735 203.032C280.988 201.731 280.615 200.248 280.615 198.584C280.615 196.92 280.967 195.448 281.671 194.168C282.396 192.888 283.377 191.885 284.615 191.16C285.873 190.413 287.281 190.04 288.839 190.04C290.417 190.04 291.815 190.403 293.031 191.128C294.268 191.832 295.239 192.835 295.943 194.136C296.647 195.416 296.999 196.899 296.999 198.584C296.999 198.691 296.988 198.808 296.967 198.936C296.967 199.043 296.967 199.16 296.967 199.288H282.343V197.592H295.751L294.855 198.264C294.855 197.048 294.588 195.971 294.055 195.032C293.543 194.072 292.839 193.325 291.943 192.792C291.047 192.259 290.012 191.992 288.839 191.992C287.687 191.992 286.652 192.259 285.735 192.792C284.817 193.325 284.103 194.072 283.591 195.032C283.079 195.992 282.823 197.091 282.823 198.328V198.68C282.823 199.96 283.1 201.091 283.655 202.072C284.231 203.032 285.02 203.789 286.023 204.344C287.047 204.877 288.209 205.144 289.511 205.144C290.535 205.144 291.484 204.963 292.359 204.6C293.255 204.237 294.023 203.683 294.663 202.936L295.943 204.408C295.196 205.304 294.257 205.987 293.127 206.456C292.017 206.925 290.791 207.16 289.447 207.16ZM308.919 190.04C310.284 190.04 311.479 190.307 312.503 190.84C313.548 191.352 314.359 192.141 314.935 193.208C315.532 194.275 315.831 195.619 315.831 197.24V207H313.559V197.464C313.559 195.693 313.111 194.36 312.215 193.464C311.34 192.547 310.103 192.088 308.503 192.088C307.308 192.088 306.263 192.333 305.367 192.824C304.492 193.293 303.81 193.987 303.319 194.904C302.85 195.8 302.615 196.888 302.615 198.168V207H300.343V190.2H302.519V194.808L302.167 193.944C302.7 192.728 303.554 191.779 304.727 191.096C305.9 190.392 307.298 190.04 308.919 190.04ZM326 207.16C324.421 207.16 323.205 206.733 322.352 205.88C321.499 205.027 321.072 203.821 321.072 202.264V186.488H323.344V202.136C323.344 203.117 323.589 203.875 324.08 204.408C324.592 204.941 325.317 205.208 326.256 205.208C327.259 205.208 328.091 204.92 328.752 204.344L329.552 205.976C329.104 206.381 328.56 206.68 327.92 206.872C327.301 207.064 326.661 207.16 326 207.16ZM318.064 192.088V190.2H328.464V192.088H318.064ZM338.95 207.16C337.201 207.16 335.665 206.797 334.342 206.072C333.02 205.325 331.985 204.312 331.238 203.032C330.492 201.731 330.118 200.248 330.118 198.584C330.118 196.92 330.47 195.448 331.174 194.168C331.9 192.888 332.881 191.885 334.118 191.16C335.377 190.413 336.785 190.04 338.342 190.04C339.921 190.04 341.318 190.403 342.534 191.128C343.772 191.832 344.742 192.835 345.446 194.136C346.15 195.416 346.502 196.899 346.502 198.584C346.502 198.691 346.492 198.808 346.47 198.936C346.47 199.043 346.47 199.16 346.47 199.288H331.846V197.592H345.254L344.358 198.264C344.358 197.048 344.092 195.971 343.558 195.032C343.046 194.072 342.342 193.325 341.446 192.792C340.55 192.259 339.516 191.992 338.342 191.992C337.19 191.992 336.156 192.259 335.238 192.792C334.321 193.325 333.606 194.072 333.094 195.032C332.582 195.992 332.326 197.091 332.326 198.328V198.68C332.326 199.96 332.604 201.091 333.158 202.072C333.734 203.032 334.524 203.789 335.526 204.344C336.55 204.877 337.713 205.144 339.014 205.144C340.038 205.144 340.988 204.963 341.862 204.6C342.758 204.237 343.526 203.683 344.166 202.936L345.446 204.408C344.7 205.304 343.761 205.987 342.63 206.456C341.521 206.925 340.294 207.16 338.95 207.16ZM349.847 207V190.2H352.023V194.776L351.799 193.976C352.268 192.696 353.057 191.725 354.167 191.064C355.276 190.381 356.652 190.04 358.295 190.04V192.248C358.209 192.248 358.124 192.248 358.039 192.248C357.953 192.227 357.868 192.216 357.783 192.216C356.012 192.216 354.625 192.76 353.623 193.848C352.62 194.915 352.119 196.44 352.119 198.424V207H349.847Z\",\n    fill: \"#303031\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M86 278V239.84H71.24V236H105.2V239.84H90.44V278H86ZM121.492 278.3C118.212 278.3 115.332 277.62 112.852 276.26C110.372 274.86 108.432 272.96 107.032 270.56C105.632 268.12 104.932 265.34 104.932 262.22C104.932 259.1 105.592 256.34 106.912 253.94C108.272 251.54 110.112 249.66 112.432 248.3C114.792 246.9 117.432 246.2 120.352 246.2C123.312 246.2 125.932 246.88 128.212 248.24C130.532 249.56 132.352 251.44 133.672 253.88C134.992 256.28 135.652 259.06 135.652 262.22C135.652 262.42 135.632 262.64 135.592 262.88C135.592 263.08 135.592 263.3 135.592 263.54H108.172V260.36H133.312L131.632 261.62C131.632 259.34 131.132 257.32 130.132 255.56C129.172 253.76 127.852 252.36 126.172 251.36C124.492 250.36 122.552 249.86 120.352 249.86C118.192 249.86 116.252 250.36 114.532 251.36C112.812 252.36 111.472 253.76 110.512 255.56C109.552 257.36 109.072 259.42 109.072 261.74V262.4C109.072 264.8 109.592 266.92 110.632 268.76C111.712 270.56 113.192 271.98 115.072 273.02C116.992 274.02 119.172 274.52 121.612 274.52C123.532 274.52 125.312 274.18 126.952 273.5C128.632 272.82 130.072 271.78 131.272 270.38L133.672 273.14C132.272 274.82 130.512 276.1 128.392 276.98C126.312 277.86 124.012 278.3 121.492 278.3ZM183.683 246.2C186.243 246.2 188.463 246.7 190.343 247.7C192.263 248.66 193.743 250.14 194.783 252.14C195.863 254.14 196.403 256.66 196.403 259.7V278H192.143V260.12C192.143 256.8 191.343 254.3 189.743 252.62C188.183 250.9 185.963 250.04 183.083 250.04C180.923 250.04 179.043 250.5 177.443 251.42C175.883 252.3 174.663 253.6 173.783 255.32C172.943 257 172.523 259.04 172.523 261.44V278H168.263V260.12C168.263 256.8 167.463 254.3 165.863 252.62C164.263 250.9 162.023 250.04 159.143 250.04C157.023 250.04 155.163 250.5 153.563 251.42C151.963 252.3 150.723 253.6 149.843 255.32C149.003 257 148.583 259.04 148.583 261.44V278H144.323V246.5H148.403V255.02L147.743 253.52C148.703 251.24 150.243 249.46 152.363 248.18C154.523 246.86 157.063 246.2 159.983 246.2C163.063 246.2 165.683 246.98 167.843 248.54C170.003 250.06 171.403 252.36 172.043 255.44L170.363 254.78C171.283 252.22 172.903 250.16 175.223 248.6C177.583 247 180.403 246.2 183.683 246.2ZM224.216 278.3C221.496 278.3 219.036 277.68 216.836 276.44C214.636 275.16 212.876 273.34 211.556 270.98C210.276 268.58 209.636 265.66 209.636 262.22C209.636 258.78 210.276 255.88 211.556 253.52C212.836 251.12 214.576 249.3 216.776 248.06C218.976 246.82 221.456 246.2 224.216 246.2C227.216 246.2 229.896 246.88 232.256 248.24C234.656 249.56 236.536 251.44 237.896 253.88C239.256 256.28 239.936 259.06 239.936 262.22C239.936 265.42 239.256 268.22 237.896 270.62C236.536 273.02 234.656 274.9 232.256 276.26C229.896 277.62 227.216 278.3 224.216 278.3ZM207.956 289.64V246.5H212.036V255.98L211.616 262.28L212.216 268.64V289.64H207.956ZM223.916 274.52C226.156 274.52 228.156 274.02 229.916 273.02C231.676 271.98 233.076 270.54 234.116 268.7C235.156 266.82 235.676 264.66 235.676 262.22C235.676 259.78 235.156 257.64 234.116 255.8C233.076 253.96 231.676 252.52 229.916 251.48C228.156 250.44 226.156 249.92 223.916 249.92C221.676 249.92 219.656 250.44 217.856 251.48C216.096 252.52 214.696 253.96 213.656 255.8C212.656 257.64 212.156 259.78 212.156 262.22C212.156 264.66 212.656 266.82 213.656 268.7C214.696 270.54 216.096 271.98 217.856 273.02C219.656 274.02 221.676 274.52 223.916 274.52ZM261.46 278.3C258.42 278.3 255.68 277.62 253.24 276.26C250.84 274.86 248.94 272.96 247.54 270.56C246.14 268.12 245.44 265.34 245.44 262.22C245.44 259.06 246.14 256.28 247.54 253.88C248.94 251.48 250.84 249.6 253.24 248.24C255.64 246.88 258.38 246.2 261.46 246.2C264.58 246.2 267.34 246.88 269.74 248.24C272.18 249.6 274.08 251.48 275.44 253.88C276.84 256.28 277.54 259.06 277.54 262.22C277.54 265.34 276.84 268.12 275.44 270.56C274.08 272.96 272.18 274.86 269.74 276.26C267.3 277.62 264.54 278.3 261.46 278.3ZM261.46 274.52C263.74 274.52 265.76 274.02 267.52 273.02C269.28 271.98 270.66 270.54 271.66 268.7C272.7 266.82 273.22 264.66 273.22 262.22C273.22 259.74 272.7 257.58 271.66 255.74C270.66 253.9 269.28 252.48 267.52 251.48C265.76 250.44 263.76 249.92 261.52 249.92C259.28 249.92 257.28 250.44 255.52 251.48C253.76 252.48 252.36 253.9 251.32 255.74C250.28 257.58 249.76 259.74 249.76 262.22C249.76 264.66 250.28 266.82 251.32 268.7C252.36 270.54 253.76 271.98 255.52 273.02C257.28 274.02 259.26 274.52 261.46 274.52ZM286.237 278V246.5H290.317V255.08L289.897 253.58C290.777 251.18 292.257 249.36 294.337 248.12C296.417 246.84 298.997 246.2 302.077 246.2V250.34C301.917 250.34 301.757 250.34 301.597 250.34C301.437 250.3 301.277 250.28 301.117 250.28C297.797 250.28 295.197 251.3 293.317 253.34C291.437 255.34 290.497 258.2 290.497 261.92V278H286.237ZM327.246 278V271.04L327.066 269.9V258.26C327.066 255.58 326.306 253.52 324.786 252.08C323.306 250.64 321.086 249.92 318.126 249.92C316.086 249.92 314.146 250.26 312.306 250.94C310.466 251.62 308.906 252.52 307.626 253.64L305.706 250.46C307.306 249.1 309.226 248.06 311.466 247.34C313.706 246.58 316.066 246.2 318.546 246.2C322.626 246.2 325.766 247.22 327.966 249.26C330.206 251.26 331.326 254.32 331.326 258.44V278H327.246ZM316.386 278.3C314.026 278.3 311.966 277.92 310.206 277.16C308.486 276.36 307.166 275.28 306.246 273.92C305.326 272.52 304.866 270.92 304.866 269.12C304.866 267.48 305.246 266 306.006 264.68C306.806 263.32 308.086 262.24 309.846 261.44C311.646 260.6 314.046 260.18 317.046 260.18H327.906V263.36H317.166C314.126 263.36 312.006 263.9 310.806 264.98C309.646 266.06 309.066 267.4 309.066 269C309.066 270.8 309.766 272.24 311.166 273.32C312.566 274.4 314.526 274.94 317.046 274.94C319.446 274.94 321.506 274.4 323.226 273.32C324.986 272.2 326.266 270.6 327.066 268.52L328.026 271.46C327.226 273.54 325.826 275.2 323.826 276.44C321.866 277.68 319.386 278.3 316.386 278.3ZM342.897 278V246.5H346.977V255.08L346.557 253.58C347.437 251.18 348.917 249.36 350.997 248.12C353.077 246.84 355.657 246.2 358.737 246.2V250.34C358.577 250.34 358.417 250.34 358.257 250.34C358.097 250.3 357.937 250.28 357.777 250.28C354.457 250.28 351.857 251.3 349.977 253.34C348.097 255.34 347.157 258.2 347.157 261.92V278H342.897ZM368.098 289.94C366.618 289.94 365.198 289.7 363.838 289.22C362.518 288.74 361.378 288.02 360.418 287.06L362.398 283.88C363.198 284.64 364.058 285.22 364.978 285.62C365.938 286.06 366.998 286.28 368.158 286.28C369.558 286.28 370.758 285.88 371.758 285.08C372.798 284.32 373.778 282.96 374.698 281L376.738 276.38L377.218 275.72L390.178 246.5H394.378L378.598 281.78C377.718 283.82 376.738 285.44 375.658 286.64C374.618 287.84 373.478 288.68 372.238 289.16C370.998 289.68 369.618 289.94 368.098 289.94ZM376.498 278.9L361.978 246.5H366.418L379.258 275.42L376.498 278.9ZM420.941 254.78H443.141V258.56H420.941V254.78ZM421.421 274.16H446.681V278H416.981V236H445.781V239.84H421.421V274.16ZM456.217 278V233.48H460.477V278H456.217ZM485.711 278.3C482.431 278.3 479.551 277.62 477.071 276.26C474.591 274.86 472.651 272.96 471.251 270.56C469.851 268.12 469.151 265.34 469.151 262.22C469.151 259.1 469.811 256.34 471.131 253.94C472.491 251.54 474.331 249.66 476.651 248.3C479.011 246.9 481.651 246.2 484.571 246.2C487.531 246.2 490.151 246.88 492.431 248.24C494.751 249.56 496.571 251.44 497.891 253.88C499.211 256.28 499.871 259.06 499.871 262.22C499.871 262.42 499.851 262.64 499.811 262.88C499.811 263.08 499.811 263.3 499.811 263.54H472.391V260.36H497.531L495.851 261.62C495.851 259.34 495.351 257.32 494.351 255.56C493.391 253.76 492.071 252.36 490.391 251.36C488.711 250.36 486.771 249.86 484.571 249.86C482.411 249.86 480.471 250.36 478.751 251.36C477.031 252.36 475.691 253.76 474.731 255.56C473.771 257.36 473.291 259.42 473.291 261.74V262.4C473.291 264.8 473.811 266.92 474.851 268.76C475.931 270.56 477.411 271.98 479.291 273.02C481.211 274.02 483.391 274.52 485.831 274.52C487.751 274.52 489.531 274.18 491.171 273.5C492.851 272.82 494.291 271.78 495.491 270.38L497.891 273.14C496.491 274.82 494.731 276.1 492.611 276.98C490.531 277.86 488.231 278.3 485.711 278.3ZM516.056 278L502.076 246.5H506.516L519.356 275.72H517.256L530.276 246.5H534.476L520.436 278H516.056ZM559.278 278V271.04L559.098 269.9V258.26C559.098 255.58 558.338 253.52 556.818 252.08C555.338 250.64 553.118 249.92 550.158 249.92C548.118 249.92 546.178 250.26 544.338 250.94C542.498 251.62 540.938 252.52 539.658 253.64L537.738 250.46C539.338 249.1 541.258 248.06 543.498 247.34C545.738 246.58 548.098 246.2 550.578 246.2C554.658 246.2 557.798 247.22 559.998 249.26C562.238 251.26 563.358 254.32 563.358 258.44V278H559.278ZM548.418 278.3C546.058 278.3 543.998 277.92 542.238 277.16C540.518 276.36 539.198 275.28 538.278 273.92C537.358 272.52 536.898 270.92 536.898 269.12C536.898 267.48 537.278 266 538.038 264.68C538.838 263.32 540.118 262.24 541.878 261.44C543.678 260.6 546.078 260.18 549.078 260.18H559.938V263.36H549.198C546.158 263.36 544.038 263.9 542.838 264.98C541.678 266.06 541.098 267.4 541.098 269C541.098 270.8 541.798 272.24 543.198 273.32C544.598 274.4 546.558 274.94 549.078 274.94C551.478 274.94 553.538 274.4 555.258 273.32C557.018 272.2 558.298 270.6 559.098 268.52L560.058 271.46C559.258 273.54 557.858 275.2 555.858 276.44C553.898 277.68 551.418 278.3 548.418 278.3ZM584.888 278.3C581.928 278.3 579.648 277.5 578.048 275.9C576.448 274.3 575.648 272.04 575.648 269.12V239.54H579.908V268.88C579.908 270.72 580.368 272.14 581.288 273.14C582.248 274.14 583.608 274.64 585.368 274.64C587.248 274.64 588.808 274.1 590.048 273.02L591.548 276.08C590.708 276.84 589.688 277.4 588.488 277.76C587.328 278.12 586.128 278.3 584.888 278.3ZM570.008 250.04V246.5H589.508V250.04H570.008ZM611.57 278.3C608.29 278.3 605.41 277.62 602.93 276.26C600.45 274.86 598.51 272.96 597.11 270.56C595.71 268.12 595.01 265.34 595.01 262.22C595.01 259.1 595.67 256.34 596.99 253.94C598.35 251.54 600.19 249.66 602.51 248.3C604.87 246.9 607.51 246.2 610.43 246.2C613.39 246.2 616.01 246.88 618.29 248.24C620.61 249.56 622.43 251.44 623.75 253.88C625.07 256.28 625.73 259.06 625.73 262.22C625.73 262.42 625.71 262.64 625.67 262.88C625.67 263.08 625.67 263.3 625.67 263.54H598.25V260.36H623.39L621.71 261.62C621.71 259.34 621.21 257.32 620.21 255.56C619.25 253.76 617.93 252.36 616.25 251.36C614.57 250.36 612.63 249.86 610.43 249.86C608.27 249.86 606.33 250.36 604.61 251.36C602.89 252.36 601.55 253.76 600.59 255.56C599.63 257.36 599.15 259.42 599.15 261.74V262.4C599.15 264.8 599.67 266.92 600.71 268.76C601.79 270.56 603.27 271.98 605.15 273.02C607.07 274.02 609.25 274.52 611.69 274.52C613.61 274.52 615.39 274.18 617.03 273.5C618.71 272.82 620.15 271.78 621.35 270.38L623.75 273.14C622.35 274.82 620.59 276.1 618.47 276.98C616.39 277.86 614.09 278.3 611.57 278.3ZM646.941 278.3C643.941 278.3 641.241 277.62 638.841 276.26C636.481 274.9 634.621 273.02 633.261 270.62C631.901 268.18 631.221 265.38 631.221 262.22C631.221 259.02 631.901 256.22 633.261 253.82C634.621 251.42 636.481 249.56 638.841 248.24C641.241 246.88 643.941 246.2 646.941 246.2C649.701 246.2 652.161 246.82 654.321 248.06C656.521 249.3 658.261 251.12 659.541 253.52C660.861 255.88 661.521 258.78 661.521 262.22C661.521 265.62 660.881 268.52 659.601 270.92C658.321 273.32 656.581 275.16 654.381 276.44C652.221 277.68 649.741 278.3 646.941 278.3ZM647.241 274.52C649.481 274.52 651.481 274.02 653.241 273.02C655.041 271.98 656.441 270.54 657.441 268.7C658.481 266.82 659.001 264.66 659.001 262.22C659.001 259.74 658.481 257.58 657.441 255.74C656.441 253.9 655.041 252.48 653.241 251.48C651.481 250.44 649.481 249.92 647.241 249.92C645.041 249.92 643.061 250.44 641.301 251.48C639.541 252.48 638.141 253.9 637.101 255.74C636.061 257.58 635.541 259.74 635.541 262.22C635.541 264.66 636.061 266.82 637.101 268.7C638.141 270.54 639.541 271.98 641.301 273.02C643.061 274.02 645.041 274.52 647.241 274.52ZM659.121 278V268.52L659.541 262.16L658.941 255.8V233.48H663.201V278H659.121ZM71.12 358L90.32 316H94.7L113.9 358H109.22L91.58 318.58H93.38L75.74 358H71.12ZM78.68 346.78L80 343.18H104.42L105.74 346.78H78.68ZM132.735 358.3C129.615 358.3 126.815 357.62 124.335 356.26C121.895 354.86 119.975 352.96 118.575 350.56C117.175 348.12 116.475 345.34 116.475 342.22C116.475 339.06 117.175 336.28 118.575 333.88C119.975 331.48 121.895 329.6 124.335 328.24C126.815 326.88 129.615 326.2 132.735 326.2C135.415 326.2 137.835 326.72 139.995 327.76C142.155 328.8 143.855 330.36 145.095 332.44L141.915 334.6C140.835 333 139.495 331.82 137.895 331.06C136.295 330.3 134.555 329.92 132.675 329.92C130.435 329.92 128.415 330.44 126.615 331.48C124.815 332.48 123.395 333.9 122.355 335.74C121.315 337.58 120.795 339.74 120.795 342.22C120.795 344.7 121.315 346.86 122.355 348.7C123.395 350.54 124.815 351.98 126.615 353.02C128.415 354.02 130.435 354.52 132.675 354.52C134.555 354.52 136.295 354.14 137.895 353.38C139.495 352.62 140.835 351.46 141.915 349.9L145.095 352.06C143.855 354.1 142.155 355.66 139.995 356.74C137.835 357.78 135.415 358.3 132.735 358.3ZM166.016 358.3C162.896 358.3 160.096 357.62 157.616 356.26C155.176 354.86 153.256 352.96 151.856 350.56C150.456 348.12 149.756 345.34 149.756 342.22C149.756 339.06 150.456 336.28 151.856 333.88C153.256 331.48 155.176 329.6 157.616 328.24C160.096 326.88 162.896 326.2 166.016 326.2C168.696 326.2 171.116 326.72 173.276 327.76C175.436 328.8 177.136 330.36 178.376 332.44L175.196 334.6C174.116 333 172.776 331.82 171.176 331.06C169.576 330.3 167.836 329.92 165.956 329.92C163.716 329.92 161.696 330.44 159.896 331.48C158.096 332.48 156.676 333.9 155.636 335.74C154.596 337.58 154.076 339.74 154.076 342.22C154.076 344.7 154.596 346.86 155.636 348.7C156.676 350.54 158.096 351.98 159.896 353.02C161.696 354.02 163.716 354.52 165.956 354.52C167.836 354.52 169.576 354.14 171.176 353.38C172.776 352.62 174.116 351.46 175.196 349.9L178.376 352.06C177.136 354.1 175.436 355.66 173.276 356.74C171.116 357.78 168.696 358.3 166.016 358.3ZM199.597 358.3C196.317 358.3 193.437 357.62 190.957 356.26C188.477 354.86 186.537 352.96 185.137 350.56C183.737 348.12 183.037 345.34 183.037 342.22C183.037 339.1 183.697 336.34 185.017 333.94C186.377 331.54 188.217 329.66 190.537 328.3C192.897 326.9 195.537 326.2 198.457 326.2C201.417 326.2 204.037 326.88 206.317 328.24C208.637 329.56 210.457 331.44 211.777 333.88C213.097 336.28 213.757 339.06 213.757 342.22C213.757 342.42 213.737 342.64 213.697 342.88C213.697 343.08 213.697 343.3 213.697 343.54H186.277V340.36H211.417L209.737 341.62C209.737 339.34 209.237 337.32 208.237 335.56C207.277 333.76 205.957 332.36 204.277 331.36C202.597 330.36 200.657 329.86 198.457 329.86C196.297 329.86 194.357 330.36 192.637 331.36C190.917 332.36 189.577 333.76 188.617 335.56C187.657 337.36 187.177 339.42 187.177 341.74V342.4C187.177 344.8 187.697 346.92 188.737 348.76C189.817 350.56 191.297 351.98 193.177 353.02C195.097 354.02 197.277 354.52 199.717 354.52C201.637 354.52 203.417 354.18 205.057 353.5C206.737 352.82 208.177 351.78 209.377 350.38L211.777 353.14C210.377 354.82 208.617 356.1 206.497 356.98C204.417 357.86 202.117 358.3 199.597 358.3ZM230.888 358.3C228.288 358.3 225.828 357.94 223.508 357.22C221.188 356.46 219.368 355.52 218.048 354.4L219.968 351.04C221.248 352 222.888 352.84 224.888 353.56C226.888 354.24 228.988 354.58 231.188 354.58C234.188 354.58 236.348 354.12 237.668 353.2C238.988 352.24 239.648 350.98 239.648 349.42C239.648 348.26 239.268 347.36 238.508 346.72C237.788 346.04 236.828 345.54 235.628 345.22C234.428 344.86 233.088 344.56 231.608 344.32C230.128 344.08 228.648 343.8 227.168 343.48C225.728 343.16 224.408 342.7 223.208 342.1C222.008 341.46 221.028 340.6 220.268 339.52C219.548 338.44 219.188 337 219.188 335.2C219.188 333.48 219.668 331.94 220.628 330.58C221.588 329.22 222.988 328.16 224.828 327.4C226.708 326.6 228.988 326.2 231.668 326.2C233.708 326.2 235.748 326.48 237.788 327.04C239.828 327.56 241.508 328.26 242.828 329.14L240.968 332.56C239.568 331.6 238.068 330.92 236.468 330.52C234.868 330.08 233.268 329.86 231.668 329.86C228.828 329.86 226.728 330.36 225.368 331.36C224.048 332.32 223.388 333.56 223.388 335.08C223.388 336.28 223.748 337.22 224.468 337.9C225.228 338.58 226.208 339.12 227.408 339.52C228.648 339.88 229.988 340.18 231.428 340.42C232.908 340.66 234.368 340.96 235.808 341.32C237.288 341.64 238.628 342.1 239.828 342.7C241.068 343.26 242.048 344.08 242.768 345.16C243.528 346.2 243.908 347.58 243.908 349.3C243.908 351.14 243.388 352.74 242.348 354.1C241.348 355.42 239.868 356.46 237.908 357.22C235.988 357.94 233.648 358.3 230.888 358.3ZM260.185 358.3C257.585 358.3 255.125 357.94 252.805 357.22C250.485 356.46 248.665 355.52 247.345 354.4L249.265 351.04C250.545 352 252.185 352.84 254.185 353.56C256.185 354.24 258.285 354.58 260.485 354.58C263.485 354.58 265.645 354.12 266.965 353.2C268.285 352.24 268.945 350.98 268.945 349.42C268.945 348.26 268.565 347.36 267.805 346.72C267.085 346.04 266.125 345.54 264.925 345.22C263.725 344.86 262.385 344.56 260.905 344.32C259.425 344.08 257.945 343.8 256.465 343.48C255.025 343.16 253.705 342.7 252.505 342.1C251.305 341.46 250.325 340.6 249.565 339.52C248.845 338.44 248.485 337 248.485 335.2C248.485 333.48 248.965 331.94 249.925 330.58C250.885 329.22 252.285 328.16 254.125 327.4C256.005 326.6 258.285 326.2 260.965 326.2C263.005 326.2 265.045 326.48 267.085 327.04C269.125 327.56 270.805 328.26 272.125 329.14L270.265 332.56C268.865 331.6 267.365 330.92 265.765 330.52C264.165 330.08 262.565 329.86 260.965 329.86C258.125 329.86 256.025 330.36 254.665 331.36C253.345 332.32 252.685 333.56 252.685 335.08C252.685 336.28 253.045 337.22 253.765 337.9C254.525 338.58 255.505 339.12 256.705 339.52C257.945 339.88 259.285 340.18 260.725 340.42C262.205 340.66 263.665 340.96 265.105 341.32C266.585 341.64 267.925 342.1 269.125 342.7C270.365 343.26 271.345 344.08 272.065 345.16C272.825 346.2 273.205 347.58 273.205 349.3C273.205 351.14 272.685 352.74 271.645 354.1C270.645 355.42 269.165 356.46 267.205 357.22C265.285 357.94 262.945 358.3 260.185 358.3ZM297.625 358V316H301.285L320.485 348.76H318.565L337.585 316H341.245V358H336.985V322.66H338.005L320.485 352.66H318.385L300.745 322.66H301.885V358H297.625ZM373.77 358V351.04L373.59 349.9V338.26C373.59 335.58 372.83 333.52 371.31 332.08C369.83 330.64 367.61 329.92 364.65 329.92C362.61 329.92 360.67 330.26 358.83 330.94C356.99 331.62 355.43 332.52 354.15 333.64L352.23 330.46C353.83 329.1 355.75 328.06 357.99 327.34C360.23 326.58 362.59 326.2 365.07 326.2C369.15 326.2 372.29 327.22 374.49 329.26C376.73 331.26 377.85 334.32 377.85 338.44V358H373.77ZM362.91 358.3C360.55 358.3 358.49 357.92 356.73 357.16C355.01 356.36 353.69 355.28 352.77 353.92C351.85 352.52 351.39 350.92 351.39 349.12C351.39 347.48 351.77 346 352.53 344.68C353.33 343.32 354.61 342.24 356.37 341.44C358.17 340.6 360.57 340.18 363.57 340.18H374.43V343.36H363.69C360.65 343.36 358.53 343.9 357.33 344.98C356.17 346.06 355.59 347.4 355.59 349C355.59 350.8 356.29 352.24 357.69 353.32C359.09 354.4 361.05 354.94 363.57 354.94C365.97 354.94 368.03 354.4 369.75 353.32C371.51 352.2 372.79 350.6 373.59 348.52L374.55 351.46C373.75 353.54 372.35 355.2 370.35 356.44C368.39 357.68 365.91 358.3 362.91 358.3ZM405.5 326.2C408.06 326.2 410.3 326.7 412.22 327.7C414.18 328.66 415.7 330.14 416.78 332.14C417.9 334.14 418.46 336.66 418.46 339.7V358H414.2V340.12C414.2 336.8 413.36 334.3 411.68 332.62C410.04 330.9 407.72 330.04 404.72 330.04C402.48 330.04 400.52 330.5 398.84 331.42C397.2 332.3 395.92 333.6 395 335.32C394.12 337 393.68 339.04 393.68 341.44V358H389.42V326.5H393.5V335.14L392.84 333.52C393.84 331.24 395.44 329.46 397.64 328.18C399.84 326.86 402.46 326.2 405.5 326.2ZM449.707 358V351.04L449.527 349.9V338.26C449.527 335.58 448.767 333.52 447.247 332.08C445.767 330.64 443.547 329.92 440.587 329.92C438.547 329.92 436.607 330.26 434.767 330.94C432.927 331.62 431.367 332.52 430.087 333.64L428.167 330.46C429.767 329.1 431.687 328.06 433.927 327.34C436.167 326.58 438.527 326.2 441.007 326.2C445.087 326.2 448.227 327.22 450.427 329.26C452.667 331.26 453.787 334.32 453.787 338.44V358H449.707ZM438.847 358.3C436.487 358.3 434.427 357.92 432.667 357.16C430.947 356.36 429.627 355.28 428.707 353.92C427.787 352.52 427.327 350.92 427.327 349.12C427.327 347.48 427.707 346 428.467 344.68C429.267 343.32 430.547 342.24 432.307 341.44C434.107 340.6 436.507 340.18 439.507 340.18H450.367V343.36H439.627C436.587 343.36 434.467 343.9 433.267 344.98C432.107 346.06 431.527 347.4 431.527 349C431.527 350.8 432.227 352.24 433.627 353.32C435.027 354.4 436.987 354.94 439.507 354.94C441.907 354.94 443.967 354.4 445.687 353.32C447.447 352.2 448.727 350.6 449.527 348.52L450.487 351.46C449.687 353.54 448.287 355.2 446.287 356.44C444.327 357.68 441.847 358.3 438.847 358.3ZM478.798 369.94C475.918 369.94 473.158 369.52 470.518 368.68C467.878 367.84 465.738 366.64 464.098 365.08L466.258 361.84C467.738 363.16 469.558 364.2 471.718 364.96C473.918 365.76 476.238 366.16 478.678 366.16C482.678 366.16 485.618 365.22 487.498 363.34C489.378 361.5 490.318 358.62 490.318 354.7V346.84L490.918 341.44L490.498 336.04V326.5H494.578V354.16C494.578 359.6 493.238 363.58 490.558 366.1C487.918 368.66 483.998 369.94 478.798 369.94ZM478.018 356.8C475.018 356.8 472.318 356.16 469.918 354.88C467.518 353.56 465.618 351.74 464.218 349.42C462.858 347.1 462.178 344.44 462.178 341.44C462.178 338.44 462.858 335.8 464.218 333.52C465.618 331.2 467.518 329.4 469.918 328.12C472.318 326.84 475.018 326.2 478.018 326.2C480.818 326.2 483.338 326.78 485.578 327.94C487.818 329.1 489.598 330.82 490.918 333.1C492.238 335.38 492.898 338.16 492.898 341.44C492.898 344.72 492.238 347.5 490.918 349.78C489.598 352.06 487.818 353.8 485.578 355C483.338 356.2 480.818 356.8 478.018 356.8ZM478.438 353.02C480.758 353.02 482.818 352.54 484.618 351.58C486.418 350.58 487.838 349.22 488.878 347.5C489.918 345.74 490.438 343.72 490.438 341.44C490.438 339.16 489.918 337.16 488.878 335.44C487.838 333.72 486.418 332.38 484.618 331.42C482.818 330.42 480.758 329.92 478.438 329.92C476.158 329.92 474.098 330.42 472.258 331.42C470.458 332.38 469.038 333.72 467.998 335.44C466.998 337.16 466.498 339.16 466.498 341.44C466.498 343.72 466.998 345.74 467.998 347.5C469.038 349.22 470.458 350.58 472.258 351.58C474.098 352.54 476.158 353.02 478.438 353.02ZM519.812 358.3C516.532 358.3 513.652 357.62 511.172 356.26C508.692 354.86 506.752 352.96 505.352 350.56C503.952 348.12 503.252 345.34 503.252 342.22C503.252 339.1 503.912 336.34 505.232 333.94C506.592 331.54 508.432 329.66 510.752 328.3C513.112 326.9 515.752 326.2 518.672 326.2C521.632 326.2 524.252 326.88 526.532 328.24C528.852 329.56 530.672 331.44 531.992 333.88C533.312 336.28 533.972 339.06 533.972 342.22C533.972 342.42 533.952 342.64 533.912 342.88C533.912 343.08 533.912 343.3 533.912 343.54H506.492V340.36H531.632L529.952 341.62C529.952 339.34 529.452 337.32 528.452 335.56C527.492 333.76 526.172 332.36 524.492 331.36C522.812 330.36 520.872 329.86 518.672 329.86C516.512 329.86 514.572 330.36 512.852 331.36C511.132 332.36 509.792 333.76 508.832 335.56C507.872 337.36 507.392 339.42 507.392 341.74V342.4C507.392 344.8 507.912 346.92 508.952 348.76C510.032 350.56 511.512 351.98 513.392 353.02C515.312 354.02 517.492 354.52 519.932 354.52C521.852 354.52 523.632 354.18 525.272 353.5C526.952 352.82 528.392 351.78 529.592 350.38L531.992 353.14C530.592 354.82 528.832 356.1 526.712 356.98C524.632 357.86 522.332 358.3 519.812 358.3ZM582.003 326.2C584.563 326.2 586.783 326.7 588.663 327.7C590.583 328.66 592.063 330.14 593.103 332.14C594.183 334.14 594.723 336.66 594.723 339.7V358H590.463V340.12C590.463 336.8 589.663 334.3 588.063 332.62C586.503 330.9 584.283 330.04 581.403 330.04C579.243 330.04 577.363 330.5 575.763 331.42C574.203 332.3 572.983 333.6 572.103 335.32C571.263 337 570.843 339.04 570.843 341.44V358H566.583V340.12C566.583 336.8 565.783 334.3 564.183 332.62C562.583 330.9 560.343 330.04 557.463 330.04C555.343 330.04 553.483 330.5 551.883 331.42C550.283 332.3 549.043 333.6 548.163 335.32C547.323 337 546.903 339.04 546.903 341.44V358H542.643V326.5H546.723V335.02L546.063 333.52C547.023 331.24 548.563 329.46 550.683 328.18C552.843 326.86 555.383 326.2 558.303 326.2C561.383 326.2 564.003 326.98 566.163 328.54C568.323 330.06 569.723 332.36 570.363 335.44L568.683 334.78C569.603 332.22 571.223 330.16 573.543 328.6C575.903 327 578.723 326.2 582.003 326.2ZM619.656 358.3C616.376 358.3 613.496 357.62 611.016 356.26C608.536 354.86 606.596 352.96 605.196 350.56C603.796 348.12 603.096 345.34 603.096 342.22C603.096 339.1 603.756 336.34 605.076 333.94C606.436 331.54 608.276 329.66 610.596 328.3C612.956 326.9 615.596 326.2 618.516 326.2C621.476 326.2 624.096 326.88 626.376 328.24C628.696 329.56 630.516 331.44 631.836 333.88C633.156 336.28 633.816 339.06 633.816 342.22C633.816 342.42 633.796 342.64 633.756 342.88C633.756 343.08 633.756 343.3 633.756 343.54H606.336V340.36H631.476L629.796 341.62C629.796 339.34 629.296 337.32 628.296 335.56C627.336 333.76 626.016 332.36 624.336 331.36C622.656 330.36 620.716 329.86 618.516 329.86C616.356 329.86 614.416 330.36 612.696 331.36C610.976 332.36 609.636 333.76 608.676 335.56C607.716 337.36 607.236 339.42 607.236 341.74V342.4C607.236 344.8 607.756 346.92 608.796 348.76C609.876 350.56 611.356 351.98 613.236 353.02C615.156 354.02 617.336 354.52 619.776 354.52C621.696 354.52 623.476 354.18 625.116 353.5C626.796 352.82 628.236 351.78 629.436 350.38L631.836 353.14C630.436 354.82 628.676 356.1 626.556 356.98C624.476 357.86 622.176 358.3 619.656 358.3ZM658.567 326.2C661.127 326.2 663.367 326.7 665.287 327.7C667.247 328.66 668.767 330.14 669.847 332.14C670.967 334.14 671.527 336.66 671.527 339.7V358H667.267V340.12C667.267 336.8 666.427 334.3 664.747 332.62C663.107 330.9 660.787 330.04 657.787 330.04C655.547 330.04 653.587 330.5 651.907 331.42C650.267 332.3 648.987 333.6 648.067 335.32C647.187 337 646.747 339.04 646.747 341.44V358H642.487V326.5H646.567V335.14L645.907 333.52C646.907 331.24 648.507 329.46 650.707 328.18C652.907 326.86 655.527 326.2 658.567 326.2ZM692.994 358.3C690.034 358.3 687.754 357.5 686.154 355.9C684.554 354.3 683.754 352.04 683.754 349.12V319.54H688.014V348.88C688.014 350.72 688.474 352.14 689.394 353.14C690.354 354.14 691.714 354.64 693.474 354.64C695.354 354.64 696.914 354.1 698.154 353.02L699.654 356.08C698.814 356.84 697.794 357.4 696.594 357.76C695.434 358.12 694.234 358.3 692.994 358.3ZM678.114 330.04V326.5H697.614V330.04H678.114Z\",\n    fill: \"#303031\"\n  })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M76.358 423H74.5114L79.8523 408.455H81.6705L87.0114 423H85.1648L80.8182 410.756H80.7045L76.358 423ZM77.0398 417.318H84.483V418.881H77.0398V417.318ZM95.5247 418.54V412.091H97.2009V423H95.5247V421.153H95.4111C95.1554 421.707 94.7577 422.179 94.2179 422.567C93.6781 422.95 92.9963 423.142 92.1724 423.142C91.4906 423.142 90.8846 422.993 90.3543 422.695C89.824 422.392 89.4073 421.937 89.1043 421.331C88.8012 420.72 88.6497 419.951 88.6497 419.023V412.091H90.3259V418.909C90.3259 419.705 90.5484 420.339 90.9935 420.812C91.4433 421.286 92.0162 421.523 92.7122 421.523C93.1289 421.523 93.5527 421.416 93.9835 421.203C94.4191 420.99 94.7837 420.663 95.0773 420.223C95.3756 419.783 95.5247 419.222 95.5247 418.54ZM104.615 412.091V413.511H98.9617V412.091H104.615ZM100.609 409.477H102.286V419.875C102.286 420.348 102.354 420.704 102.492 420.94C102.634 421.172 102.814 421.329 103.031 421.409C103.254 421.485 103.488 421.523 103.734 421.523C103.919 421.523 104.071 421.513 104.189 421.494C104.307 421.471 104.402 421.452 104.473 421.438L104.814 422.943C104.7 422.986 104.542 423.028 104.338 423.071C104.135 423.118 103.876 423.142 103.564 423.142C103.091 423.142 102.626 423.04 102.172 422.837C101.722 422.633 101.348 422.323 101.05 421.906C100.756 421.49 100.609 420.964 100.609 420.33V409.477ZM111.051 423.227C110.066 423.227 109.202 422.993 108.459 422.524C107.72 422.055 107.142 421.4 106.726 420.557C106.314 419.714 106.108 418.729 106.108 417.602C106.108 416.466 106.314 415.474 106.726 414.626C107.142 413.779 107.72 413.121 108.459 412.652C109.202 412.183 110.066 411.949 111.051 411.949C112.036 411.949 112.898 412.183 113.636 412.652C114.38 413.121 114.957 413.779 115.369 414.626C115.786 415.474 115.994 416.466 115.994 417.602C115.994 418.729 115.786 419.714 115.369 420.557C114.957 421.4 114.38 422.055 113.636 422.524C112.898 422.993 112.036 423.227 111.051 423.227ZM111.051 421.722C111.799 421.722 112.415 421.53 112.898 421.146C113.381 420.763 113.738 420.259 113.97 419.634C114.202 419.009 114.318 418.331 114.318 417.602C114.318 416.873 114.202 416.194 113.97 415.564C113.738 414.934 113.381 414.425 112.898 414.037C112.415 413.649 111.799 413.455 111.051 413.455C110.303 413.455 109.687 413.649 109.204 414.037C108.722 414.425 108.364 414.934 108.132 415.564C107.9 416.194 107.784 416.873 107.784 417.602C107.784 418.331 107.9 419.009 108.132 419.634C108.364 420.259 108.722 420.763 109.204 421.146C109.687 421.53 110.303 421.722 111.051 421.722ZM118.153 423V412.091H119.772V413.795H119.914C120.141 413.213 120.508 412.761 121.015 412.439C121.522 412.112 122.13 411.949 122.84 411.949C123.56 411.949 124.159 412.112 124.637 412.439C125.12 412.761 125.497 413.213 125.766 413.795H125.88C126.159 413.232 126.579 412.785 127.137 412.453C127.696 412.117 128.366 411.949 129.147 411.949C130.123 411.949 130.92 412.254 131.541 412.865C132.161 413.471 132.471 414.416 132.471 415.699V423H130.795V415.699C130.795 414.894 130.575 414.319 130.134 413.973C129.694 413.627 129.176 413.455 128.579 413.455C127.812 413.455 127.218 413.687 126.796 414.151C126.375 414.61 126.164 415.192 126.164 415.898V423H124.46V415.528C124.46 414.908 124.258 414.409 123.856 414.03C123.454 413.646 122.935 413.455 122.301 413.455C121.865 413.455 121.458 413.571 121.079 413.803C120.705 414.035 120.402 414.357 120.17 414.768C119.943 415.176 119.829 415.647 119.829 416.182V423H118.153ZM138.346 423.256C137.655 423.256 137.027 423.125 136.464 422.865C135.9 422.6 135.453 422.219 135.121 421.722C134.79 421.22 134.624 420.614 134.624 419.903C134.624 419.278 134.747 418.772 134.994 418.384C135.24 417.991 135.569 417.683 135.981 417.46C136.393 417.238 136.847 417.072 137.344 416.963C137.846 416.849 138.351 416.759 138.857 416.693C139.52 416.608 140.058 416.544 140.469 416.501C140.886 416.454 141.189 416.376 141.379 416.267C141.573 416.158 141.67 415.969 141.67 415.699V415.642C141.67 414.941 141.478 414.397 141.094 414.009C140.716 413.62 140.14 413.426 139.369 413.426C138.568 413.426 137.941 413.601 137.487 413.952C137.032 414.302 136.712 414.676 136.528 415.074L134.937 414.506C135.221 413.843 135.6 413.327 136.073 412.957C136.551 412.583 137.072 412.323 137.636 412.176C138.204 412.025 138.763 411.949 139.312 411.949C139.662 411.949 140.065 411.991 140.519 412.077C140.978 412.157 141.421 412.325 141.847 412.581C142.278 412.837 142.636 413.223 142.92 413.739C143.204 414.255 143.346 414.946 143.346 415.812V423H141.67V421.523H141.585C141.471 421.759 141.281 422.013 141.016 422.283C140.751 422.553 140.398 422.782 139.958 422.972C139.518 423.161 138.98 423.256 138.346 423.256ZM138.602 421.75C139.264 421.75 139.823 421.62 140.278 421.359C140.737 421.099 141.083 420.763 141.315 420.351C141.551 419.939 141.67 419.506 141.67 419.051V417.517C141.599 417.602 141.442 417.68 141.201 417.751C140.964 417.818 140.69 417.877 140.377 417.929C140.069 417.976 139.769 418.019 139.475 418.057C139.186 418.09 138.952 418.118 138.772 418.142C138.336 418.199 137.929 418.291 137.55 418.419C137.176 418.542 136.873 418.729 136.641 418.98C136.414 419.226 136.3 419.562 136.3 419.989C136.3 420.571 136.516 421.011 136.947 421.31C137.382 421.603 137.934 421.75 138.602 421.75ZM150.75 412.091V413.511H145.096V412.091H150.75ZM146.744 409.477H148.42V419.875C148.42 420.348 148.489 420.704 148.626 420.94C148.768 421.172 148.948 421.329 149.166 421.409C149.388 421.485 149.623 421.523 149.869 421.523C150.053 421.523 150.205 421.513 150.323 421.494C150.442 421.471 150.536 421.452 150.607 421.438L150.948 422.943C150.835 422.986 150.676 423.028 150.473 423.071C150.269 423.118 150.011 423.142 149.698 423.142C149.225 423.142 148.761 423.04 148.306 422.837C147.857 422.633 147.482 422.323 147.184 421.906C146.891 421.49 146.744 420.964 146.744 420.33V409.477ZM157.327 423.227C156.276 423.227 155.37 422.995 154.607 422.531C153.85 422.062 153.265 421.409 152.853 420.571C152.446 419.728 152.242 418.748 152.242 417.631C152.242 416.513 152.446 415.528 152.853 414.676C153.265 413.819 153.838 413.152 154.572 412.673C155.31 412.19 156.172 411.949 157.157 411.949C157.725 411.949 158.286 412.044 158.84 412.233C159.394 412.422 159.899 412.73 160.353 413.156C160.808 413.578 161.17 414.136 161.44 414.832C161.71 415.528 161.845 416.385 161.845 417.403V418.114H153.435V416.665H160.14C160.14 416.049 160.017 415.5 159.771 415.017C159.529 414.534 159.184 414.153 158.734 413.874C158.289 413.594 157.763 413.455 157.157 413.455C156.489 413.455 155.912 413.62 155.424 413.952C154.941 414.278 154.569 414.705 154.309 415.23C154.049 415.756 153.918 416.319 153.918 416.92V417.886C153.918 418.71 154.06 419.409 154.345 419.982C154.633 420.55 155.033 420.983 155.545 421.281C156.056 421.575 156.65 421.722 157.327 421.722C157.768 421.722 158.166 421.66 158.521 421.537C158.881 421.409 159.191 421.22 159.451 420.969C159.711 420.713 159.913 420.396 160.055 420.017L161.674 420.472C161.504 421.021 161.217 421.504 160.815 421.92C160.412 422.332 159.915 422.654 159.323 422.886C158.731 423.114 158.066 423.227 157.327 423.227ZM168.114 423.227C167.204 423.227 166.402 422.998 165.706 422.538C165.01 422.074 164.465 421.421 164.072 420.578C163.679 419.731 163.483 418.729 163.483 417.574C163.483 416.428 163.679 415.434 164.072 414.591C164.465 413.748 165.012 413.097 165.713 412.638C166.414 412.179 167.223 411.949 168.142 411.949C168.852 411.949 169.413 412.067 169.825 412.304C170.242 412.536 170.559 412.801 170.777 413.099C170.999 413.393 171.172 413.634 171.295 413.824H171.437V408.455H173.114V423H171.494V421.324H171.295C171.172 421.523 170.997 421.774 170.77 422.077C170.543 422.375 170.218 422.643 169.797 422.879C169.375 423.111 168.814 423.227 168.114 423.227ZM168.341 421.722C169.013 421.722 169.581 421.546 170.045 421.196C170.509 420.841 170.862 420.351 171.104 419.726C171.345 419.096 171.466 418.369 171.466 417.545C171.466 416.731 171.347 416.018 171.111 415.408C170.874 414.792 170.524 414.314 170.06 413.973C169.596 413.627 169.023 413.455 168.341 413.455C167.631 413.455 167.039 413.637 166.565 414.001C166.097 414.361 165.744 414.851 165.507 415.472C165.275 416.087 165.159 416.778 165.159 417.545C165.159 418.322 165.277 419.027 165.514 419.662C165.756 420.292 166.111 420.794 166.579 421.168C167.053 421.537 167.64 421.722 168.341 421.722ZM178.516 421.011L178.402 421.778C178.322 422.318 178.199 422.896 178.033 423.511C177.872 424.127 177.704 424.707 177.529 425.251C177.354 425.796 177.209 426.229 177.096 426.551H175.817C175.879 426.248 175.959 425.848 176.059 425.351C176.158 424.854 176.258 424.297 176.357 423.682C176.461 423.071 176.546 422.446 176.613 421.807L176.698 421.011H178.516ZM189.657 423.256C188.966 423.256 188.338 423.125 187.775 422.865C187.211 422.6 186.764 422.219 186.432 421.722C186.101 421.22 185.935 420.614 185.935 419.903C185.935 419.278 186.058 418.772 186.305 418.384C186.551 417.991 186.88 417.683 187.292 417.46C187.704 417.238 188.158 417.072 188.655 416.963C189.157 416.849 189.662 416.759 190.168 416.693C190.831 416.608 191.368 416.544 191.78 416.501C192.197 416.454 192.5 416.376 192.689 416.267C192.884 416.158 192.981 415.969 192.981 415.699V415.642C192.981 414.941 192.789 414.397 192.405 414.009C192.027 413.62 191.451 413.426 190.68 413.426C189.879 413.426 189.252 413.601 188.797 413.952C188.343 414.302 188.023 414.676 187.839 415.074L186.248 414.506C186.532 413.843 186.911 413.327 187.384 412.957C187.862 412.583 188.383 412.323 188.947 412.176C189.515 412.025 190.073 411.949 190.623 411.949C190.973 411.949 191.376 411.991 191.83 412.077C192.289 412.157 192.732 412.325 193.158 412.581C193.589 412.837 193.947 413.223 194.231 413.739C194.515 414.255 194.657 414.946 194.657 415.812V423H192.981V421.523H192.895C192.782 421.759 192.592 422.013 192.327 422.283C192.062 422.553 191.709 422.782 191.269 422.972C190.829 423.161 190.291 423.256 189.657 423.256ZM189.912 421.75C190.575 421.75 191.134 421.62 191.589 421.359C192.048 421.099 192.394 420.763 192.626 420.351C192.862 419.939 192.981 419.506 192.981 419.051V417.517C192.91 417.602 192.753 417.68 192.512 417.751C192.275 417.818 192.001 417.877 191.688 417.929C191.38 417.976 191.08 418.019 190.786 418.057C190.497 418.09 190.263 418.118 190.083 418.142C189.647 418.199 189.24 418.291 188.861 418.419C188.487 418.542 188.184 418.729 187.952 418.98C187.725 419.226 187.611 419.562 187.611 419.989C187.611 420.571 187.827 421.011 188.258 421.31C188.693 421.603 189.245 421.75 189.912 421.75ZM197.316 427.091V412.091H198.935V413.824H199.134C199.257 413.634 199.428 413.393 199.646 413.099C199.868 412.801 200.185 412.536 200.597 412.304C201.014 412.067 201.577 411.949 202.288 411.949C203.206 411.949 204.016 412.179 204.717 412.638C205.417 413.097 205.964 413.748 206.357 414.591C206.75 415.434 206.947 416.428 206.947 417.574C206.947 418.729 206.75 419.731 206.357 420.578C205.964 421.421 205.42 422.074 204.724 422.538C204.028 422.998 203.225 423.227 202.316 423.227C201.615 423.227 201.054 423.111 200.633 422.879C200.211 422.643 199.887 422.375 199.66 422.077C199.433 421.774 199.257 421.523 199.134 421.324H198.992V427.091H197.316ZM198.964 417.545C198.964 418.369 199.085 419.096 199.326 419.726C199.568 420.351 199.92 420.841 200.384 421.196C200.848 421.546 201.416 421.722 202.089 421.722C202.79 421.722 203.374 421.537 203.843 421.168C204.317 420.794 204.672 420.292 204.908 419.662C205.15 419.027 205.271 418.322 205.271 417.545C205.271 416.778 205.152 416.087 204.916 415.472C204.684 414.851 204.331 414.361 203.857 414.001C203.389 413.637 202.799 413.455 202.089 413.455C201.407 413.455 200.834 413.627 200.37 413.973C199.906 414.314 199.556 414.792 199.319 415.408C199.082 416.018 198.964 416.731 198.964 417.545ZM209.104 427.091V412.091H210.723V413.824H210.922C211.045 413.634 211.215 413.393 211.433 413.099C211.656 412.801 211.973 412.536 212.385 412.304C212.802 412.067 213.365 411.949 214.075 411.949C214.994 411.949 215.803 412.179 216.504 412.638C217.205 413.097 217.752 413.748 218.145 414.591C218.538 415.434 218.734 416.428 218.734 417.574C218.734 418.729 218.538 419.731 218.145 420.578C217.752 421.421 217.207 422.074 216.511 422.538C215.815 422.998 215.013 423.227 214.104 423.227C213.403 423.227 212.842 423.111 212.42 422.879C211.999 422.643 211.675 422.375 211.447 422.077C211.22 421.774 211.045 421.523 210.922 421.324H210.78V427.091H209.104ZM210.751 417.545C210.751 418.369 210.872 419.096 211.114 419.726C211.355 420.351 211.708 420.841 212.172 421.196C212.636 421.546 213.204 421.722 213.876 421.722C214.577 421.722 215.162 421.537 215.631 421.168C216.104 420.794 216.459 420.292 216.696 419.662C216.937 419.027 217.058 418.322 217.058 417.545C217.058 416.778 216.94 416.087 216.703 415.472C216.471 414.851 216.118 414.361 215.645 414.001C215.176 413.637 214.587 413.455 213.876 413.455C213.195 413.455 212.622 413.627 212.158 413.973C211.694 414.314 211.343 414.792 211.106 415.408C210.87 416.018 210.751 416.731 210.751 417.545ZM220.891 423V412.091H222.51V413.739H222.624C222.823 413.199 223.183 412.761 223.704 412.425C224.224 412.089 224.812 411.92 225.465 411.92C225.588 411.92 225.742 411.923 225.927 411.928C226.111 411.932 226.251 411.939 226.346 411.949V413.653C226.289 413.639 226.159 413.618 225.955 413.589C225.756 413.556 225.545 413.54 225.323 413.54C224.793 413.54 224.319 413.651 223.902 413.874C223.491 414.091 223.164 414.394 222.922 414.783C222.686 415.166 222.567 415.604 222.567 416.097V423H220.891ZM232.032 423.227C231.047 423.227 230.183 422.993 229.44 422.524C228.701 422.055 228.124 421.4 227.707 420.557C227.295 419.714 227.089 418.729 227.089 417.602C227.089 416.466 227.295 415.474 227.707 414.626C228.124 413.779 228.701 413.121 229.44 412.652C230.183 412.183 231.047 411.949 232.032 411.949C233.017 411.949 233.879 412.183 234.618 412.652C235.361 413.121 235.939 413.779 236.35 414.626C236.767 415.474 236.975 416.466 236.975 417.602C236.975 418.729 236.767 419.714 236.35 420.557C235.939 421.4 235.361 422.055 234.618 422.524C233.879 422.993 233.017 423.227 232.032 423.227ZM232.032 421.722C232.78 421.722 233.396 421.53 233.879 421.146C234.362 420.763 234.719 420.259 234.951 419.634C235.183 419.009 235.299 418.331 235.299 417.602C235.299 416.873 235.183 416.194 234.951 415.564C234.719 414.934 234.362 414.425 233.879 414.037C233.396 413.649 232.78 413.455 232.032 413.455C231.284 413.455 230.669 413.649 230.186 414.037C229.703 414.425 229.345 414.934 229.113 415.564C228.881 416.194 228.765 416.873 228.765 417.602C228.765 418.331 228.881 419.009 229.113 419.634C229.345 420.259 229.703 420.763 230.186 421.146C230.669 421.53 231.284 421.722 232.032 421.722ZM247.664 412.091L243.63 423H241.925L237.891 412.091H239.709L242.721 420.784H242.834L245.846 412.091H247.664ZM252.354 423.256C251.663 423.256 251.036 423.125 250.472 422.865C249.909 422.6 249.461 422.219 249.13 421.722C248.799 421.22 248.633 420.614 248.633 419.903C248.633 419.278 248.756 418.772 249.002 418.384C249.248 417.991 249.577 417.683 249.989 417.46C250.401 417.238 250.856 417.072 251.353 416.963C251.855 416.849 252.359 416.759 252.866 416.693C253.529 416.608 254.066 416.544 254.478 416.501C254.895 416.454 255.198 416.376 255.387 416.267C255.581 416.158 255.678 415.969 255.678 415.699V415.642C255.678 414.941 255.487 414.397 255.103 414.009C254.724 413.62 254.149 413.426 253.377 413.426C252.577 413.426 251.95 413.601 251.495 413.952C251.041 414.302 250.721 414.676 250.536 415.074L248.945 414.506C249.229 413.843 249.608 413.327 250.082 412.957C250.56 412.583 251.081 412.323 251.644 412.176C252.212 412.025 252.771 411.949 253.32 411.949C253.671 411.949 254.073 411.991 254.528 412.077C254.987 412.157 255.43 412.325 255.856 412.581C256.287 412.837 256.644 413.223 256.928 413.739C257.212 414.255 257.354 414.946 257.354 415.812V423H255.678V421.523H255.593C255.479 421.759 255.29 422.013 255.025 422.283C254.76 422.553 254.407 422.782 253.967 422.972C253.526 423.161 252.989 423.256 252.354 423.256ZM252.61 421.75C253.273 421.75 253.832 421.62 254.286 421.359C254.746 421.099 255.091 420.763 255.323 420.351C255.56 419.939 255.678 419.506 255.678 419.051V417.517C255.607 417.602 255.451 417.68 255.21 417.751C254.973 417.818 254.698 417.877 254.386 417.929C254.078 417.976 253.777 418.019 253.484 418.057C253.195 418.09 252.961 418.118 252.781 418.142C252.345 418.199 251.938 418.291 251.559 418.419C251.185 418.542 250.882 418.729 250.65 418.98C250.423 419.226 250.309 419.562 250.309 419.989C250.309 420.571 250.524 421.011 250.955 421.31C251.391 421.603 251.943 421.75 252.61 421.75ZM261.69 408.455V423H260.014V408.455H261.69ZM270.61 415.983V417.545H264.246V415.983H270.61ZM273.386 423V408.455H275.062V413.824H275.205C275.328 413.634 275.498 413.393 275.716 413.099C275.938 412.801 276.256 412.536 276.668 412.304C277.084 412.067 277.648 411.949 278.358 411.949C279.277 411.949 280.086 412.179 280.787 412.638C281.488 413.097 282.035 413.748 282.428 414.591C282.821 415.434 283.017 416.428 283.017 417.574C283.017 418.729 282.821 419.731 282.428 420.578C282.035 421.421 281.49 422.074 280.794 422.538C280.098 422.998 279.295 423.227 278.386 423.227C277.686 423.227 277.125 423.111 276.703 422.879C276.282 422.643 275.957 422.375 275.73 422.077C275.503 421.774 275.328 421.523 275.205 421.324H275.006V423H273.386ZM275.034 417.545C275.034 418.369 275.155 419.096 275.396 419.726C275.638 420.351 275.991 420.841 276.455 421.196C276.919 421.546 277.487 421.722 278.159 421.722C278.86 421.722 279.445 421.537 279.913 421.168C280.387 420.794 280.742 420.292 280.979 419.662C281.22 419.027 281.341 418.322 281.341 417.545C281.341 416.778 281.223 416.087 280.986 415.472C280.754 414.851 280.401 414.361 279.928 414.001C279.459 413.637 278.869 413.455 278.159 413.455C277.477 413.455 276.904 413.627 276.44 413.973C275.976 414.314 275.626 414.792 275.389 415.408C275.152 416.018 275.034 416.731 275.034 417.545ZM288.391 423.256C287.7 423.256 287.073 423.125 286.509 422.865C285.946 422.6 285.498 422.219 285.167 421.722C284.835 421.22 284.67 420.614 284.67 419.903C284.67 419.278 284.793 418.772 285.039 418.384C285.285 417.991 285.614 417.683 286.026 417.46C286.438 417.238 286.893 417.072 287.39 416.963C287.892 416.849 288.396 416.759 288.903 416.693C289.565 416.608 290.103 416.544 290.515 416.501C290.931 416.454 291.234 416.376 291.424 416.267C291.618 416.158 291.715 415.969 291.715 415.699V415.642C291.715 414.941 291.523 414.397 291.14 414.009C290.761 413.62 290.186 413.426 289.414 413.426C288.614 413.426 287.986 413.601 287.532 413.952C287.077 414.302 286.758 414.676 286.573 415.074L284.982 414.506C285.266 413.843 285.645 413.327 286.118 412.957C286.597 412.583 287.118 412.323 287.681 412.176C288.249 412.025 288.808 411.949 289.357 411.949C289.707 411.949 290.11 411.991 290.564 412.077C291.024 412.157 291.466 412.325 291.893 412.581C292.323 412.837 292.681 413.223 292.965 413.739C293.249 414.255 293.391 414.946 293.391 415.812V423H291.715V421.523H291.63C291.516 421.759 291.327 422.013 291.062 422.283C290.797 422.553 290.444 422.782 290.003 422.972C289.563 423.161 289.026 423.256 288.391 423.256ZM288.647 421.75C289.31 421.75 289.868 421.62 290.323 421.359C290.782 421.099 291.128 420.763 291.36 420.351C291.597 419.939 291.715 419.506 291.715 419.051V417.517C291.644 417.602 291.488 417.68 291.246 417.751C291.01 417.818 290.735 417.877 290.422 417.929C290.115 417.976 289.814 418.019 289.52 418.057C289.232 418.09 288.997 418.118 288.817 418.142C288.382 418.199 287.975 418.291 287.596 418.419C287.222 418.542 286.919 418.729 286.687 418.98C286.459 419.226 286.346 419.562 286.346 419.989C286.346 420.571 286.561 421.011 286.992 421.31C287.428 421.603 287.979 421.75 288.647 421.75ZM303.778 414.534L302.272 414.96C302.177 414.709 302.038 414.465 301.853 414.229C301.673 413.987 301.427 413.788 301.114 413.632C300.802 413.476 300.402 413.398 299.914 413.398C299.247 413.398 298.69 413.552 298.245 413.859C297.805 414.162 297.585 414.548 297.585 415.017C297.585 415.434 297.736 415.763 298.039 416.004C298.342 416.246 298.816 416.447 299.46 416.608L301.079 417.006C302.054 417.242 302.781 417.605 303.259 418.092C303.738 418.575 303.977 419.198 303.977 419.96C303.977 420.585 303.797 421.144 303.437 421.636C303.082 422.129 302.585 422.517 301.945 422.801C301.306 423.085 300.563 423.227 299.715 423.227C298.603 423.227 297.682 422.986 296.952 422.503C296.223 422.02 295.762 421.314 295.568 420.386L297.158 419.989C297.31 420.576 297.596 421.016 298.018 421.31C298.444 421.603 299 421.75 299.687 421.75C300.468 421.75 301.088 421.584 301.548 421.253C302.012 420.917 302.244 420.514 302.244 420.045C302.244 419.667 302.111 419.349 301.846 419.094C301.581 418.833 301.174 418.639 300.624 418.511L298.806 418.085C297.807 417.848 297.073 417.482 296.604 416.984C296.14 416.482 295.908 415.855 295.908 415.102C295.908 414.487 296.081 413.942 296.427 413.469C296.777 412.995 297.253 412.624 297.854 412.354C298.461 412.084 299.147 411.949 299.914 411.949C300.994 411.949 301.841 412.186 302.457 412.659C303.077 413.133 303.517 413.758 303.778 414.534ZM310.674 423.227C309.622 423.227 308.716 422.995 307.953 422.531C307.196 422.062 306.611 421.409 306.199 420.571C305.792 419.728 305.588 418.748 305.588 417.631C305.588 416.513 305.792 415.528 306.199 414.676C306.611 413.819 307.184 413.152 307.918 412.673C308.657 412.19 309.518 411.949 310.503 411.949C311.071 411.949 311.632 412.044 312.186 412.233C312.74 412.422 313.245 412.73 313.699 413.156C314.154 413.578 314.516 414.136 314.786 414.832C315.056 415.528 315.191 416.385 315.191 417.403V418.114H306.782V416.665H313.486C313.486 416.049 313.363 415.5 313.117 415.017C312.875 414.534 312.53 414.153 312.08 413.874C311.635 413.594 311.109 413.455 310.503 413.455C309.836 413.455 309.258 413.62 308.77 413.952C308.287 414.278 307.916 414.705 307.655 415.23C307.395 415.756 307.264 416.319 307.264 416.92V417.886C307.264 418.71 307.407 419.409 307.691 419.982C307.979 420.55 308.38 420.983 308.891 421.281C309.402 421.575 309.996 421.722 310.674 421.722C311.114 421.722 311.512 421.66 311.867 421.537C312.227 421.409 312.537 421.22 312.797 420.969C313.058 420.713 313.259 420.396 313.401 420.017L315.02 420.472C314.85 421.021 314.563 421.504 314.161 421.92C313.758 422.332 313.261 422.654 312.669 422.886C312.077 423.114 311.412 423.227 310.674 423.227ZM321.46 423.227C320.551 423.227 319.748 422.998 319.052 422.538C318.356 422.074 317.811 421.421 317.418 420.578C317.025 419.731 316.829 418.729 316.829 417.574C316.829 416.428 317.025 415.434 317.418 414.591C317.811 413.748 318.358 413.097 319.059 412.638C319.76 412.179 320.57 411.949 321.488 411.949C322.198 411.949 322.759 412.067 323.171 412.304C323.588 412.536 323.905 412.801 324.123 413.099C324.346 413.393 324.518 413.634 324.641 413.824H324.784V408.455H326.46V423H324.84V421.324H324.641C324.518 421.523 324.343 421.774 324.116 422.077C323.889 422.375 323.564 422.643 323.143 422.879C322.721 423.111 322.16 423.227 321.46 423.227ZM321.687 421.722C322.359 421.722 322.927 421.546 323.391 421.196C323.855 420.841 324.208 420.351 324.45 419.726C324.691 419.096 324.812 418.369 324.812 417.545C324.812 416.731 324.694 416.018 324.457 415.408C324.22 414.792 323.87 414.314 323.406 413.973C322.942 413.627 322.369 413.455 321.687 413.455C320.977 413.455 320.385 413.637 319.911 414.001C319.443 414.361 319.09 414.851 318.853 415.472C318.621 416.087 318.505 416.778 318.505 417.545C318.505 418.322 318.623 419.027 318.86 419.662C319.102 420.292 319.457 420.794 319.926 421.168C320.399 421.537 320.986 421.722 321.687 421.722ZM337.059 423L333.735 412.091H335.496L337.854 420.443H337.968L340.297 412.091H342.087L344.388 420.415H344.502L346.86 412.091H348.621L345.297 423H343.65L341.263 414.619H341.093L338.707 423H337.059ZM354.498 423.227C353.513 423.227 352.649 422.993 351.906 422.524C351.167 422.055 350.589 421.4 350.173 420.557C349.761 419.714 349.555 418.729 349.555 417.602C349.555 416.466 349.761 415.474 350.173 414.626C350.589 413.779 351.167 413.121 351.906 412.652C352.649 412.183 353.513 411.949 354.498 411.949C355.483 411.949 356.345 412.183 357.083 412.652C357.827 413.121 358.404 413.779 358.816 414.626C359.233 415.474 359.441 416.466 359.441 417.602C359.441 418.729 359.233 419.714 358.816 420.557C358.404 421.4 357.827 422.055 357.083 422.524C356.345 422.993 355.483 423.227 354.498 423.227ZM354.498 421.722C355.246 421.722 355.862 421.53 356.345 421.146C356.827 420.763 357.185 420.259 357.417 419.634C357.649 419.009 357.765 418.331 357.765 417.602C357.765 416.873 357.649 416.194 357.417 415.564C357.185 414.934 356.827 414.425 356.345 414.037C355.862 413.649 355.246 413.455 354.498 413.455C353.75 413.455 353.134 413.649 352.651 414.037C352.168 414.425 351.811 414.934 351.579 415.564C351.347 416.194 351.231 416.873 351.231 417.602C351.231 418.331 351.347 419.009 351.579 419.634C351.811 420.259 352.168 420.763 352.651 421.146C353.134 421.53 353.75 421.722 354.498 421.722ZM361.6 423V412.091H363.219V413.739H363.333C363.532 413.199 363.891 412.761 364.412 412.425C364.933 412.089 365.52 411.92 366.174 411.92C366.297 411.92 366.451 411.923 366.635 411.928C366.82 411.932 366.96 411.939 367.054 411.949V413.653C366.997 413.639 366.867 413.618 366.664 413.589C366.465 413.556 366.254 413.54 366.032 413.54C365.501 413.54 365.028 413.651 364.611 413.874C364.199 414.091 363.872 414.394 363.631 414.783C363.394 415.166 363.276 415.604 363.276 416.097V423H361.6ZM370.204 419.023L370.175 416.949H370.516L375.289 412.091H377.363L372.277 417.233H372.135L370.204 419.023ZM368.641 423V408.455H370.317V423H368.641ZM375.573 423L371.312 417.602L372.505 416.438L377.704 423H375.573ZM383.978 412.091V413.511H378.097V412.091H383.978ZM379.859 423V410.585C379.859 409.96 380.005 409.439 380.299 409.023C380.593 408.606 380.974 408.294 381.442 408.085C381.911 407.877 382.406 407.773 382.927 407.773C383.339 407.773 383.675 407.806 383.935 407.872C384.196 407.938 384.39 408 384.518 408.057L384.035 409.506C383.95 409.477 383.831 409.442 383.68 409.399C383.533 409.357 383.339 409.335 383.097 409.335C382.543 409.335 382.143 409.475 381.897 409.754C381.656 410.034 381.535 410.443 381.535 410.983V423H379.859ZM387.603 408.455V423H385.927V408.455H387.603ZM394.705 423.227C393.72 423.227 392.856 422.993 392.113 422.524C391.374 422.055 390.796 421.4 390.38 420.557C389.968 419.714 389.762 418.729 389.762 417.602C389.762 416.466 389.968 415.474 390.38 414.626C390.796 413.779 391.374 413.121 392.113 412.652C392.856 412.183 393.72 411.949 394.705 411.949C395.69 411.949 396.552 412.183 397.29 412.652C398.034 413.121 398.611 413.779 399.023 414.626C399.44 415.474 399.648 416.466 399.648 417.602C399.648 418.729 399.44 419.714 399.023 420.557C398.611 421.4 398.034 422.055 397.29 422.524C396.552 422.993 395.69 423.227 394.705 423.227ZM394.705 421.722C395.453 421.722 396.069 421.53 396.552 421.146C397.035 420.763 397.392 420.259 397.624 419.634C397.856 419.009 397.972 418.331 397.972 417.602C397.972 416.873 397.856 416.194 397.624 415.564C397.392 414.934 397.035 414.425 396.552 414.037C396.069 413.649 395.453 413.455 394.705 413.455C393.957 413.455 393.341 413.649 392.858 414.037C392.375 414.425 392.018 414.934 391.786 415.564C391.554 416.194 391.438 416.873 391.438 417.602C391.438 418.331 391.554 419.009 391.786 419.634C392.018 420.259 392.375 420.763 392.858 421.146C393.341 421.53 393.957 421.722 394.705 421.722ZM403.907 423L400.583 412.091H402.345L404.703 420.443H404.816L407.146 412.091H408.936L411.237 420.415H411.35L413.708 412.091H415.47L412.146 423H410.498L408.112 414.619H407.941L405.555 423H403.907ZM427.369 412.091V413.511H421.488V412.091H427.369ZM423.249 423V410.585C423.249 409.96 423.396 409.439 423.69 409.023C423.983 408.606 424.364 408.294 424.833 408.085C425.302 407.877 425.797 407.773 426.317 407.773C426.729 407.773 427.066 407.806 427.326 407.872C427.586 407.938 427.781 408 427.908 408.057L427.425 409.506C427.34 409.477 427.222 409.442 427.07 409.399C426.924 409.357 426.729 409.335 426.488 409.335C425.934 409.335 425.534 409.475 425.288 409.754C425.046 410.034 424.925 410.443 424.925 410.983V423H423.249ZM433.3 423.227C432.315 423.227 431.451 422.993 430.708 422.524C429.969 422.055 429.392 421.4 428.975 420.557C428.563 419.714 428.357 418.729 428.357 417.602C428.357 416.466 428.563 415.474 428.975 414.626C429.392 413.779 429.969 413.121 430.708 412.652C431.451 412.183 432.315 411.949 433.3 411.949C434.285 411.949 435.147 412.183 435.886 412.652C436.629 413.121 437.207 413.779 437.618 414.626C438.035 415.474 438.243 416.466 438.243 417.602C438.243 418.729 438.035 419.714 437.618 420.557C437.207 421.4 436.629 422.055 435.886 422.524C435.147 422.993 434.285 423.227 433.3 423.227ZM433.3 421.722C434.048 421.722 434.664 421.53 435.147 421.146C435.63 420.763 435.987 420.259 436.219 419.634C436.451 419.009 436.567 418.331 436.567 417.602C436.567 416.873 436.451 416.194 436.219 415.564C435.987 414.934 435.63 414.425 435.147 414.037C434.664 413.649 434.048 413.455 433.3 413.455C432.552 413.455 431.937 413.649 431.454 414.037C430.971 414.425 430.613 414.934 430.381 415.564C430.149 416.194 430.033 416.873 430.033 417.602C430.033 418.331 430.149 419.009 430.381 419.634C430.613 420.259 430.971 420.763 431.454 421.146C431.937 421.53 432.552 421.722 433.3 421.722ZM440.402 423V412.091H442.021V413.739H442.135C442.334 413.199 442.694 412.761 443.215 412.425C443.735 412.089 444.323 411.92 444.976 411.92C445.099 411.92 445.253 411.923 445.438 411.928C445.622 411.932 445.762 411.939 445.857 411.949V413.653C445.8 413.639 445.67 413.618 445.466 413.589C445.267 413.556 445.056 413.54 444.834 413.54C444.304 413.54 443.83 413.651 443.413 413.874C443.002 414.091 442.675 414.394 442.433 414.783C442.197 415.166 442.078 415.604 442.078 416.097V423H440.402ZM457.242 423.227C456.191 423.227 455.284 422.995 454.522 422.531C453.765 422.062 453.18 421.409 452.768 420.571C452.361 419.728 452.157 418.748 452.157 417.631C452.157 416.513 452.361 415.528 452.768 414.676C453.18 413.819 453.753 413.152 454.487 412.673C455.225 412.19 456.087 411.949 457.072 411.949C457.64 411.949 458.201 412.044 458.755 412.233C459.309 412.422 459.813 412.73 460.268 413.156C460.722 413.578 461.085 414.136 461.355 414.832C461.624 415.528 461.759 416.385 461.759 417.403V418.114H453.35V416.665H460.055C460.055 416.049 459.932 415.5 459.686 415.017C459.444 414.534 459.098 414.153 458.649 413.874C458.203 413.594 457.678 413.455 457.072 413.455C456.404 413.455 455.827 413.62 455.339 413.952C454.856 414.278 454.484 414.705 454.224 415.23C453.963 415.756 453.833 416.319 453.833 416.92V417.886C453.833 418.71 453.975 419.409 454.259 419.982C454.548 420.55 454.948 420.983 455.46 421.281C455.971 421.575 456.565 421.722 457.242 421.722C457.683 421.722 458.08 421.66 458.436 421.537C458.795 421.409 459.105 421.22 459.366 420.969C459.626 420.713 459.828 420.396 459.97 420.017L461.589 420.472C461.418 421.021 461.132 421.504 460.73 421.92C460.327 422.332 459.83 422.654 459.238 422.886C458.646 423.114 457.981 423.227 457.242 423.227ZM465.585 408.455V423H463.909V408.455H465.585ZM472.829 423.227C471.778 423.227 470.871 422.995 470.109 422.531C469.351 422.062 468.767 421.409 468.355 420.571C467.947 419.728 467.744 418.748 467.744 417.631C467.744 416.513 467.947 415.528 468.355 414.676C468.767 413.819 469.339 413.152 470.073 412.673C470.812 412.19 471.674 411.949 472.659 411.949C473.227 411.949 473.788 412.044 474.342 412.233C474.896 412.422 475.4 412.73 475.855 413.156C476.309 413.578 476.671 414.136 476.941 414.832C477.211 415.528 477.346 416.385 477.346 417.403V418.114H468.937V416.665H475.642C475.642 416.049 475.518 415.5 475.272 415.017C475.031 414.534 474.685 414.153 474.235 413.874C473.79 413.594 473.265 413.455 472.659 413.455C471.991 413.455 471.413 413.62 470.926 413.952C470.443 414.278 470.071 414.705 469.811 415.23C469.55 415.756 469.42 416.319 469.42 416.92V417.886C469.42 418.71 469.562 419.409 469.846 419.982C470.135 420.55 470.535 420.983 471.046 421.281C471.558 421.575 472.152 421.722 472.829 421.722C473.269 421.722 473.667 421.66 474.022 421.537C474.382 421.409 474.692 421.22 474.953 420.969C475.213 420.713 475.414 420.396 475.556 420.017L477.176 420.472C477.005 421.021 476.719 421.504 476.316 421.92C475.914 422.332 475.417 422.654 474.825 422.886C474.233 423.114 473.568 423.227 472.829 423.227ZM488.084 412.091L484.05 423H482.346L478.312 412.091H480.13L483.141 420.784H483.255L486.266 412.091H488.084ZM492.775 423.256C492.083 423.256 491.456 423.125 490.893 422.865C490.329 422.6 489.882 422.219 489.55 421.722C489.219 421.22 489.053 420.614 489.053 419.903C489.053 419.278 489.176 418.772 489.423 418.384C489.669 417.991 489.998 417.683 490.41 417.46C490.822 417.238 491.276 417.072 491.773 416.963C492.275 416.849 492.78 416.759 493.286 416.693C493.949 416.608 494.486 416.544 494.898 416.501C495.315 416.454 495.618 416.376 495.807 416.267C496.002 416.158 496.099 415.969 496.099 415.699V415.642C496.099 414.941 495.907 414.397 495.523 414.009C495.145 413.62 494.569 413.426 493.798 413.426C492.997 413.426 492.37 413.601 491.915 413.952C491.461 414.302 491.141 414.676 490.957 415.074L489.366 414.506C489.65 413.843 490.029 413.327 490.502 412.957C490.98 412.583 491.501 412.323 492.065 412.176C492.633 412.025 493.191 411.949 493.741 411.949C494.091 411.949 494.494 411.991 494.948 412.077C495.407 412.157 495.85 412.325 496.276 412.581C496.707 412.837 497.065 413.223 497.349 413.739C497.633 414.255 497.775 414.946 497.775 415.812V423H496.099V421.523H496.013C495.9 421.759 495.71 422.013 495.445 422.283C495.18 422.553 494.827 422.782 494.387 422.972C493.947 423.161 493.409 423.256 492.775 423.256ZM493.03 421.75C493.693 421.75 494.252 421.62 494.707 421.359C495.166 421.099 495.512 420.763 495.744 420.351C495.98 419.939 496.099 419.506 496.099 419.051V417.517C496.028 417.602 495.871 417.68 495.63 417.751C495.393 417.818 495.119 417.877 494.806 417.929C494.498 417.976 494.198 418.019 493.904 418.057C493.615 418.09 493.381 418.118 493.201 418.142C492.765 418.199 492.358 418.291 491.979 418.419C491.605 418.542 491.302 418.729 491.07 418.98C490.843 419.226 490.729 419.562 490.729 419.989C490.729 420.571 490.945 421.011 491.376 421.31C491.811 421.603 492.363 421.75 493.03 421.75ZM505.178 412.091V413.511H499.525V412.091H505.178ZM501.173 409.477H502.849V419.875C502.849 420.348 502.918 420.704 503.055 420.94C503.197 421.172 503.377 421.329 503.595 421.409C503.817 421.485 504.052 421.523 504.298 421.523C504.482 421.523 504.634 421.513 504.752 421.494C504.871 421.471 504.965 421.452 505.036 421.438L505.377 422.943C505.264 422.986 505.105 423.028 504.901 423.071C504.698 423.118 504.44 423.142 504.127 423.142C503.654 423.142 503.19 423.04 502.735 422.837C502.285 422.633 501.911 422.323 501.613 421.906C501.32 421.49 501.173 420.964 501.173 420.33V409.477ZM507.3 423V412.091H508.976V423H507.3ZM508.152 410.273C507.825 410.273 507.544 410.161 507.307 409.939C507.075 409.716 506.959 409.449 506.959 409.136C506.959 408.824 507.075 408.556 507.307 408.334C507.544 408.111 507.825 408 508.152 408C508.479 408 508.758 408.111 508.99 408.334C509.227 408.556 509.345 408.824 509.345 409.136C509.345 409.449 509.227 409.716 508.99 409.939C508.758 410.161 508.479 410.273 508.152 410.273ZM513.322 416.438V423H511.646V412.091H513.265V413.795H513.407C513.663 413.241 514.051 412.796 514.572 412.46C515.093 412.119 515.765 411.949 516.589 411.949C517.328 411.949 517.974 412.1 518.528 412.403C519.082 412.702 519.513 413.156 519.821 413.767C520.128 414.373 520.282 415.14 520.282 416.068V423H518.606V416.182C518.606 415.325 518.384 414.657 517.938 414.179C517.493 413.696 516.883 413.455 516.106 413.455C515.571 413.455 515.093 413.571 514.671 413.803C514.255 414.035 513.926 414.373 513.684 414.818C513.443 415.263 513.322 415.803 513.322 416.438ZM527.348 427.318C526.539 427.318 525.843 427.214 525.26 427.006C524.678 426.802 524.193 426.532 523.804 426.196C523.421 425.865 523.115 425.509 522.888 425.131L524.223 424.193C524.375 424.392 524.567 424.619 524.799 424.875C525.031 425.135 525.348 425.36 525.75 425.55C526.158 425.744 526.69 425.841 527.348 425.841C528.229 425.841 528.956 425.628 529.529 425.202C530.102 424.776 530.388 424.108 530.388 423.199V420.983H530.246C530.123 421.182 529.948 421.428 529.721 421.722C529.498 422.01 529.176 422.268 528.755 422.496C528.338 422.718 527.775 422.83 527.064 422.83C526.184 422.83 525.393 422.621 524.692 422.205C523.996 421.788 523.445 421.182 523.037 420.386C522.635 419.591 522.434 418.625 522.434 417.489C522.434 416.371 522.63 415.398 523.023 414.57C523.416 413.736 523.963 413.092 524.664 412.638C525.365 412.179 526.174 411.949 527.093 411.949C527.803 411.949 528.366 412.067 528.783 412.304C529.205 412.536 529.526 412.801 529.749 413.099C529.976 413.393 530.151 413.634 530.275 413.824H530.445V412.091H532.064V423.312C532.064 424.25 531.851 425.012 531.425 425.599C531.004 426.191 530.436 426.625 529.721 426.899C529.01 427.179 528.22 427.318 527.348 427.318ZM527.292 421.324C527.964 421.324 528.532 421.17 528.996 420.862C529.46 420.554 529.813 420.112 530.054 419.534C530.296 418.956 530.417 418.265 530.417 417.46C530.417 416.674 530.298 415.981 530.062 415.379C529.825 414.778 529.474 414.307 529.01 413.966C528.546 413.625 527.973 413.455 527.292 413.455C526.581 413.455 525.99 413.634 525.516 413.994C525.047 414.354 524.695 414.837 524.458 415.443C524.226 416.049 524.11 416.722 524.11 417.46C524.11 418.218 524.228 418.888 524.465 419.47C524.706 420.048 525.062 420.502 525.53 420.834C526.004 421.161 526.591 421.324 527.292 421.324ZM546.833 418.54V412.091H548.509V423H546.833V421.153H546.719C546.463 421.707 546.065 422.179 545.526 422.567C544.986 422.95 544.304 423.142 543.48 423.142C542.798 423.142 542.192 422.993 541.662 422.695C541.132 422.392 540.715 421.937 540.412 421.331C540.109 420.72 539.958 419.951 539.958 419.023V412.091H541.634V418.909C541.634 419.705 541.856 420.339 542.301 420.812C542.751 421.286 543.324 421.523 544.02 421.523C544.437 421.523 544.86 421.416 545.291 421.203C545.727 420.99 546.092 420.663 546.385 420.223C546.683 419.783 546.833 419.222 546.833 418.54ZM558.906 414.534L557.4 414.96C557.306 414.709 557.166 414.465 556.981 414.229C556.801 413.987 556.555 413.788 556.243 413.632C555.93 413.476 555.53 413.398 555.042 413.398C554.375 413.398 553.818 413.552 553.373 413.859C552.933 414.162 552.713 414.548 552.713 415.017C552.713 415.434 552.864 415.763 553.167 416.004C553.47 416.246 553.944 416.447 554.588 416.608L556.207 417.006C557.182 417.242 557.909 417.605 558.387 418.092C558.866 418.575 559.105 419.198 559.105 419.96C559.105 420.585 558.925 421.144 558.565 421.636C558.21 422.129 557.713 422.517 557.074 422.801C556.434 423.085 555.691 423.227 554.843 423.227C553.731 423.227 552.81 422.986 552.081 422.503C551.351 422.02 550.89 421.314 550.696 420.386L552.287 419.989C552.438 420.576 552.725 421.016 553.146 421.31C553.572 421.603 554.128 421.75 554.815 421.75C555.596 421.75 556.217 421.584 556.676 421.253C557.14 420.917 557.372 420.514 557.372 420.045C557.372 419.667 557.239 419.349 556.974 419.094C556.709 418.833 556.302 418.639 555.752 418.511L553.934 418.085C552.935 417.848 552.201 417.482 551.733 416.984C551.269 416.482 551.037 415.855 551.037 415.102C551.037 414.487 551.209 413.942 551.555 413.469C551.905 412.995 552.381 412.624 552.983 412.354C553.589 412.084 554.275 411.949 555.042 411.949C556.122 411.949 556.969 412.186 557.585 412.659C558.205 413.133 558.645 413.758 558.906 414.534ZM565.802 423.227C564.751 423.227 563.844 422.995 563.082 422.531C562.324 422.062 561.739 421.409 561.327 420.571C560.92 419.728 560.716 418.748 560.716 417.631C560.716 416.513 560.92 415.528 561.327 414.676C561.739 413.819 562.312 413.152 563.046 412.673C563.785 412.19 564.646 411.949 565.631 411.949C566.199 411.949 566.761 412.044 567.314 412.233C567.868 412.422 568.373 412.73 568.827 413.156C569.282 413.578 569.644 414.136 569.914 414.832C570.184 415.528 570.319 416.385 570.319 417.403V418.114H561.91V416.665H568.614C568.614 416.049 568.491 415.5 568.245 415.017C568.003 414.534 567.658 414.153 567.208 413.874C566.763 413.594 566.237 413.455 565.631 413.455C564.964 413.455 564.386 413.62 563.898 413.952C563.415 414.278 563.044 414.705 562.783 415.23C562.523 415.756 562.393 416.319 562.393 416.92V417.886C562.393 418.71 562.535 419.409 562.819 419.982C563.108 420.55 563.508 420.983 564.019 421.281C564.53 421.575 565.125 421.722 565.802 421.722C566.242 421.722 566.64 421.66 566.995 421.537C567.355 421.409 567.665 421.22 567.925 420.969C568.186 420.713 568.387 420.396 568.529 420.017L570.148 420.472C569.978 421.021 569.691 421.504 569.289 421.92C568.886 422.332 568.389 422.654 567.797 422.886C567.206 423.114 566.54 423.227 565.802 423.227ZM572.468 423V412.091H574.088V413.739H574.201C574.4 413.199 574.76 412.761 575.281 412.425C575.802 412.089 576.389 411.92 577.042 411.92C577.165 411.92 577.319 411.923 577.504 411.928C577.689 411.932 577.828 411.939 577.923 411.949V413.653C577.866 413.639 577.736 413.618 577.532 413.589C577.334 413.556 577.123 413.54 576.9 413.54C576.37 413.54 575.897 413.651 575.48 413.874C575.068 414.091 574.741 414.394 574.5 414.783C574.263 415.166 574.145 415.604 574.145 416.097V423H572.468ZM75.5341 459.091V444.091H77.1534V445.824H77.3523C77.4754 445.634 77.6458 445.393 77.8636 445.099C78.0862 444.801 78.4034 444.536 78.8153 444.304C79.232 444.067 79.7955 443.949 80.5057 443.949C81.4242 443.949 82.2339 444.179 82.9347 444.638C83.6354 445.097 84.1823 445.748 84.5753 446.591C84.9683 447.434 85.1648 448.428 85.1648 449.574C85.1648 450.729 84.9683 451.731 84.5753 452.578C84.1823 453.421 83.6378 454.074 82.9418 454.538C82.2457 454.998 81.4432 455.227 80.5341 455.227C79.8333 455.227 79.2723 455.111 78.8509 454.879C78.4295 454.643 78.1051 454.375 77.8778 454.077C77.6506 453.774 77.4754 453.523 77.3523 453.324H77.2102V459.091H75.5341ZM77.1818 449.545C77.1818 450.369 77.3026 451.096 77.544 451.726C77.7855 452.351 78.1383 452.841 78.6023 453.196C79.0663 453.546 79.6345 453.722 80.3068 453.722C81.0076 453.722 81.5923 453.537 82.0611 453.168C82.5346 452.794 82.8897 452.292 83.1264 451.662C83.3679 451.027 83.4886 450.322 83.4886 449.545C83.4886 448.778 83.3703 448.087 83.1335 447.472C82.9015 446.851 82.5488 446.361 82.0753 446.001C81.6065 445.637 81.017 445.455 80.3068 445.455C79.625 445.455 79.0521 445.627 78.5881 445.973C78.1241 446.314 77.7737 446.792 77.5369 447.408C77.3002 448.018 77.1818 448.731 77.1818 449.545ZM91.8955 455.227C90.8443 455.227 89.9376 454.995 89.1753 454.531C88.4177 454.062 87.833 453.409 87.421 452.571C87.0138 451.728 86.8102 450.748 86.8102 449.631C86.8102 448.513 87.0138 447.528 87.421 446.676C87.833 445.819 88.4059 445.152 89.1398 444.673C89.8784 444.19 90.7402 443.949 91.725 443.949C92.2932 443.949 92.8543 444.044 93.4082 444.233C93.9622 444.422 94.4665 444.73 94.921 445.156C95.3756 445.578 95.7378 446.136 96.0077 446.832C96.2776 447.528 96.4125 448.385 96.4125 449.403V450.114H88.0034V448.665H94.708C94.708 448.049 94.5848 447.5 94.3386 447.017C94.0972 446.534 93.7515 446.153 93.3017 445.874C92.8566 445.594 92.3311 445.455 91.725 445.455C91.0574 445.455 90.4797 445.62 89.992 445.952C89.5091 446.278 89.1374 446.705 88.877 447.23C88.6166 447.756 88.4864 448.319 88.4864 448.92V449.886C88.4864 450.71 88.6284 451.409 88.9125 451.982C89.2013 452.55 89.6014 452.983 90.1128 453.281C90.6241 453.575 91.2184 453.722 91.8955 453.722C92.3358 453.722 92.7335 453.66 93.0886 453.537C93.4485 453.409 93.7586 453.22 94.019 452.969C94.2795 452.713 94.4807 452.396 94.6227 452.017L96.242 452.472C96.0716 453.021 95.7851 453.504 95.3827 453.92C94.9802 454.332 94.483 454.654 93.8912 454.886C93.2993 455.114 92.6341 455.227 91.8955 455.227ZM98.5622 455V444.091H100.182V445.739H100.295C100.494 445.199 100.854 444.761 101.375 444.425C101.896 444.089 102.483 443.92 103.136 443.92C103.259 443.92 103.413 443.923 103.598 443.928C103.782 443.932 103.922 443.939 104.017 443.949V445.653C103.96 445.639 103.83 445.618 103.626 445.589C103.427 445.556 103.217 445.54 102.994 445.54C102.464 445.54 101.99 445.651 101.574 445.874C101.162 446.091 100.835 446.394 100.593 446.783C100.357 447.166 100.238 447.604 100.238 448.097V455H98.5622ZM105.604 455V444.091H107.223V445.795H107.365C107.592 445.213 107.959 444.761 108.466 444.439C108.972 444.112 109.581 443.949 110.291 443.949C111.011 443.949 111.61 444.112 112.088 444.439C112.571 444.761 112.947 445.213 113.217 445.795H113.331C113.61 445.232 114.029 444.785 114.588 444.453C115.147 444.117 115.817 443.949 116.598 443.949C117.573 443.949 118.371 444.254 118.991 444.865C119.612 445.471 119.922 446.416 119.922 447.699V455H118.246V447.699C118.246 446.894 118.025 446.319 117.585 445.973C117.145 445.627 116.626 445.455 116.03 445.455C115.263 445.455 114.668 445.687 114.247 446.151C113.826 446.61 113.615 447.192 113.615 447.898V455H111.91V447.528C111.91 446.908 111.709 446.409 111.307 446.03C110.904 445.646 110.386 445.455 109.751 445.455C109.316 445.455 108.909 445.571 108.53 445.803C108.156 446.035 107.853 446.357 107.621 446.768C107.393 447.176 107.28 447.647 107.28 448.182V455H105.604ZM122.586 455V444.091H124.263V455H122.586ZM123.439 442.273C123.112 442.273 122.83 442.161 122.594 441.939C122.362 441.716 122.246 441.449 122.246 441.136C122.246 440.824 122.362 440.556 122.594 440.334C122.83 440.111 123.112 440 123.439 440C123.765 440 124.045 440.111 124.277 440.334C124.514 440.556 124.632 440.824 124.632 441.136C124.632 441.449 124.514 441.716 124.277 441.939C124.045 442.161 123.765 442.273 123.439 442.273ZM134.66 446.534L133.154 446.96C133.059 446.709 132.92 446.465 132.735 446.229C132.555 445.987 132.309 445.788 131.996 445.632C131.684 445.476 131.284 445.398 130.796 445.398C130.129 445.398 129.572 445.552 129.127 445.859C128.687 446.162 128.467 446.548 128.467 447.017C128.467 447.434 128.618 447.763 128.921 448.004C129.224 448.246 129.698 448.447 130.342 448.608L131.961 449.006C132.936 449.242 133.663 449.605 134.141 450.092C134.62 450.575 134.859 451.198 134.859 451.96C134.859 452.585 134.679 453.144 134.319 453.636C133.964 454.129 133.467 454.517 132.827 454.801C132.188 455.085 131.445 455.227 130.597 455.227C129.485 455.227 128.564 454.986 127.835 454.503C127.105 454.02 126.644 453.314 126.45 452.386L128.04 451.989C128.192 452.576 128.478 453.016 128.9 453.31C129.326 453.603 129.882 453.75 130.569 453.75C131.35 453.75 131.97 453.584 132.43 453.253C132.894 452.917 133.126 452.514 133.126 452.045C133.126 451.667 132.993 451.349 132.728 451.094C132.463 450.833 132.056 450.639 131.506 450.511L129.688 450.085C128.689 449.848 127.955 449.482 127.487 448.984C127.022 448.482 126.79 447.855 126.79 447.102C126.79 446.487 126.963 445.942 127.309 445.469C127.659 444.995 128.135 444.624 128.737 444.354C129.343 444.084 130.029 443.949 130.796 443.949C131.876 443.949 132.723 444.186 133.339 444.659C133.959 445.133 134.399 445.758 134.66 446.534ZM144.709 446.534L143.203 446.96C143.109 446.709 142.969 446.465 142.784 446.229C142.604 445.987 142.358 445.788 142.046 445.632C141.733 445.476 141.333 445.398 140.845 445.398C140.178 445.398 139.621 445.552 139.176 445.859C138.736 446.162 138.516 446.548 138.516 447.017C138.516 447.434 138.667 447.763 138.97 448.004C139.273 448.246 139.747 448.447 140.391 448.608L142.01 449.006C142.986 449.242 143.712 449.605 144.191 450.092C144.669 450.575 144.908 451.198 144.908 451.96C144.908 452.585 144.728 453.144 144.368 453.636C144.013 454.129 143.516 454.517 142.877 454.801C142.237 455.085 141.494 455.227 140.647 455.227C139.534 455.227 138.613 454.986 137.884 454.503C137.155 454.02 136.693 453.314 136.499 452.386L138.09 451.989C138.241 452.576 138.528 453.016 138.949 453.31C139.375 453.603 139.932 453.75 140.618 453.75C141.399 453.75 142.02 453.584 142.479 453.253C142.943 452.917 143.175 452.514 143.175 452.045C143.175 451.667 143.042 451.349 142.777 451.094C142.512 450.833 142.105 450.639 141.556 450.511L139.737 450.085C138.738 449.848 138.004 449.482 137.536 448.984C137.072 448.482 136.84 447.855 136.84 447.102C136.84 446.487 137.013 445.942 137.358 445.469C137.709 444.995 138.184 444.624 138.786 444.354C139.392 444.084 140.078 443.949 140.845 443.949C141.925 443.949 142.772 444.186 143.388 444.659C144.008 445.133 144.449 445.758 144.709 446.534ZM147.031 455V444.091H148.707V455H147.031ZM147.883 442.273C147.557 442.273 147.275 442.161 147.038 441.939C146.806 441.716 146.69 441.449 146.69 441.136C146.69 440.824 146.806 440.556 147.038 440.334C147.275 440.111 147.557 440 147.883 440C148.21 440 148.489 440.111 148.721 440.334C148.958 440.556 149.076 440.824 149.076 441.136C149.076 441.449 148.958 441.716 148.721 441.939C148.489 442.161 148.21 442.273 147.883 442.273ZM155.809 455.227C154.824 455.227 153.96 454.993 153.217 454.524C152.478 454.055 151.9 453.4 151.484 452.557C151.072 451.714 150.866 450.729 150.866 449.602C150.866 448.466 151.072 447.474 151.484 446.626C151.9 445.779 152.478 445.121 153.217 444.652C153.96 444.183 154.824 443.949 155.809 443.949C156.794 443.949 157.655 444.183 158.394 444.652C159.137 445.121 159.715 445.779 160.127 446.626C160.544 447.474 160.752 448.466 160.752 449.602C160.752 450.729 160.544 451.714 160.127 452.557C159.715 453.4 159.137 454.055 158.394 454.524C157.655 454.993 156.794 455.227 155.809 455.227ZM155.809 453.722C156.557 453.722 157.173 453.53 157.655 453.146C158.138 452.763 158.496 452.259 158.728 451.634C158.96 451.009 159.076 450.331 159.076 449.602C159.076 448.873 158.96 448.194 158.728 447.564C158.496 446.934 158.138 446.425 157.655 446.037C157.173 445.649 156.557 445.455 155.809 445.455C155.061 445.455 154.445 445.649 153.962 446.037C153.479 446.425 153.122 446.934 152.89 447.564C152.658 448.194 152.542 448.873 152.542 449.602C152.542 450.331 152.658 451.009 152.89 451.634C153.122 452.259 153.479 452.763 153.962 453.146C154.445 453.53 155.061 453.722 155.809 453.722ZM164.587 448.438V455H162.911V444.091H164.53V445.795H164.672C164.928 445.241 165.316 444.796 165.837 444.46C166.358 444.119 167.03 443.949 167.854 443.949C168.592 443.949 169.239 444.1 169.793 444.403C170.347 444.702 170.778 445.156 171.085 445.767C171.393 446.373 171.547 447.14 171.547 448.068V455H169.871V448.182C169.871 447.325 169.648 446.657 169.203 446.179C168.758 445.696 168.147 445.455 167.371 445.455C166.836 445.455 166.358 445.571 165.936 445.803C165.52 446.035 165.19 446.373 164.949 446.818C164.708 447.263 164.587 447.803 164.587 448.438ZM183.867 455.227C182.882 455.227 182.018 454.993 181.274 454.524C180.536 454.055 179.958 453.4 179.541 452.557C179.129 451.714 178.924 450.729 178.924 449.602C178.924 448.466 179.129 447.474 179.541 446.626C179.958 445.779 180.536 445.121 181.274 444.652C182.018 444.183 182.882 443.949 183.867 443.949C184.852 443.949 185.713 444.183 186.452 444.652C187.195 445.121 187.773 445.779 188.185 446.626C188.602 447.474 188.81 448.466 188.81 449.602C188.81 450.729 188.602 451.714 188.185 452.557C187.773 453.4 187.195 454.055 186.452 454.524C185.713 454.993 184.852 455.227 183.867 455.227ZM183.867 453.722C184.615 453.722 185.23 453.53 185.713 453.146C186.196 452.763 186.554 452.259 186.786 451.634C187.018 451.009 187.134 450.331 187.134 449.602C187.134 448.873 187.018 448.194 186.786 447.564C186.554 446.934 186.196 446.425 185.713 446.037C185.23 445.649 184.615 445.455 183.867 445.455C183.119 445.455 182.503 445.649 182.02 446.037C181.537 446.425 181.18 446.934 180.948 447.564C180.716 448.194 180.6 448.873 180.6 449.602C180.6 450.331 180.716 451.009 180.948 451.634C181.18 452.259 181.537 452.763 182.02 453.146C182.503 453.53 183.119 453.722 183.867 453.722ZM192.645 448.438V455H190.968V444.091H192.588V445.795H192.73C192.986 445.241 193.374 444.796 193.895 444.46C194.415 444.119 195.088 443.949 195.912 443.949C196.65 443.949 197.297 444.1 197.851 444.403C198.405 444.702 198.835 445.156 199.143 445.767C199.451 446.373 199.605 447.14 199.605 448.068V455H197.929V448.182C197.929 447.325 197.706 446.657 197.261 446.179C196.816 445.696 196.205 445.455 195.429 445.455C194.894 445.455 194.415 445.571 193.994 445.803C193.577 446.035 193.248 446.373 193.007 446.818C192.765 447.263 192.645 447.803 192.645 448.438ZM208.317 455H206.47L211.811 440.455H213.629L218.97 455H217.123L212.777 442.756H212.663L208.317 455ZM208.998 449.318H216.442V450.881H208.998V449.318ZM222.345 455L218.368 440.455H220.157L223.197 452.301H223.339L226.436 440.455H228.424L231.521 452.301H231.663L234.703 440.455H236.493L232.515 455H230.697L227.487 443.409H227.373L224.163 455H222.345ZM246.242 444.091C246.156 443.371 245.811 442.812 245.205 442.415C244.599 442.017 243.855 441.818 242.975 441.818C242.331 441.818 241.767 441.922 241.284 442.131C240.806 442.339 240.432 442.625 240.162 442.99C239.897 443.355 239.764 443.769 239.764 444.233C239.764 444.621 239.857 444.955 240.041 445.234C240.231 445.509 240.472 445.739 240.766 445.923C241.059 446.103 241.367 446.252 241.689 446.371C242.011 446.484 242.307 446.577 242.577 446.648L244.054 447.045C244.433 447.145 244.854 447.282 245.318 447.457C245.787 447.633 246.235 447.872 246.661 448.175C247.092 448.473 247.447 448.857 247.726 449.325C248.005 449.794 248.145 450.369 248.145 451.051C248.145 451.837 247.939 452.547 247.527 453.182C247.12 453.816 246.523 454.321 245.737 454.695C244.956 455.069 244.007 455.256 242.889 455.256C241.848 455.256 240.946 455.088 240.183 454.751C239.426 454.415 238.829 453.946 238.394 453.345C237.963 452.744 237.719 452.045 237.662 451.25H239.48C239.528 451.799 239.712 452.254 240.034 452.614C240.361 452.969 240.773 453.234 241.27 453.409C241.772 453.58 242.312 453.665 242.889 453.665C243.562 453.665 244.165 453.556 244.701 453.338C245.236 453.116 245.659 452.808 245.972 452.415C246.284 452.017 246.441 451.553 246.441 451.023C246.441 450.54 246.306 450.147 246.036 449.844C245.766 449.541 245.411 449.295 244.97 449.105C244.53 448.916 244.054 448.75 243.543 448.608L241.753 448.097C240.617 447.77 239.717 447.304 239.054 446.697C238.391 446.091 238.06 445.298 238.06 444.318C238.06 443.504 238.28 442.794 238.72 442.188C239.165 441.577 239.762 441.103 240.51 440.767C241.263 440.426 242.103 440.256 243.031 440.256C243.969 440.256 244.802 440.424 245.531 440.76C246.261 441.091 246.838 441.546 247.264 442.124C247.695 442.701 247.923 443.357 247.946 444.091H246.242Z\",\n    fill: \"#66645E\"\n  })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    clipPath: \"url(#clip0_10_0)\"\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1129.8 199.901C1143.72 199.901 1155.01 188.537 1155.01 174.519C1155.01 160.5 1143.72 149.136 1129.8 149.136C1115.87 149.136 1104.58 160.5 1104.58 174.519C1104.58 188.537 1115.87 199.901 1129.8 199.901Z\",\n    fill: \"#F2F2F2\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1325.39 576.603C1362.86 547.867 1380.76 499.578 1369.56 453.514C1369.28 452.37 1368.99 451.228 1368.68 450.088C1361.25 422.745 1342.87 396.758 1316.08 388.021C1293.59 380.685 1269.03 386.326 1245.57 383.409C1199.5 377.683 1163.79 340.162 1138.66 300.877C1113.53 261.592 1094.22 217.619 1060.83 185.164C1005.79 131.667 916.01 120.149 847.769 154.971C779.529 189.794 736.061 267.05 737.915 344.045C739.769 421.041 785.174 494.654 851.114 533.71C875.337 548.058 903.354 558.222 931.237 554.666C955.43 551.58 977.412 538.493 1001.49 534.608C1039.35 528.5 1076.97 545.731 1109.71 565.811C1142.46 585.891 1174.09 609.691 1211.3 619C1247.43 628.039 1292.19 602.059 1325.39 576.603Z\",\n    fill: \"#F2F2F2\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1271.54 156.588C1270.72 156.037 1269.89 155.514 1269.07 154.982C1245.32 139.692 1219.86 127.27 1193.23 117.974L1187.05 203.739H1147.9V105.454C1145.44 104.941 1142.95 104.456 1140.47 104V203.739H1093.95C1068.33 203.739 1043.77 193.496 1025.66 175.264C1007.55 157.032 997.371 132.304 997.371 106.519V106.519C994.878 107.061 992.404 107.641 989.93 108.259V203.739H952.035L946.152 121.957C918.781 132.525 892.796 146.421 868.775 163.338C868.36 163.623 867.944 163.918 867.538 164.203C865.451 165.676 863.393 167.178 861.343 168.699V495.893H973.027L971.053 468.373L960.194 317.272H1178.89L1168.03 468.373L1166.05 495.893H1276.5V159.896C1274.86 158.775 1273.2 157.672 1271.54 156.588ZM989.93 292.318H958.399L952.573 211.23H989.93V292.318ZM1140.47 292.318H1087.51V290.711C1087.51 289.939 1087.36 289.174 1087.07 288.461C1086.78 287.748 1086.34 287.099 1085.8 286.554C1085.26 286.008 1084.61 285.576 1083.91 285.281C1083.2 284.986 1082.44 284.835 1081.67 284.836H1058.65C1057.88 284.836 1057.12 284.988 1056.41 285.283C1055.71 285.578 1055.06 286.011 1054.52 286.557C1053.98 287.102 1053.55 287.75 1053.25 288.463C1052.96 289.176 1052.81 289.94 1052.81 290.711V292.318H997.371V211.23H1140.47V292.318ZM1147.9 292.318V211.23H1186.52L1180.69 292.318H1147.9Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M697 516.846C705.203 526.631 714.076 535.827 723.554 544.366L1413.45 545.317C1422.92 536.778 1431.8 527.582 1440 517.796L697 516.846Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1164.84 428.724V510.196C1164.84 511.234 1165.25 512.229 1165.98 512.964C1166.71 513.698 1167.7 514.111 1168.73 514.111H1288.66C1289.69 514.111 1290.68 513.698 1291.41 512.964C1292.14 512.229 1292.55 511.234 1292.55 510.196V428.724C1292.55 427.686 1292.14 426.692 1291.41 425.959C1290.68 425.226 1289.69 424.814 1288.66 424.812H1168.73C1167.7 424.814 1166.71 425.226 1165.98 425.959C1165.25 426.692 1164.84 427.686 1164.84 428.724V428.724Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1167.65 429.737V509.191C1167.65 509.745 1167.87 510.277 1168.26 510.669C1168.65 511.062 1169.18 511.282 1169.73 511.283H1287.66C1288.21 511.282 1288.74 511.062 1289.13 510.669C1289.52 510.277 1289.74 509.745 1289.74 509.191V429.737C1289.74 429.182 1289.52 428.649 1289.13 428.256C1288.74 427.863 1288.21 427.642 1287.66 427.64H1169.73C1169.18 427.642 1168.65 427.863 1168.26 428.256C1167.87 428.649 1167.65 429.182 1167.65 429.737V429.737Z\",\n    fill: \"#6C63FF\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1162.33 526.085C1162.55 526.362 1162.83 526.586 1163.15 526.739C1163.46 526.892 1163.81 526.971 1164.17 526.969H1292.58C1292.93 526.968 1293.28 526.889 1293.6 526.737C1293.92 526.585 1294.19 526.363 1294.42 526.089C1294.64 525.814 1294.79 525.493 1294.88 525.15C1294.96 524.806 1294.97 524.448 1294.89 524.102L1292.9 514.57C1292.82 514.181 1292.64 513.82 1292.38 513.518C1292.13 513.216 1291.8 512.984 1291.43 512.842C1291.16 512.736 1290.88 512.682 1290.59 512.683H1166.15C1165.86 512.682 1165.58 512.736 1165.31 512.842C1164.94 512.984 1164.62 513.216 1164.36 513.518C1164.1 513.82 1163.92 514.181 1163.84 514.57L1161.85 524.102C1161.78 524.448 1161.78 524.805 1161.87 525.148C1161.95 525.491 1162.11 525.811 1162.33 526.085V526.085Z\",\n    fill: \"#2F2E41\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1286.18 516.788H1289.22C1289.47 516.788 1289.68 516.581 1289.68 516.324V514.863C1289.68 514.607 1289.47 514.399 1289.22 514.399H1286.18C1285.93 514.399 1285.72 514.607 1285.72 514.863V516.324C1285.72 516.581 1285.93 516.788 1286.18 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1278.27 516.788H1281.31C1281.56 516.788 1281.77 516.581 1281.77 516.324V514.863C1281.77 514.607 1281.56 514.399 1281.31 514.399H1278.27C1278.02 514.399 1277.81 514.607 1277.81 514.863V516.324C1277.81 516.581 1278.02 516.788 1278.27 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1270.36 516.788H1273.4C1273.65 516.788 1273.86 516.581 1273.86 516.324V514.863C1273.86 514.607 1273.65 514.399 1273.4 514.399H1270.36C1270.11 514.399 1269.9 514.607 1269.9 514.863V516.324C1269.9 516.581 1270.11 516.788 1270.36 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1262.45 516.788H1265.49C1265.74 516.788 1265.95 516.581 1265.95 516.324V514.863C1265.95 514.607 1265.74 514.399 1265.49 514.399H1262.45C1262.2 514.399 1261.99 514.607 1261.99 514.863V516.324C1261.99 516.581 1262.2 516.788 1262.45 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1254.54 516.788H1257.58C1257.83 516.788 1258.04 516.581 1258.04 516.324V514.863C1258.04 514.607 1257.83 514.399 1257.58 514.399H1254.54C1254.29 514.399 1254.08 514.607 1254.08 514.863V516.324C1254.08 516.581 1254.29 516.788 1254.54 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1246.63 516.788H1249.66C1249.92 516.788 1250.13 516.581 1250.13 516.324V514.863C1250.13 514.607 1249.92 514.399 1249.66 514.399H1246.63C1246.38 514.399 1246.17 514.607 1246.17 514.863V516.324C1246.17 516.581 1246.38 516.788 1246.63 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1238.72 516.788H1241.75C1242.01 516.788 1242.22 516.581 1242.22 516.324V514.863C1242.22 514.607 1242.01 514.399 1241.75 514.399H1238.72C1238.47 514.399 1238.26 514.607 1238.26 514.863V516.324C1238.26 516.581 1238.47 516.788 1238.72 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1230.81 516.788H1233.84C1234.1 516.788 1234.3 516.581 1234.3 516.324V514.863C1234.3 514.607 1234.1 514.399 1233.84 514.399H1230.81C1230.56 514.399 1230.35 514.607 1230.35 514.863V516.324C1230.35 516.581 1230.56 516.788 1230.81 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1222.9 516.788H1225.93C1226.19 516.788 1226.39 516.581 1226.39 516.324V514.863C1226.39 514.607 1226.19 514.399 1225.93 514.399H1222.9C1222.65 514.399 1222.44 514.607 1222.44 514.863V516.324C1222.44 516.581 1222.65 516.788 1222.9 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1214.99 516.788H1218.02C1218.28 516.788 1218.48 516.581 1218.48 516.324V514.863C1218.48 514.607 1218.28 514.399 1218.02 514.399H1214.99C1214.74 514.399 1214.53 514.607 1214.53 514.863V516.324C1214.53 516.581 1214.74 516.788 1214.99 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1207.08 516.788H1210.11C1210.37 516.788 1210.57 516.581 1210.57 516.324V514.863C1210.57 514.607 1210.37 514.399 1210.11 514.399H1207.08C1206.82 514.399 1206.62 514.607 1206.62 514.863V516.324C1206.62 516.581 1206.82 516.788 1207.08 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1199.17 516.788H1202.2C1202.46 516.788 1202.66 516.581 1202.66 516.324V514.863C1202.66 514.607 1202.46 514.399 1202.2 514.399H1199.17C1198.91 514.399 1198.71 514.607 1198.71 514.863V516.324C1198.71 516.581 1198.91 516.788 1199.17 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1191.26 516.788H1194.29C1194.55 516.788 1194.75 516.581 1194.75 516.324V514.863C1194.75 514.607 1194.55 514.399 1194.29 514.399H1191.26C1191 514.399 1190.8 514.607 1190.8 514.863V516.324C1190.8 516.581 1191 516.788 1191.26 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1183.35 516.788H1186.38C1186.64 516.788 1186.84 516.581 1186.84 516.324V514.863C1186.84 514.607 1186.64 514.399 1186.38 514.399H1183.35C1183.09 514.399 1182.89 514.607 1182.89 514.863V516.324C1182.89 516.581 1183.09 516.788 1183.35 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1175.44 516.788H1178.47C1178.73 516.788 1178.93 516.581 1178.93 516.324V514.863C1178.93 514.607 1178.73 514.399 1178.47 514.399H1175.44C1175.18 514.399 1174.98 514.607 1174.98 514.863V516.324C1174.98 516.581 1175.18 516.788 1175.44 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1167.53 516.788H1170.56C1170.81 516.788 1171.02 516.581 1171.02 516.324V514.863C1171.02 514.607 1170.81 514.399 1170.56 514.399H1167.53C1167.27 514.399 1167.07 514.607 1167.07 514.863V516.324C1167.07 516.581 1167.27 516.788 1167.53 516.788Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1286.28 520.77H1289.31C1289.56 520.77 1289.77 520.562 1289.77 520.306V518.845C1289.77 518.589 1289.56 518.381 1289.31 518.381H1286.28C1286.02 518.381 1285.82 518.589 1285.82 518.845V520.306C1285.82 520.562 1286.02 520.77 1286.28 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1278.37 520.77H1281.4C1281.65 520.77 1281.86 520.562 1281.86 520.306V518.845C1281.86 518.589 1281.65 518.381 1281.4 518.381H1278.37C1278.11 518.381 1277.91 518.589 1277.91 518.845V520.306C1277.91 520.562 1278.11 520.77 1278.37 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1270.46 520.77H1273.49C1273.74 520.77 1273.95 520.562 1273.95 520.306V518.845C1273.95 518.589 1273.74 518.381 1273.49 518.381H1270.46C1270.2 518.381 1270 518.589 1270 518.845V520.306C1270 520.562 1270.2 520.77 1270.46 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1262.55 520.77H1265.58C1265.83 520.77 1266.04 520.562 1266.04 520.306V518.845C1266.04 518.589 1265.83 518.381 1265.58 518.381H1262.55C1262.29 518.381 1262.08 518.589 1262.08 518.845V520.306C1262.08 520.562 1262.29 520.77 1262.55 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1254.64 520.77H1257.67C1257.92 520.77 1258.13 520.562 1258.13 520.306V518.845C1258.13 518.589 1257.92 518.381 1257.67 518.381H1254.64C1254.38 518.381 1254.17 518.589 1254.17 518.845V520.306C1254.17 520.562 1254.38 520.77 1254.64 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1246.72 520.77H1249.76C1250.01 520.77 1250.22 520.562 1250.22 520.306V518.845C1250.22 518.589 1250.01 518.381 1249.76 518.381H1246.72C1246.47 518.381 1246.26 518.589 1246.26 518.845V520.306C1246.26 520.562 1246.47 520.77 1246.72 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1238.81 520.77H1241.85C1242.1 520.77 1242.31 520.562 1242.31 520.306V518.845C1242.31 518.589 1242.1 518.381 1241.85 518.381H1238.81C1238.56 518.381 1238.35 518.589 1238.35 518.845V520.306C1238.35 520.562 1238.56 520.77 1238.81 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1230.9 520.77H1233.94C1234.19 520.77 1234.4 520.562 1234.4 520.306V518.845C1234.4 518.589 1234.19 518.381 1233.94 518.381H1230.9C1230.65 518.381 1230.44 518.589 1230.44 518.845V520.306C1230.44 520.562 1230.65 520.77 1230.9 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1222.99 520.77H1226.03C1226.28 520.77 1226.49 520.562 1226.49 520.306V518.845C1226.49 518.589 1226.28 518.381 1226.03 518.381H1222.99C1222.74 518.381 1222.53 518.589 1222.53 518.845V520.306C1222.53 520.562 1222.74 520.77 1222.99 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1215.08 520.77H1218.12C1218.37 520.77 1218.58 520.562 1218.58 520.306V518.845C1218.58 518.589 1218.37 518.381 1218.12 518.381H1215.08C1214.83 518.381 1214.62 518.589 1214.62 518.845V520.306C1214.62 520.562 1214.83 520.77 1215.08 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1207.17 520.77H1210.21C1210.46 520.77 1210.67 520.562 1210.67 520.306V518.845C1210.67 518.589 1210.46 518.381 1210.21 518.381H1207.17C1206.92 518.381 1206.71 518.589 1206.71 518.845V520.306C1206.71 520.562 1206.92 520.77 1207.17 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1199.26 520.77H1202.3C1202.55 520.77 1202.76 520.562 1202.76 520.306V518.845C1202.76 518.589 1202.55 518.381 1202.3 518.381H1199.26C1199.01 518.381 1198.8 518.589 1198.8 518.845V520.306C1198.8 520.562 1199.01 520.77 1199.26 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1191.35 520.77H1194.39C1194.64 520.77 1194.85 520.562 1194.85 520.306V518.845C1194.85 518.589 1194.64 518.381 1194.39 518.381H1191.35C1191.1 518.381 1190.89 518.589 1190.89 518.845V520.306C1190.89 520.562 1191.1 520.77 1191.35 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1183.44 520.77H1186.47C1186.73 520.77 1186.94 520.562 1186.94 520.306V518.845C1186.94 518.589 1186.73 518.381 1186.47 518.381H1183.44C1183.19 518.381 1182.98 518.589 1182.98 518.845V520.306C1182.98 520.562 1183.19 520.77 1183.44 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1175.53 520.77H1178.56C1178.82 520.77 1179.03 520.562 1179.03 520.306V518.845C1179.03 518.589 1178.82 518.381 1178.56 518.381H1175.53C1175.28 518.381 1175.07 518.589 1175.07 518.845V520.306C1175.07 520.562 1175.28 520.77 1175.53 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1167.62 520.77H1170.65C1170.91 520.77 1171.11 520.562 1171.11 520.306V518.845C1171.11 518.589 1170.91 518.381 1170.65 518.381H1167.62C1167.37 518.381 1167.16 518.589 1167.16 518.845V520.306C1167.16 520.562 1167.37 520.77 1167.62 520.77Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1220.62 525.548H1251.34C1251.59 525.548 1251.8 525.34 1251.8 525.084V523.623C1251.8 523.367 1251.59 523.159 1251.34 523.159H1220.62C1220.37 523.159 1220.16 523.367 1220.16 523.623V525.084C1220.16 525.34 1220.37 525.548 1220.62 525.548Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1188.07 445.023H1185.39C1184.57 445.023 1183.91 445.687 1183.91 446.507C1183.91 447.326 1184.57 447.991 1185.39 447.991H1188.07C1188.89 447.991 1189.55 447.326 1189.55 446.507C1189.55 445.687 1188.89 445.023 1188.07 445.023Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1218.79 445.023H1216.1C1215.29 445.023 1214.63 445.687 1214.63 446.507C1214.63 447.326 1215.29 447.991 1216.1 447.991H1218.79C1219.6 447.991 1220.26 447.326 1220.26 446.507C1220.26 445.687 1219.6 445.023 1218.79 445.023Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1227.49 445.023H1224.8C1223.99 445.023 1223.33 445.687 1223.33 446.507C1223.33 447.326 1223.99 447.991 1224.8 447.991H1227.49C1228.3 447.991 1228.96 447.326 1228.96 446.507C1228.96 445.687 1228.3 445.023 1227.49 445.023Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1210.43 444.775H1193.74C1192.93 444.775 1192.27 445.44 1192.27 446.259C1192.27 447.079 1192.93 447.743 1193.74 447.743H1210.43C1211.25 447.743 1211.91 447.079 1211.91 446.259C1211.91 445.44 1211.25 444.775 1210.43 444.775Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1251.38 444.775H1234.69C1233.88 444.775 1233.22 445.44 1233.22 446.259C1233.22 447.079 1233.88 447.743 1234.69 447.743H1251.38C1252.19 447.743 1252.85 447.079 1252.85 446.259C1252.85 445.44 1252.19 444.775 1251.38 444.775Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1196.26 451.722H1193.58C1192.76 451.722 1192.1 452.386 1192.1 453.206C1192.1 454.025 1192.76 454.69 1193.58 454.69H1196.26C1197.08 454.69 1197.74 454.025 1197.74 453.206C1197.74 452.386 1197.08 451.722 1196.26 451.722Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1226.98 451.722H1224.29C1223.48 451.722 1222.82 452.386 1222.82 453.206C1222.82 454.025 1223.48 454.69 1224.29 454.69H1226.98C1227.79 454.69 1228.45 454.025 1228.45 453.206C1228.45 452.386 1227.79 451.722 1226.98 451.722Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1235.68 451.722H1232.99C1232.18 451.722 1231.52 452.386 1231.52 453.206C1231.52 454.025 1232.18 454.69 1232.99 454.69H1235.68C1236.49 454.69 1237.15 454.025 1237.15 453.206C1237.15 452.386 1236.49 451.722 1235.68 451.722Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1218.62 451.474H1201.93C1201.12 451.474 1200.46 452.139 1200.46 452.958C1200.46 453.778 1201.12 454.442 1201.93 454.442H1218.62C1219.44 454.442 1220.1 453.778 1220.1 452.958C1220.1 452.139 1219.44 451.474 1218.62 451.474Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1259.57 451.474H1242.88C1242.07 451.474 1241.41 452.139 1241.41 452.958C1241.41 453.778 1242.07 454.442 1242.88 454.442H1259.57C1260.38 454.442 1261.04 453.778 1261.04 452.958C1261.04 452.139 1260.38 451.474 1259.57 451.474Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1204.45 458.42H1201.77C1200.95 458.42 1200.29 459.085 1200.29 459.904C1200.29 460.724 1200.95 461.388 1201.77 461.388H1204.45C1205.27 461.388 1205.93 460.724 1205.93 459.904C1205.93 459.085 1205.27 458.42 1204.45 458.42Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1235.17 458.42H1232.48C1231.67 458.42 1231.01 459.085 1231.01 459.904C1231.01 460.724 1231.67 461.388 1232.48 461.388H1235.17C1235.98 461.388 1236.64 460.724 1236.64 459.904C1236.64 459.085 1235.98 458.42 1235.17 458.42Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1243.87 458.42H1241.18C1240.37 458.42 1239.71 459.085 1239.71 459.904C1239.71 460.724 1240.37 461.388 1241.18 461.388H1243.87C1244.68 461.388 1245.34 460.724 1245.34 459.904C1245.34 459.085 1244.68 458.42 1243.87 458.42Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1226.81 458.173H1210.12C1209.31 458.173 1208.65 458.837 1208.65 459.657C1208.65 460.476 1209.31 461.141 1210.12 461.141H1226.81C1227.63 461.141 1228.29 460.476 1228.29 459.657C1228.29 458.837 1227.63 458.173 1226.81 458.173Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1267.76 458.173H1251.07C1250.26 458.173 1249.6 458.837 1249.6 459.657C1249.6 460.476 1250.26 461.141 1251.07 461.141H1267.76C1268.57 461.141 1269.23 460.476 1269.23 459.657C1269.23 458.837 1268.57 458.173 1267.76 458.173Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1212.64 465.119H1209.96C1209.14 465.119 1208.48 465.783 1208.48 466.603C1208.48 467.422 1209.14 468.087 1209.96 468.087H1212.64C1213.46 468.087 1214.12 467.422 1214.12 466.603C1214.12 465.783 1213.46 465.119 1212.64 465.119Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1243.35 465.119H1240.67C1239.86 465.119 1239.2 465.783 1239.2 466.603C1239.2 467.422 1239.86 468.087 1240.67 468.087H1243.35C1244.17 468.087 1244.83 467.422 1244.83 466.603C1244.83 465.783 1244.17 465.119 1243.35 465.119Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1252.06 465.119H1249.37C1248.56 465.119 1247.9 465.783 1247.9 466.603C1247.9 467.422 1248.56 468.087 1249.37 468.087H1252.06C1252.87 468.087 1253.53 467.422 1253.53 466.603C1253.53 465.783 1252.87 465.119 1252.06 465.119Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1235 464.871H1218.31C1217.5 464.871 1216.84 465.536 1216.84 466.355C1216.84 467.175 1217.5 467.839 1218.31 467.839H1235C1235.82 467.839 1236.48 467.175 1236.48 466.355C1236.48 465.536 1235.82 464.871 1235 464.871Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1218.79 491.756H1216.1C1215.29 491.756 1214.63 492.42 1214.63 493.24C1214.63 494.059 1215.29 494.724 1216.1 494.724H1218.79C1219.6 494.724 1220.26 494.059 1220.26 493.24C1220.26 492.42 1219.6 491.756 1218.79 491.756Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1227.49 491.756H1224.8C1223.99 491.756 1223.33 492.42 1223.33 493.24C1223.33 494.059 1223.99 494.724 1224.8 494.724H1227.49C1228.3 494.724 1228.96 494.059 1228.96 493.24C1228.96 492.42 1228.3 491.756 1227.49 491.756Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1251.38 492.003H1234.69C1233.88 492.003 1233.22 492.668 1233.22 493.487C1233.22 494.307 1233.88 494.971 1234.69 494.971H1251.38C1252.19 494.971 1252.85 494.307 1252.85 493.487C1252.85 492.668 1252.19 492.003 1251.38 492.003Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1188.07 491.756H1185.39C1184.57 491.756 1183.91 492.42 1183.91 493.24C1183.91 494.059 1184.57 494.724 1185.39 494.724H1188.07C1188.89 494.724 1189.55 494.059 1189.55 493.24C1189.55 492.42 1188.89 491.756 1188.07 491.756Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1210.43 492.003H1193.74C1192.93 492.003 1192.27 492.668 1192.27 493.487C1192.27 494.307 1192.93 494.971 1193.74 494.971H1210.43C1211.25 494.971 1211.91 494.307 1211.91 493.487C1211.91 492.668 1211.25 492.003 1210.43 492.003Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1196.26 485.057H1193.58C1192.76 485.057 1192.1 485.721 1192.1 486.541C1192.1 487.361 1192.76 488.025 1193.58 488.025H1196.26C1197.08 488.025 1197.74 487.361 1197.74 486.541C1197.74 485.721 1197.08 485.057 1196.26 485.057Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1226.98 485.057H1224.29C1223.48 485.057 1222.82 485.721 1222.82 486.541C1222.82 487.361 1223.48 488.025 1224.29 488.025H1226.98C1227.79 488.025 1228.45 487.361 1228.45 486.541C1228.45 485.721 1227.79 485.057 1226.98 485.057Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1235.68 485.057H1232.99C1232.18 485.057 1231.52 485.721 1231.52 486.541C1231.52 487.361 1232.18 488.025 1232.99 488.025H1235.68C1236.49 488.025 1237.15 487.361 1237.15 486.541C1237.15 485.721 1236.49 485.057 1235.68 485.057Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1218.62 485.305H1201.93C1201.12 485.305 1200.46 485.969 1200.46 486.788C1200.46 487.608 1201.12 488.272 1201.93 488.272H1218.62C1219.44 488.272 1220.1 487.608 1220.1 486.788C1220.1 485.969 1219.44 485.305 1218.62 485.305Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1204.45 478.358H1201.77C1200.95 478.358 1200.29 479.023 1200.29 479.842C1200.29 480.662 1200.95 481.326 1201.77 481.326H1204.45C1205.27 481.326 1205.93 480.662 1205.93 479.842C1205.93 479.023 1205.27 478.358 1204.45 478.358Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1235.17 478.358H1232.48C1231.67 478.358 1231.01 479.023 1231.01 479.842C1231.01 480.662 1231.67 481.326 1232.48 481.326H1235.17C1235.98 481.326 1236.64 480.662 1236.64 479.842C1236.64 479.023 1235.98 478.358 1235.17 478.358Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1243.87 478.358H1241.18C1240.37 478.358 1239.71 479.023 1239.71 479.842C1239.71 480.662 1240.37 481.326 1241.18 481.326H1243.87C1244.68 481.326 1245.34 480.662 1245.34 479.842C1245.34 479.023 1244.68 478.358 1243.87 478.358Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1226.81 478.606H1210.12C1209.31 478.606 1208.65 479.27 1208.65 480.09C1208.65 480.909 1209.31 481.574 1210.12 481.574H1226.81C1227.63 481.574 1228.29 480.909 1228.29 480.09C1228.29 479.27 1227.63 478.606 1226.81 478.606Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1212.64 471.66H1209.96C1209.14 471.66 1208.48 472.324 1208.48 473.144C1208.48 473.963 1209.14 474.628 1209.96 474.628H1212.64C1213.46 474.628 1214.12 473.963 1214.12 473.144C1214.12 472.324 1213.46 471.66 1212.64 471.66Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1243.35 471.66H1240.67C1239.86 471.66 1239.2 472.324 1239.2 473.144C1239.2 473.963 1239.86 474.628 1240.67 474.628H1243.35C1244.17 474.628 1244.83 473.963 1244.83 473.144C1244.83 472.324 1244.17 471.66 1243.35 471.66Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1252.06 471.66H1249.37C1248.56 471.66 1247.9 472.324 1247.9 473.144C1247.9 473.963 1248.56 474.628 1249.37 474.628H1252.06C1252.87 474.628 1253.53 473.963 1253.53 473.144C1253.53 472.324 1252.87 471.66 1252.06 471.66Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1235 471.907H1218.31C1217.5 471.907 1216.84 472.572 1216.84 473.391C1216.84 474.211 1217.5 474.875 1218.31 474.875H1235C1235.82 474.875 1236.48 474.211 1236.48 473.391C1236.48 472.572 1235.82 471.907 1235 471.907Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1173.8 570.262L1161.19 550.202L1200.76 518.449L1217.09 500.234C1219.21 497.867 1221.92 496.103 1224.93 495.117C1227.94 494.131 1231.15 493.958 1234.25 494.615C1237.35 495.272 1240.22 496.736 1242.58 498.861C1244.95 500.986 1246.71 503.698 1247.7 506.725C1249.18 511.21 1248.86 516.096 1246.82 520.351C1244.78 524.607 1241.18 527.898 1236.78 529.531L1210.95 539.109L1173.8 570.262Z\",\n    fill: \"#FFB6B6\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M878.014 424.816V522.312H945.863V424.816C945.864 424.115 945.642 423.432 945.229 422.867C944.816 422.303 944.234 421.886 943.568 421.679C943.254 421.575 942.926 421.523 942.595 421.527H881.291C880.861 421.526 880.436 421.611 880.038 421.776C879.641 421.94 879.28 422.183 878.976 422.488C878.671 422.793 878.43 423.156 878.265 423.556C878.1 423.955 878.015 424.384 878.014 424.816V424.816ZM904.493 458.316C904.51 456.394 905.281 454.557 906.638 453.204C907.994 451.851 909.826 451.092 911.735 451.092C913.645 451.092 915.477 451.851 916.833 453.204C918.19 454.557 918.961 456.394 918.978 458.316V469.628C918.969 471.556 918.201 473.401 916.844 474.76C915.487 476.119 913.65 476.883 911.735 476.883C909.821 476.883 907.984 476.119 906.627 474.76C905.27 473.401 904.502 471.556 904.493 469.628V458.316Z\",\n    fill: \"#2F2E41\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M877.807 519.194V528.595C877.808 529.082 878 529.549 878.342 529.895C878.683 530.24 879.145 530.436 879.629 530.44H944.248C944.732 530.437 945.196 530.242 945.537 529.896C945.879 529.551 946.071 529.083 946.071 528.595V519.194H877.807Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M771.279 277.926V455.94C771.281 458.208 772.177 460.383 773.77 461.987C775.364 463.591 777.525 464.493 779.778 464.495H1041.82C1044.08 464.493 1046.24 463.591 1047.83 461.987C1049.42 460.383 1050.32 458.208 1050.32 455.94V277.926C1050.32 275.66 1049.42 273.488 1047.83 271.886C1046.23 270.284 1044.07 269.383 1041.82 269.38H779.778C777.526 269.383 775.368 270.284 773.775 271.886C772.182 273.488 771.285 275.66 771.279 277.926Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M777.427 280.141V453.744C777.429 454.956 777.908 456.117 778.759 456.975C779.611 457.832 780.765 458.314 781.969 458.316H1039.64C1040.85 458.314 1042 457.832 1042.85 456.975C1043.7 456.117 1044.18 454.956 1044.18 453.744V280.141C1044.18 278.928 1043.71 277.764 1042.85 276.905C1042 276.046 1040.85 275.562 1039.64 275.559H781.969C780.763 275.562 779.608 276.046 778.757 276.905C777.905 277.764 777.427 278.928 777.427 280.141Z\",\n    fill: \"white\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M825.246 529.803C825.509 530.134 825.842 530.401 826.221 530.583C826.601 530.766 827.017 530.86 827.437 530.858H980.736C981.155 530.857 981.569 530.763 981.948 530.581C982.326 530.399 982.659 530.135 982.923 529.807C983.187 529.479 983.376 529.096 983.474 528.686C983.573 528.276 983.579 527.849 983.493 527.436L981.114 516.057C981.015 515.593 980.803 515.161 980.496 514.801C980.189 514.44 979.798 514.163 979.357 513.994C979.039 513.868 978.699 513.803 978.356 513.804H829.807C829.465 513.803 829.125 513.868 828.806 513.994C828.366 514.163 827.975 514.44 827.668 514.801C827.361 515.161 827.149 515.593 827.05 516.057L824.67 527.436C824.586 527.849 824.593 528.275 824.693 528.685C824.793 529.094 824.982 529.476 825.246 529.803Z\",\n    fill: \"#2F2E41\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1031.28 299.474H790.176C789.925 299.468 789.687 299.364 789.512 299.184C789.336 299.003 789.238 298.761 789.238 298.509C789.238 298.256 789.336 298.014 789.512 297.834C789.687 297.653 789.925 297.549 790.176 297.543H1031.28C1031.53 297.549 1031.77 297.653 1031.94 297.834C1032.12 298.014 1032.22 298.256 1032.22 298.509C1032.22 298.761 1032.12 299.003 1031.94 299.184C1031.77 299.364 1031.53 299.468 1031.28 299.474V299.474Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M806.588 292.615C809.691 292.615 812.207 290.026 812.207 286.833C812.207 283.639 809.691 281.05 806.588 281.05C803.485 281.05 800.969 283.639 800.969 286.833C800.969 290.026 803.485 292.615 806.588 292.615Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M825.999 292.615C829.103 292.615 831.618 290.026 831.618 286.833C831.618 283.639 829.103 281.05 825.999 281.05C822.896 281.05 820.38 283.639 820.38 286.833C820.38 290.026 822.896 292.615 825.999 292.615Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M845.411 292.615C848.514 292.615 851.03 290.026 851.03 286.833C851.03 283.639 848.514 281.05 845.411 281.05C842.307 281.05 839.792 283.639 839.792 286.833C839.792 290.026 842.307 292.615 845.411 292.615Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1019.59 282.48H1005.8C1005.53 282.486 1005.27 282.6 1005.08 282.796C1004.89 282.992 1004.78 283.256 1004.78 283.53C1004.78 283.805 1004.89 284.068 1005.08 284.265C1005.27 284.461 1005.53 284.574 1005.8 284.581H1019.59C1019.87 284.577 1020.13 284.464 1020.32 284.268C1020.51 284.071 1020.62 283.806 1020.62 283.53C1020.62 283.254 1020.51 282.989 1020.32 282.793C1020.13 282.596 1019.87 282.484 1019.59 282.48Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1019.59 286.425H1005.8C1005.53 286.431 1005.27 286.544 1005.08 286.741C1004.89 286.937 1004.78 287.201 1004.78 287.475C1004.78 287.75 1004.89 288.014 1005.08 288.21C1005.27 288.406 1005.53 288.52 1005.8 288.526H1019.59C1019.87 288.522 1020.13 288.41 1020.32 288.214C1020.51 288.017 1020.62 287.752 1020.62 287.475C1020.62 287.199 1020.51 286.934 1020.32 286.737C1020.13 286.54 1019.87 286.428 1019.59 286.425V286.425Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1019.59 290.37H1005.8C1005.53 290.376 1005.27 290.49 1005.08 290.686C1004.89 290.882 1004.78 291.146 1004.78 291.42C1004.78 291.695 1004.89 291.958 1005.08 292.155C1005.27 292.351 1005.53 292.464 1005.8 292.471H1019.59C1019.87 292.467 1020.13 292.355 1020.32 292.158C1020.51 291.961 1020.62 291.696 1020.62 291.42C1020.62 291.144 1020.51 290.879 1020.32 290.683C1020.13 290.486 1019.87 290.374 1019.59 290.37V290.37Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1351.97 523.32C1352.38 524.539 1353.17 525.595 1354.22 526.334C1355.27 527.074 1356.53 527.46 1357.81 527.437L1382.82 526.789C1384.11 526.764 1385.36 526.319 1386.38 525.521C1387.4 524.723 1388.13 523.615 1388.47 522.362L1392.01 484.254C1393.27 484.827 1394.63 485.11 1396.01 485.082C1397.21 485.052 1398.39 484.784 1399.49 484.295C1400.58 483.806 1401.57 483.104 1402.39 482.23C1403.22 481.356 1403.87 480.327 1404.3 479.201C1404.73 478.076 1404.93 476.876 1404.9 475.67C1404.87 474.464 1404.61 473.276 1404.12 472.174C1403.64 471.072 1402.94 470.077 1402.07 469.245C1401.2 468.414 1400.18 467.763 1399.06 467.33C1397.94 466.897 1396.75 466.689 1395.55 466.719C1395 466.717 1394.45 466.775 1393.92 466.891C1393.33 466.253 1392.62 465.745 1391.82 465.401C1391.03 465.056 1390.18 464.883 1389.31 464.892L1350.83 465.892C1350.51 465.904 1350.19 465.944 1349.88 466.011C1349.04 466.169 1348.24 466.508 1347.54 467.004C1346.83 467.499 1346.24 468.141 1345.81 468.885C1345.37 469.63 1345.1 470.46 1345.01 471.319C1344.92 472.178 1345.01 473.047 1345.28 473.867L1351.97 523.32ZM1392.74 481.667L1395.26 472.586C1395.54 471.537 1395.55 470.43 1395.27 469.378C1395.4 469.377 1395.51 469.319 1395.63 469.319C1397.35 469.283 1399.03 469.938 1400.27 471.14C1401.52 472.343 1402.25 473.994 1402.29 475.733C1402.33 477.472 1401.68 479.155 1400.49 480.415C1399.3 481.675 1397.66 482.408 1395.93 482.454C1394.82 482.489 1393.71 482.217 1392.74 481.667Z\",\n    fill: \"#2F2E41\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1349.88 466.011C1350.7 470.73 1359.92 474.047 1371 473.47C1381.19 472.998 1389.53 469.395 1391.05 465.125C1390.49 464.957 1389.9 464.878 1389.31 464.892L1350.83 465.892C1350.51 465.904 1350.19 465.944 1349.88 466.011V466.011Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1373.03 502.379C1373.08 502.367 1373.13 502.345 1373.18 502.316L1378.61 498.737C1378.67 498.693 1378.73 498.635 1378.77 498.565C1378.8 498.496 1378.82 498.418 1378.82 498.339C1378.82 498.26 1378.8 498.183 1378.77 498.113C1378.73 498.044 1378.68 497.985 1378.61 497.942L1372.96 494.218C1372.91 494.184 1372.85 494.16 1372.79 494.148C1372.73 494.136 1372.67 494.137 1372.61 494.149C1372.55 494.162 1372.49 494.186 1372.44 494.222C1372.39 494.257 1372.34 494.302 1372.31 494.354C1372.27 494.406 1372.25 494.465 1372.24 494.526C1372.23 494.588 1372.23 494.651 1372.24 494.712C1372.25 494.774 1372.28 494.832 1372.31 494.883C1372.35 494.935 1372.39 494.979 1372.45 495.013L1377.49 498.338L1372.66 501.521C1372.57 501.583 1372.5 501.676 1372.47 501.783C1372.43 501.891 1372.44 502.007 1372.49 502.11C1372.53 502.213 1372.61 502.296 1372.71 502.346C1372.81 502.395 1372.93 502.407 1373.03 502.379H1373.03Z\",\n    fill: \"#6C63FF\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1364.45 502.778C1364.54 502.755 1364.63 502.704 1364.69 502.634C1364.75 502.563 1364.79 502.475 1364.81 502.382C1364.82 502.288 1364.8 502.192 1364.76 502.107C1364.72 502.022 1364.65 501.952 1364.57 501.905L1359.56 499.015L1364.4 495.395C1364.45 495.358 1364.5 495.311 1364.53 495.258C1364.56 495.204 1364.58 495.145 1364.59 495.083C1364.6 495.022 1364.6 494.959 1364.58 494.898C1364.57 494.838 1364.54 494.781 1364.5 494.731C1364.47 494.681 1364.42 494.638 1364.37 494.606C1364.31 494.574 1364.25 494.553 1364.19 494.544C1364.13 494.535 1364.07 494.538 1364.01 494.553C1363.95 494.569 1363.89 494.596 1363.84 494.633L1358.42 498.685C1358.36 498.732 1358.31 498.794 1358.28 498.865C1358.24 498.937 1358.23 499.016 1358.23 499.094C1358.24 499.173 1358.26 499.25 1358.3 499.317C1358.34 499.384 1358.4 499.439 1358.47 499.479L1364.1 502.729C1364.21 502.791 1364.33 502.808 1364.45 502.778V502.778Z\",\n    fill: \"#6C63FF\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1372.49 505.516C1372.54 505.505 1372.58 505.486 1372.62 505.462C1372.68 505.429 1372.72 505.386 1372.76 505.336C1372.8 505.286 1372.82 505.229 1372.84 505.168C1372.85 505.107 1372.85 505.044 1372.84 504.983C1372.83 504.921 1372.81 504.862 1372.78 504.808L1365.08 492.062C1365.01 491.955 1364.91 491.878 1364.79 491.848C1364.67 491.818 1364.54 491.839 1364.43 491.904C1364.32 491.97 1364.25 492.075 1364.22 492.198C1364.19 492.32 1364.21 492.449 1364.27 492.557L1371.97 505.303C1372.03 505.39 1372.11 505.457 1372.2 505.496C1372.29 505.534 1372.4 505.541 1372.49 505.516Z\",\n    fill: \"#6C63FF\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M939.536 351.948H897.806C896.103 351.948 894.723 353.337 894.723 355.051V359.155C894.723 360.869 896.103 362.258 897.806 362.258H939.536C941.238 362.258 942.618 360.869 942.618 359.155V355.051C942.618 353.337 941.238 351.948 939.536 351.948Z\",\n    fill: \"#6C63FF\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M963.859 372.568H873.482C871.779 372.568 870.399 373.957 870.399 375.671V379.775C870.399 381.489 871.779 382.878 873.482 382.878H963.859C965.562 382.878 966.942 381.489 966.942 379.775V375.671C966.942 373.957 965.562 372.568 963.859 372.568Z\",\n    fill: \"#E6E6E6\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M963.859 393.188H873.482C871.779 393.188 870.399 394.577 870.399 396.291V400.395C870.399 402.109 871.779 403.498 873.482 403.498H963.859C965.562 403.498 966.942 402.109 966.942 400.395V396.291C966.942 394.577 965.562 393.188 963.859 393.188Z\",\n    fill: \"#E6E6E6\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M971.521 462.237L971.725 462.888L971.736 462.91L977.898 481.768L984.986 503.5L998.322 544.34L998.452 550.684V550.706L999.443 601.739L996.696 608.658L999.787 620.001C999.787 620.001 998.365 602.855 990.739 612.702C986.419 618.297 981.367 624.023 977.219 629.391C983.263 631.853 989.403 634.08 995.64 636.071C996.987 636.505 998.344 636.917 999.701 637.329C999.992 637.416 1000.28 637.503 1000.57 637.589C1021.25 643.745 1042.62 647.203 1064.17 647.881C1065.29 647.913 1066.39 647.935 1067.46 647.957C1067.84 647.968 1068.2 647.978 1068.57 647.978C1069.78 647.989 1070.97 648 1072.18 648C1074.61 648 1077.04 647.964 1079.45 647.892C1097.31 647.385 1115.06 644.967 1132.42 640.68C1132.3 633.469 1131.97 625.043 1131.51 616.042C1131.3 611.628 1126.46 606.846 1126.17 602.226C1125.96 598.756 1130.31 595.492 1130.08 591.967C1128.61 570.268 1126.78 578.597 1125.43 563.231C1125.29 561.724 1125.16 560.281 1125.04 558.904C1124.16 549.036 1123.56 542.865 1123.56 542.865L1129.36 506.092L1138.46 448.357L1137.76 447.196L1136.97 446.806L1088.96 422.883L1086.35 416.16C1085.59 414.223 1084.28 412.559 1082.57 411.382C1080.86 410.205 1078.85 409.569 1076.78 409.556L1045.15 409.425C1043.51 409.418 1041.89 409.805 1040.43 410.553C1038.96 411.302 1037.7 412.391 1036.74 413.731L1028.17 425.67L971.521 462.237Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1005.62 535.253L998.452 550.684L993.561 561.225L985.148 605.568L980.936 610.068L977.327 594.136L939.557 602.579C938.318 595.649 939.225 602.813 938.46 595.211C938.676 594.994 938.902 594.777 939.128 594.56C939.732 593.996 940.238 593.465 940.227 592.955C939.796 566.734 941.089 522.109 951.883 495.074C953.573 490.66 955.802 486.475 958.519 482.614C958.734 482.321 958.939 482.028 959.143 481.736C964.12 474.719 967.266 467.811 971.725 462.899V462.888C971.753 462.866 971.779 462.84 971.801 462.812C971.817 462.804 971.832 462.793 971.844 462.78L1002.48 446.426L1003.79 483.601L1004.73 510.321L1005.62 535.253Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1116.08 539.636L1125.03 558.909L1128.16 565.622L1136.57 609.96L1140.77 614.45L1144.38 598.522L1146.08 598.171L1176.73 591.78L1185.67 620.343C1187.68 616.966 1188.47 612.992 1187.91 609.094C1187.35 605.195 1185.47 601.612 1182.59 598.949C1181.98 598.393 1181.47 597.852 1181.48 597.34C1181.99 566.499 1180.12 510.184 1163.19 487.005C1157.82 479.65 1154.59 472.323 1149.9 467.205C1149.89 467.191 1149.89 467.176 1149.87 467.176L1138.46 448.355L1137.76 447.2L1136.97 446.805L1116.08 539.636Z\",\n    fill: \"#3F3D56\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1061.88 400.364C1085.12 400.364 1103.95 381.4 1103.95 358.006C1103.95 334.613 1085.12 315.648 1061.88 315.648C1038.64 315.648 1019.8 334.613 1019.8 358.006C1019.8 381.4 1038.64 400.364 1061.88 400.364Z\",\n    fill: \"#FFB6B6\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1118.75 328.419C1118.42 328.069 1118.03 327.788 1117.59 327.593C1117.16 327.399 1116.69 327.295 1116.21 327.288L1116.84 325.52C1117.05 324.963 1117.1 324.361 1117 323.775C1116.9 323.189 1116.65 322.641 1116.27 322.187C1115.89 321.732 1115.39 321.387 1114.84 321.188C1114.28 320.989 1113.68 320.942 1113.1 321.052L1110.8 321.499L1111.01 319.949C1111.1 319.372 1111.03 318.783 1110.82 318.24C1110.61 317.697 1110.26 317.219 1109.81 316.853C1109.36 316.486 1108.82 316.244 1108.25 316.151C1107.68 316.057 1107.09 316.115 1106.55 316.318C1106.05 316.514 1105.52 316.596 1104.99 316.558C1104.46 316.52 1103.95 316.363 1103.49 316.099C1103.03 315.844 1102.62 315.489 1102.31 315.06C1102 314.632 1101.78 314.14 1101.68 313.618L1100.87 309.721L1100.79 309.512C1096.88 302.952 1089.36 298.18 1080.16 296.431C1071.98 294.862 1063.58 295.661 1055.49 296.412C1052.28 296.716 1048.65 297.058 1045.63 298.922C1043.06 300.519 1040.89 303.713 1041.33 306.935C1033.36 304.473 1024.8 309.388 1020.56 315.586C1015.54 322.963 1014.71 332.203 1014.58 339.428C1014.22 356.52 1017.73 370.503 1024.97 380.998C1025.5 381.759 1025.63 383.346 1026.68 383.879L1026.46 383.527C1027.63 384.116 1028.82 385.067 1028.38 386.084C1027.1 389.012 1035.57 395.486 1041.54 397.625C1052.43 401.532 1066.91 401.199 1077.09 399.792L1077.44 397.368C1081.12 396.864 1083.71 395.904 1084.43 394.402C1085.72 393.299 1086.81 392.311 1087.77 391.398L1087.78 391.389C1087.79 391.37 1087.83 391.341 1087.85 391.322C1092.45 386.883 1093.52 384.354 1094 380.504C1094.46 376.73 1093.64 372.899 1092.8 369.448C1110.5 372.205 1085.83 350.474 1102.32 346.272C1102.51 346.213 1102.7 346.166 1102.89 346.13C1103.38 346.015 1103.86 345.901 1104.32 345.768C1106.55 345.159 1108.69 344.241 1110.67 343.04C1115.27 340.217 1116.79 336.471 1119.17 332.25C1119.52 331.649 1119.66 330.954 1119.58 330.265C1119.51 329.576 1119.22 328.929 1118.75 328.419V328.419Z\",\n    fill: \"#2F2E41\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M1210.7 542.651C1210.69 544.315 1210.67 546.644 1210.59 549.524C1210.58 549.924 1210.57 550.332 1210.56 550.751C1210.44 556.046 1210.32 560.485 1210.12 565.419C1210.11 565.761 1210.1 566.094 1210.08 566.436C1209.82 573.318 1209.4 581.332 1208.68 594.023C1207.35 617.465 1205.03 597.245 1202.7 605.468C1202.58 605.877 1202.46 606.362 1202.35 606.932C1202 609.002 1201.4 611.022 1200.57 612.95C1199.34 613.691 1198.06 614.404 1196.81 615.117C1193.23 617.123 1189.59 619.053 1185.93 620.887C1183.87 621.914 1181.8 622.922 1179.72 623.891C1179.39 624.043 1179.07 624.196 1178.75 624.338C1168.11 629.292 1157.15 633.503 1145.94 636.943C1143.74 637.609 1141.56 638.255 1139.35 638.854C1137.05 639.501 1134.75 640.109 1132.41 640.679C1115.06 644.968 1097.31 647.386 1079.45 647.895C1077.04 647.971 1074.61 647.999 1072.18 647.999C1070.97 647.999 1069.78 647.99 1068.57 647.98C1068.2 647.98 1067.83 647.971 1067.46 647.961C1066.4 647.933 1065.29 647.914 1064.18 647.885C1042.63 647.208 1021.25 643.748 1000.58 637.59L999.7 637.333C998.34 636.915 996.99 636.506 995.639 636.069C989.407 634.082 983.266 631.858 977.216 629.395C972.598 627.523 968.034 625.514 963.524 623.369C963.482 623.357 963.444 623.338 963.41 623.311C962.466 622.874 961.512 622.418 960.568 621.952C960.445 621.886 960.313 621.819 960.181 621.752C956.658 620.022 953.174 618.21 949.727 616.315C946.828 609.613 942.749 608.33 940.218 602.436C939.481 600.685 938.949 598.854 938.632 596.979C938.632 596.96 938.622 596.941 938.622 596.913C938.887 600.449 937.498 590.639 938.613 596.875C938.603 596.761 938.594 596.637 938.584 596.494C938.556 596.152 938.518 595.734 938.462 595.211C935.223 563.375 935.43 526.966 934.023 496.964C933.929 495.025 933.831 493.168 933.731 491.394C933.702 490.804 933.665 490.225 933.627 489.654C933.693 489.483 933.768 489.302 933.853 489.131C933.871 489.082 933.894 489.034 933.919 488.989C933.947 488.93 933.979 488.873 934.014 488.818C934.033 488.789 934.061 488.751 934.08 488.723C934.094 488.69 934.11 488.658 934.127 488.628C934.212 488.494 934.307 488.352 934.411 488.219C934.458 488.162 934.496 488.114 934.543 488.067C934.575 488.018 934.613 487.973 934.656 487.934C934.685 487.888 934.72 487.846 934.76 487.81C934.798 487.772 934.835 487.724 934.883 487.677C934.903 487.647 934.929 487.621 934.958 487.601C935.033 487.515 935.115 487.435 935.204 487.363C935.541 487.051 935.901 486.765 936.28 486.508C936.412 486.422 936.554 486.337 936.686 486.242C937.638 485.668 938.64 485.185 939.68 484.797C940.039 484.663 940.397 484.54 940.785 484.407C940.926 484.369 941.058 484.321 941.2 484.274C941.408 484.207 941.616 484.141 941.833 484.093C942.909 483.77 944.071 483.494 945.327 483.238C945.478 483.209 945.638 483.181 945.799 483.142C946.025 483.095 946.262 483.057 946.498 483.019C946.819 482.962 947.149 482.905 947.48 482.848C950.284 482.401 953.467 482.068 956.979 481.85C957.31 481.831 957.64 481.812 957.971 481.793C958.358 481.774 958.745 481.755 959.142 481.736C959.472 481.717 959.812 481.707 960.152 481.698C960.483 481.679 960.823 481.669 961.172 481.66C962.126 481.631 963.108 481.602 964.109 481.583C966.961 481.526 969.964 481.545 973.118 481.612C974.581 481.65 976.073 481.688 977.603 481.755C977.707 481.755 977.801 481.764 977.896 481.764C979.227 481.812 980.568 481.869 981.947 481.945C982.91 481.992 983.883 482.04 984.855 482.097C985.771 482.154 986.697 482.211 987.632 482.277C988.359 482.315 989.086 482.372 989.822 482.42C990.446 482.468 991.069 482.515 991.692 482.553L992.542 482.61C993.005 482.648 993.467 482.677 993.94 482.724C994.978 482.81 996.017 482.895 997.075 482.981C998.123 483.076 999.19 483.171 1000.26 483.266C1001.32 483.361 1002.4 483.466 1003.48 483.57C1003.59 483.58 1003.69 483.589 1003.8 483.599C1004.78 483.703 1005.76 483.798 1006.75 483.903C1006.98 483.922 1007.22 483.941 1007.44 483.97C1008.39 484.065 1009.35 484.177 1010.31 484.279C1010.6 484.311 1010.89 484.342 1011.18 484.374C1011.93 484.456 1012.67 484.527 1013.42 484.616C1014.41 484.73 1015.42 484.835 1016.4 484.968C1017.17 485.053 1017.93 485.139 1018.7 485.234C1019.9 485.376 1021.12 485.529 1022.33 485.69C1022.8 485.747 1023.26 485.804 1023.72 485.871C1027.2 486.308 1030.71 486.793 1034.28 487.297C1039.69 488.067 1045.19 488.903 1050.72 489.806C1056.26 490.709 1061.84 491.663 1067.44 492.668C1068.86 492.924 1070.28 493.181 1071.7 493.447C1072.35 493.571 1072.99 493.694 1073.63 493.818C1074.73 494.018 1075.82 494.227 1076.92 494.436C1078.01 494.645 1079.11 494.854 1080.2 495.073C1081.51 495.329 1082.82 495.586 1084.12 495.843C1092.7 497.554 1101.24 499.379 1109.57 501.29C1110.94 501.603 1112.31 501.927 1113.67 502.24C1116.39 502.877 1119.08 503.524 1121.75 504.18C1122.49 504.351 1123.22 504.531 1123.94 504.712C1125.76 505.168 1127.57 505.625 1129.35 506.09L1129.66 506.176C1130.98 506.499 1132.26 506.832 1133.55 507.174C1136.58 507.973 1139.56 508.781 1142.49 509.598C1144.43 510.14 1146.36 510.688 1148.26 511.243C1151.1 512.07 1153.89 512.906 1156.6 513.752C1157.27 513.962 1157.94 514.171 1158.6 514.37C1160.58 514.988 1162.54 515.616 1164.43 516.243C1165.95 516.737 1167.42 517.241 1168.87 517.745C1170.33 518.249 1171.75 518.753 1173.15 519.256C1174.05 519.58 1174.93 519.922 1175.82 520.245C1177.1 520.72 1178.35 521.196 1179.58 521.671C1179.96 521.814 1180.33 521.966 1180.7 522.108C1180.93 522.213 1181.16 522.298 1181.38 522.394C1181.83 522.574 1182.28 522.745 1182.72 522.926C1183.16 523.097 1183.59 523.278 1184.03 523.468C1184.45 523.639 1184.89 523.819 1185.3 524C1185.73 524.171 1186.14 524.352 1186.56 524.542C1186.91 524.685 1187.25 524.837 1187.58 524.989C1188.25 525.283 1188.92 525.578 1189.57 525.882C1189.89 526.034 1190.21 526.177 1190.53 526.329L1191.27 526.671C1191.38 526.728 1191.48 526.776 1191.58 526.823C1191.82 526.938 1192.06 527.061 1192.3 527.175C1192.85 527.432 1193.39 527.708 1193.92 527.964C1194.62 528.325 1195.31 528.687 1195.97 529.038C1196.64 529.4 1197.3 529.761 1197.92 530.113C1198.02 530.17 1198.12 530.227 1198.22 530.284C1198.36 530.36 1198.5 530.445 1198.65 530.521C1199.13 530.797 1199.59 531.082 1200.05 531.358C1200.96 531.919 1201.82 532.47 1202.62 533.021C1202.8 533.145 1202.97 533.269 1203.15 533.383C1203.75 533.81 1204.31 534.229 1204.84 534.657C1204.84 534.666 1204.84 534.666 1204.85 534.666C1205.03 534.799 1205.2 534.942 1205.37 535.075C1205.51 535.208 1205.66 535.322 1205.8 535.455C1206.3 535.883 1206.75 536.291 1207.16 536.71C1207.3 536.839 1207.44 536.975 1207.56 537.119C1207.62 537.164 1207.67 537.215 1207.71 537.271C1207.9 537.461 1208.07 537.651 1208.23 537.841C1208.26 537.867 1208.28 537.896 1208.3 537.927C1208.52 538.193 1208.73 538.459 1208.93 538.725C1209.02 538.858 1209.13 538.991 1209.21 539.124C1209.33 539.286 1209.44 539.457 1209.53 539.619C1209.62 539.752 1209.69 539.894 1209.77 540.028C1209.97 540.37 1210.14 540.73 1210.28 541.102C1210.39 541.354 1210.47 541.615 1210.54 541.881C1210.61 542.134 1210.66 542.391 1210.7 542.651V542.651Z\",\n    fill: \"#2F2E41\"\n  }), /*#__PURE__*/React.createElement(\"path\", {\n    opacity: 0.2,\n    d: \"M1210.7 542.651C1210.69 544.315 1210.67 546.644 1210.59 549.524C1210.58 549.924 1210.56 550.332 1210.55 550.751C1210.46 554.791 1210.32 559.781 1210.12 565.419C1210.11 565.761 1210.1 566.094 1210.08 566.436C1209.82 573.318 1209.4 581.332 1208.68 594.023C1207.35 617.465 1205.03 597.245 1202.7 605.468C1196.22 601.457 1189.12 597.255 1181.53 592.939C1180.16 592.16 1178.78 591.377 1177.38 590.591C1162.2 582.064 1145.24 573.128 1127.53 564.278C1126.83 563.926 1126.12 563.574 1125.43 563.232C1084.87 543.051 1040.6 523.42 1004.73 510.321C997.811 507.792 991.201 505.511 984.988 503.505C971.899 499.293 960.587 496.347 951.88 495.073C942.815 493.742 936.554 494.217 934.023 496.964C933.929 495.025 933.831 493.168 933.731 491.394C933.693 490.804 933.655 490.225 933.617 489.654C933.676 489.498 933.751 489.348 933.825 489.198C933.835 489.176 933.843 489.153 933.853 489.131C933.871 489.082 933.894 489.034 933.919 488.989C933.947 488.93 933.979 488.873 934.014 488.818C934.045 488.75 934.083 488.686 934.127 488.627C934.212 488.494 934.307 488.352 934.41 488.219C934.487 488.119 934.569 488.024 934.656 487.933C934.685 487.888 934.72 487.846 934.76 487.81C934.798 487.772 934.835 487.724 934.883 487.677C934.903 487.647 934.928 487.621 934.958 487.601C935.033 487.514 935.115 487.435 935.204 487.363C935.541 487.051 935.9 486.765 936.28 486.508C936.412 486.422 936.554 486.336 936.686 486.241C937.638 485.668 938.64 485.185 939.68 484.797C940.039 484.663 940.397 484.54 940.785 484.407C940.926 484.369 941.058 484.321 941.2 484.274C941.408 484.207 941.616 484.141 941.833 484.093C942.909 483.77 944.071 483.494 945.327 483.237C945.704 483.161 946.101 483.085 946.498 483.019C946.819 482.962 947.149 482.905 947.48 482.848C950.284 482.401 953.467 482.068 956.979 481.85C957.31 481.831 957.64 481.812 957.971 481.793C958.358 481.774 958.745 481.755 959.142 481.735C959.472 481.716 959.812 481.707 960.152 481.697C960.483 481.678 960.823 481.669 961.172 481.659C962.126 481.631 963.108 481.602 964.109 481.583C966.961 481.536 969.964 481.555 973.118 481.621C974.581 481.65 976.073 481.697 977.603 481.764C977.698 481.764 977.801 481.774 977.896 481.774C979.227 481.812 980.578 481.878 981.947 481.945C982.91 481.992 983.883 482.04 984.855 482.097C985.771 482.154 986.697 482.211 987.632 482.277C988.359 482.315 989.086 482.372 989.822 482.42C990.446 482.467 991.069 482.515 991.692 482.553C992.438 482.61 993.184 482.667 993.94 482.724C994.978 482.81 996.017 482.895 997.075 482.981C998.123 483.076 999.19 483.171 1000.26 483.266C1001.32 483.361 1002.4 483.466 1003.48 483.57C1003.59 483.58 1003.69 483.589 1003.8 483.599C1004.78 483.703 1005.76 483.798 1006.75 483.903C1012.25 484.464 1017.91 485.12 1023.72 485.871C1027.2 486.318 1030.72 486.796 1034.28 487.306C1039.69 488.076 1045.19 488.913 1050.72 489.806C1056.26 490.709 1061.84 491.663 1067.44 492.668C1068.86 492.924 1070.28 493.181 1071.7 493.447C1073.44 493.77 1075.18 494.1 1076.92 494.436C1078.01 494.645 1079.11 494.854 1080.2 495.073C1081.51 495.329 1082.82 495.586 1084.12 495.843C1092.7 497.554 1101.24 499.379 1109.57 501.29C1110.94 501.603 1112.31 501.927 1113.67 502.24C1116.39 502.877 1119.08 503.524 1121.75 504.18C1122.49 504.36 1123.22 504.541 1123.94 504.721C1125.76 505.178 1127.57 505.634 1129.35 506.09V506.1C1129.46 506.119 1129.56 506.147 1129.66 506.176C1130.97 506.509 1132.26 506.841 1133.55 507.184C1136.58 507.982 1139.56 508.787 1142.49 509.598C1144.43 510.149 1146.36 510.691 1148.26 511.243C1151.1 512.079 1153.89 512.916 1156.6 513.752C1157.27 513.962 1157.94 514.171 1158.6 514.37C1160.58 514.998 1162.53 515.622 1164.43 516.243C1165.95 516.737 1167.42 517.241 1168.87 517.745C1170.33 518.249 1171.75 518.753 1173.15 519.257C1174.06 519.58 1174.94 519.912 1175.82 520.236C1177.11 520.711 1178.35 521.186 1179.58 521.671C1179.96 521.814 1180.33 521.966 1180.7 522.108C1181.38 522.375 1182.06 522.65 1182.72 522.926C1183.16 523.097 1183.59 523.278 1184.03 523.468C1184.45 523.639 1184.89 523.819 1185.3 524C1185.73 524.171 1186.14 524.352 1186.56 524.542C1186.91 524.685 1187.25 524.837 1187.58 524.989C1188.25 525.283 1188.92 525.578 1189.57 525.882C1189.89 526.034 1190.21 526.177 1190.53 526.329L1191.27 526.671C1191.38 526.728 1191.48 526.776 1191.58 526.823C1192.39 527.204 1193.16 527.584 1193.92 527.964C1194.62 528.325 1195.31 528.687 1195.97 529.038C1196.76 529.457 1197.5 529.865 1198.22 530.284C1198.36 530.36 1198.5 530.445 1198.65 530.521C1199.13 530.797 1199.59 531.082 1200.05 531.358C1200.96 531.919 1201.82 532.47 1202.62 533.021C1203.42 533.573 1204.15 534.115 1204.84 534.657C1204.84 534.666 1204.84 534.666 1204.85 534.666C1205.18 534.932 1205.5 535.198 1205.8 535.455C1206.3 535.883 1206.75 536.292 1207.16 536.71C1207.3 536.839 1207.44 536.975 1207.56 537.119C1207.62 537.164 1207.67 537.215 1207.71 537.271C1207.91 537.489 1208.11 537.708 1208.3 537.927C1208.52 538.193 1208.73 538.459 1208.93 538.725C1209.02 538.858 1209.13 538.991 1209.21 539.124C1209.33 539.286 1209.44 539.457 1209.53 539.619C1209.62 539.752 1209.7 539.894 1209.77 540.028C1209.97 540.37 1210.14 540.73 1210.28 541.102C1210.38 541.355 1210.47 541.616 1210.54 541.881C1210.61 542.134 1210.66 542.391 1210.7 542.651V542.651Z\",\n    fill: \"black\"\n  }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n    id: \"clip0_10_0\"\n  }, /*#__PURE__*/React.createElement(\"rect\", {\n    width: 743,\n    height: 544,\n    fill: \"white\",\n    transform: \"translate(697 104)\"\n  })))));\n};\nconst ForwardRef = /*#__PURE__*/forwardRef(SvgHome);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/Home.fa54de9b326fa07ff2d54a33f32c2697.svg\";","// © 2023 Amazon Web Services, Inc. or its affiliates. All Rights Reserved.\n// This AWS Content is provided subject to the terms of the AWS Customer Agreement available at\n// http://aws.amazon.com/agreement or other written agreement between Customer and either\n// Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both.\nimport React, { useEffect, useState } from \"react\";\nimport { Amplify, Auth, Hub } from \"aws-amplify\";\nimport { Spin, Layout } from \"antd\";\nimport awsconfig from \"./aws-exports\";\nimport Nav from \"./components/Navigation/Nav\";\nimport home from \"./media/Home.svg\";\nimport \"./index.css\";\nimport { fetchGroups } from \"./components/Shared/RequestService\";\nimport { Button } from \"@awsui/components-react\";\n\nconst { Header, Content } = Layout;\n\nAmplify.configure(awsconfig);\n\nfunction Home(props) {\n  return (\n    <Layout className=\"site-layout\">\n      <Header className=\"site-layout-background\" style={{ padding: 0 }} />\n      <Content className=\"layout\">\n        <Spin spinning={props.loading} size=\"large\">\n          <Button\n            className=\"homebutton\"\n            variant=\"primary\"\n            onClick={() => Auth.federatedSignIn()}\n          >\n            Federated Sign In\n          </Button>\n          <img src={home} alt=\"Homepage\" className=\"home\" />\n        </Spin>\n      </Content>\n    </Layout>\n  );\n}\nfunction App() {\n  const [user, setUser] = useState(null);\n  const [groups, setGroups] = useState(null);\n  const [cognitoGroups, setcognitoGroups] = useState([]);\n  const [userId, setUserId] = useState(null);\n  const [groupIds, setGroupIds] = useState(null);\n  const [loading, setLoading] = useState(true);\n\n  useEffect(() => {\n    Hub.listen(\"auth\", ({ payload: { event, data } }) => {\n      // eslint-disable-next-line default-case\n      switch (event) {\n        case \"signIn\":\n          console.log(\"User signed in\");\n          break;\n        // eslint-disable-next-line no-fallthrough\n        case \"cognitoHostedUI\":\n          setData();\n          break;\n        case \"signOut\":\n          console.log(\"User signed out\");\n          setLoading(false);\n          break;\n        case \"signIn_failure\":\n          console.log(\"User sign in failure\");\n          break;\n        case \"cognitoHostedUI_failure\":\n          console.log(\"Sign in failure\");\n          break;\n      }\n    });\n\n    setData();\n  }, []);\n\n  function setData() {\n    getUser().then((userData) => {\n      setUser(userData);\n      const payload = userData.signInUserSession.idToken.payload;\n      setcognitoGroups(payload[\"cognito:groups\"]);\n      setUserId(payload.userId);\n      setGroupIds((payload.groupIds).split(','));\n      setGroups((payload.groups).split(','));\n      setLoading(false);\n    });\n  }\n\n  async function getUser() {\n    try {\n      const userData = await Auth.currentAuthenticatedUser();\n      return userData;\n    } catch {\n      setLoading(false);\n      return console.log(\"Not signed in\");\n    }\n  }\n\n  return (\n    <div>\n      {groups ? (\n        <Nav\n          user={user}\n          groupIds={groupIds}\n          userId={userId}\n          groups={groups}\n          cognitoGroups={cognitoGroups}\n        />\n      ) : (\n        <Home loading={loading} />\n      )}\n    </div>\n  );\n}\n\nexport default App;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport \"@awsui/global-styles/index.css\";\nimport { Amplify } from \"aws-amplify\";\nimport awsconfig from \"./aws-exports\";\nAmplify.configure(awsconfig);\n\nReactDOM.render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>,\n  document.getElementById(\"root\")\n);\n"],"names":["constants_1","require","RawSha256","state","Int32Array","from","INIT","temp","buffer","Uint8Array","bufferLength","bytesHashed","finished","prototype","update","data","this","Error","position","byteLength","MAX_HASHABLE_LENGTH","BLOCK_SIZE","hashBuffer","digest","bitsHashed","bufferView","DataView","byteOffset","undecoratedLength","setUint8","i","setUint32","Math","floor","out","DIGEST_LENGTH","state0","state1","state2","state3","state4","state5","state6","state7","u","t1_1","t2_1","t1","KEY","t2","exports","Uint32Array","pow","__exportStar","RawSha256_1","util_1","Sha256","secret","hash","outer","inner","input","convertToBuffer","bufferHash","set","bufferFromSecret","toHash","isEmptyData","error","e","digestSync","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","create","__assign","assign","t","s","n","arguments","length","call","apply","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","push","__createBinding","o","m","k","k2","undefined","__values","__read","ar","__spread","concat","__spreadArrays","il","a","j","jl","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__importStar","mod","__esModule","default","__importDefault","__classPrivateFieldGet","receiver","privateMap","has","get","__classPrivateFieldSet","util_utf8_browser_1","fromUtf8","Buffer","ArrayBuffer","isView","BYTES_PER_ELEMENT","convertToBuffer_1","enumerable","isEmptyData_1","numToUint8_1","numToUint8","uint32ArrayFrom_1","uint32ArrayFrom","num","a_lookUpTable","return_array","TextEncoder","encode","textEncoderFromUtf8","bytes","len","charCodeAt","surrogatePair","jsFromUtf8","toUtf8","TextDecoder","decode","textEncoderToUtf8","decoded","byte","String","fromCharCode","nextByte","encoded","map","byteValue","toString","join","decodeURIComponent","jsToUtf8","balanced","str","RegExp","maybeMatch","range","start","end","pre","slice","post","reg","match","begs","beg","left","right","ai","bi","module","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","code","output","base64","ieee754","isArray","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","arg","encodingOrOffset","allocUnsafe","array","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","fromString","obj","isBuffer","checked","copy","val","type","fromObject","assertSize","size","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","found","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","global","foo","subarray","typedArraySupport","poolSize","_augment","species","configurable","alloc","fill","allocUnsafeSlow","_isBuffer","compare","x","list","pos","swap16","swap32","swap64","equals","inspect","max","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","trim","replace","stringtrim","base64clean","src","dst","hasOwn","classNames","classes","argType","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","name","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","targetStatics","sourceStatics","descriptor","for","h","l","w","z","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","log","LN2","self","fetch","factory","define","OldCookies","window","Cookies","api","noConflict","extend","attributes","init","converter","document","path","defaults","expires","Date","toUTCString","JSON","stringify","test","encodeURIComponent","escape","stringifiedAttributes","attributeName","split","cookie","json","jar","cookies","charAt","parse","getJSON","remove","withConverter","iteratee","index","asciiSize","baseProperty","getRawTag","objectToString","symToStringTag","toStringTag","object","nativeFloor","arrayMap","isSymbol","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","baseSlice","baseRepeat","castSlice","hasUnicode","stringSize","stringToArray","nativeCeil","ceil","chars","charsLength","freeGlobal","objectProto","nativeObjectToString","isOwn","tag","unmasked","reHasUnicode","freeSelf","root","Function","unicodeSize","asciiToArray","unicodeToArray","reWhitespace","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","lastIndex","isObject","now","toNumber","nativeMax","nativeMin","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","clearTimeout","cancel","flush","baseGetTag","isObjectLike","createPadding","toInteger","strLength","INFINITY","toFinite","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","isBinary","hookCallback","some","hooks","setHookCallback","callback","hasOwnProp","isObjectEmpty","isUndefined","isNumber","isDate","fn","arrLen","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","to","prop","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","argLen","stack","deprecations","deprecateSimple","isFunction","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","_calendar","zeroFill","number","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","M","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","sort","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","values","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","propIsEnumerable","test1","test2","test3","letter","err","shouldUseNative","symbols","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","capture","group","modifier","asterisk","partial","repeat","optional","pattern","prevText","escapeGroup","restrictBacktrack","escapeString","encodeURIComponentPretty","encodeURI","opts","pretty","segment","attachKeys","re","sensitive","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","getShim","isRequired","ReactPropTypes","bigint","bool","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","qs","sep","eq","regexp","maxKeys","kstr","vstr","idx","stringifyPrimitive","ks","_createClass","defineProperties","writable","Constructor","protoProps","staticProps","_react","_react2","_core","_metaProps","CSVDownload","_React$Component","instance","_classCallCheck","_this","ReferenceError","_possibleConstructorReturn","subClass","superClass","_inherits","buildURI","_props","headers","enclosingCharacter","uFEFF","specs","page","open","Component","_extends","CSVLink","bind","event","isAsync","navigator","msSaveOrOpenBlob","preventDefault","filename","csvData","blob","Blob","toCSV","msSaveBlob","_this2","onClick","proceed","handleLegacy","_this3","asyncOnClick","handleAsyncClick","handleSyncClick","_this4","_props2","children","rest","_objectWithoutProperties","href","createElement","download","ref","link","handleClick","_typeof","_toConsumableArray","isSafari","userAgent","isJsons","every","row","isArrays","jsonsHeaders","reduce","Set","jsons2arrays","jsons","headerLabels","headerKeys","header","getHeaderValue","foundValue","splice","elementOrEmpty","joiner","column","arrays2csv","jsons2csv","string2csv","csv","dataURI","URL","webkitURL","createObjectURL","_Download2","_interopRequireDefault","_Link2","PropsNotForwarded","_propTypes","aa","ba","ca","da","ea","fa","ha","ia","ja","ka","B","acceptsBooleans","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","D","oa","pa","qa","ma","na","la","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","construct","Qa","_render","Ra","_context","_payload","_init","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","cb","ownerDocument","eb","Children","db","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","html","mathml","svg","lb","mb","nb","ob","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","style","setProperty","substring","ub","menuitem","area","br","col","embed","hr","img","keygen","meta","param","track","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","addEventListener","removeEventListener","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","child","sibling","current","bc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","nc","Map","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","delete","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","F","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","id","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","email","password","search","tel","text","url","me","ne","oe","listeners","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Me","contains","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","listener","G","$e","af","bf","random","cf","df","passive","Nb","ef","ff","parentWindow","gf","hf","J","K","Q","je","char","ke","unshift","jf","kf","lf","mf","autoFocus","nf","__html","of","pf","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","H","I","Cf","N","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","O","eg","fg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","context","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","yg","zg","eventTime","lane","payload","Ag","Bg","Cg","C","Dg","Eg","Fg","refs","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","updater","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Pg","Qg","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","mode","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","documentElement","tagName","fh","gh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","R","S","T","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","action","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","useState","getSnapshot","subscribe","useEffect","setSnapshot","Oh","Ph","Qh","Rh","destroy","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ci","di","readContext","useCallback","useContext","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","ri","pendingContext","Bi","Ci","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","last","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","createElementNS","createTextNode","V","Hi","Ii","Ji","Ki","Li","Mi","message","Ni","Oi","WeakMap","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","display","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","X","Y","qj","rj","sj","tj","uj","vj","wj","ck","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","top","scrollTop","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","kk","hk","_calculateChangedBits","unstable_observedBits","unmount","querySelectorAll","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","react_1","react_is_1","flattenChildren","depth","acc","nodeIndex","isValidElement","cloneElement","__self","__source","jsx","jsxs","setState","forceUpdate","_status","_result","IsSomeRendererActing","count","only","PureComponent","createContext","_currentValue2","_threadCount","Provider","Consumer","createFactory","createRef","forwardRef","lazy","memo","performance","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","requestAnimationFrame","port2","port1","onmessage","postMessage","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","objA","objB","compareContext","keysA","keysB","bHasOwnProperty","valueA","valueB","XMLHttpRequest","status","statusText","responseURL","responseText","response","entries","method","onload","getAllResponseHeaders","onerror","withCredentials","credentials","setRequestHeader","send","punycode","maxInt","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","extra","counter","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","basic","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","util","Url","protocol","slashes","auth","host","port","hostname","query","pathname","urlParse","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","toASCII","esc","qm","relative","resolveObject","rel","tkeys","tkey","rkeys","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","hasTrailingSlash","up","isAbsolute","v1","v4","uuid","byteToHex","bth","getRandomValues","crypto","msCrypto","rnds8","rnds","_nodeId","_clockseq","rng","bytesToUuid","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","_defineProperties","Observable","hasSymbols","hasSymbol","Boolean","getSymbol","observable","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","ctor","isObservable","hostReportError","enqueue","cleanupSubscription","subscription","cleanup","_cleanup","unsubscribe","closeSubscription","_observer","_queue","_state","notifySubscription","observer","onNotify","flushSubscription","Subscription","subscriber","subscriptionObserver","SubscriptionObserver","_subscription","_subscriber","complete","hasSeed","hasValue","first","_this5","_len","sources","_key","startNext","_this6","subscriptions","completeIfDone","closed","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_item","_len2","items","_key2","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","definition","globalThis","nmd","paths","LOG_TYPE","__spreadArray","pack","LOG_LEVELS","VERBOSE","DEBUG","INFO","WARN","ERROR","ConsoleLogger","level","_pluggables","_padding","_ts","getMinutes","getSeconds","getMilliseconds","configure","_log","e_1","logger_level_name","LOG_LEVEL","_b","_c","plugin","logEvent","timestamp","pushLogs","e_1_1","info","debug","verbose","addPluggable","pluggable","getCategoryName","listPluggables","logger","LoggerClass","AmplifyClass","_components","_modules","Auth","Analytics","API","Credentials","Storage","I18n","Cache","PubSub","Interactions","Pushnotification","UI","XR","Predictions","DataStore","Geo","Notifications","Logger","ServiceWorker","register","comp","getModuleName","Amplify","CognitoHostedUIIdentityProvider","AuthErrorTypes","GRAPHQL_AUTH_MODE","isFederatedSignInOptions","find","isCognitoHostedOpts","oauth","redirectSignIn","AMPLIFY_SYMBOL","HubClass","patterns","protectedChannels","_remove","channel","pattern_1","holder","ampSymbol","capsule","patternInfo","_toListeners","listen","listenerName","onHubCapsule","isLegacyCallback","payloadStr_1","dispatchingCapsule","Hub","dataMemory","MemoryStorage","setItem","getItem","removeItem","clear","StorageHelper","storageWindow","localStorage","exception","getStorage","browserOrNode","isBrowser","isNode","process","versions","NonRetryableError","_super","nonRetryable","isNonRetryableError","MAX_DELAY_MS","jitteredBackoff","maxDelayMs","attempt","Framework","Category","AnalyticsAction","ApiAction","AuthAction","DataStoreAction","GeoAction","InAppMessagingAction","InteractionsAction","PredictionsAction","PubSubAction","PushNotificationAction","StorageAction","jitteredExponentialRetry","functionToRetry","onTerminate","delayFn","terminated","timeout","wakeUp","lastError","_loop_1","state_1","err_1","retryIn_1","retry","waitForInit","rej","auth2","GoogleOAuth","initialized","refreshGoogleToken","_refreshGoogleTokenImpl","ga","getAuthInstance","googleAuth","googleUser","currentUser","isSignedIn","reloadAuthResponse","authResponse","id_token","expires_at","catch","FacebookOAuth","refreshFacebookToken","_refreshFacebookTokenImpl","errorMessage","getLoginStatus","fbResponse","accessToken","expiresIn","scope","GoogleOAuthClass","FacebookOAuthClass","defaultPartition","outputs","dnsSuffix","regionRegex","regions","partitionsInfo","partitions","getDnsSuffix","region","partitions_1","partitions_1_1","cancellableSleep","timeoutMs","abortSignal","aborted","timeoutId","sleepPromiseResolveFn","sleepPromise","cancelSleep","addOrIncrementMetadataAttempts","nextHandlerOutput","attempts","composeTransferHandler","coreHandler","middleware","request","composedHandler","resolvedMiddleware","withMemoization","payloadAccessor","cached","shouldSendBody","unauthenticatedHandler","resp","responseHeaders","httpResponse","bodyWithMixin","_e","signal","statusCode","userAgentHeader","userAgentValue","headerName","maxAttempts","retryDecider","computeDelay","attemptsCount","handleTerminalErrorOrResponse","parseMetadata","isMetadataBearer","$metadata","httpStatusCode","requestId","extendedRequestId","cfId","parseJsonError","parseJsonBody","rawValue","cleanValue","sanitizeErrorCode","__type","Message","CLOCK_SKEW_ERROR_CODES","isClockSkewError","errorCode","THROTTLING_ERROR_CODES","TIMEOUT_ERROR_CODES","isThrottlingError","isConnectionError","isServerSideError","DEFAULT_MAX_DELAY_MS","globalExists","windowExists","documentExists","processExists","keyPrefixMatch","startsWith","frameworkCache","detectionMap","platform","Expo","detectionMethod","ReactNative","product","NextJs","Nuxt","Angular","angularVersionSetInDocument","querySelector","angularContentSetInWindow","React","elementKeyPrefixedWithReact","VueJs","Svelte","WebUnknown","NextJsSSR","NuxtSSR","ReactSSR","VueJsSSR","AngularSSR","SvelteSSR","frameworkChangeObservers","resetTriggered","detectFramework","detectionEntry","ServerSideUnknown","detect","fcn","resetTimeout","observeFrameworkChanges","framework","errorParser","BASE_USER_AGENT","Platform","PlatformBuilder","getAmplifyUserAgent","customUserAgentDetails","category","getAmplifyUserAgentObject","userAgentString","agentKey","agentValue","cognitoIdentityTransferHandler","defaultConfig","service","endpointResolver","jitteredBackoffUtil","delayFunction","getSharedHeaders","operation","buildHttpRpcRequest","composeServiceApi","transferHandler","serializer","deserializer","resolvedConfig","endpoint","getId","IdentityId","deserializeCredentials","AccessKeyId","SecretKey","SessionToken","Expiration","getCredentialsForIdentity","parseAWSExports","storageConfig","amplifyConfig","AWSPinpoint","appId","userPoolId","userPoolWebClientId","identityPoolId","identityPoolRegion","mandatorySignIn","signUpVerificationMethod","AWSS3","bucket","dangerouslyConnectToHttpEndpointForTesting","Logging","geo","AmazonLocationService","CredentialsClass","_gettingCredPromise","_refreshHandlers","getCredSource","_credentials_source","refreshHandlers","_storage","storage","_storageSync","_pickupCredentials","_getCognitoIdentityIdStorageKey","isPending","promise","isResolved","isRejected","isFullfilled","makeQuerablePromise","_keepAlive","cred","user_1","session","refreshToken_1","_credentials","_isExpired","_isPastTTL","currentUserCredentials","_setCredentialsForGuest","currentUserPoolUser","currentSession","refreshToken","refreshSession","refreshFederatedToken","federatedInfo","provider","user","identity_id","_setCredentialsFromFederation","_providerRefreshWithRetry","refreshHandler","ts","expiration","_nextCredentialsRefresh","identityId","cognitoConfig","guestCredentialsProvider","_getGuestIdentityId","_identityId","IdentityPoolId","accessKeyId","secretAccessKey","sessionToken","_loadCredentials","guestCredentialsProvider_1","_removeGuestIdentityId","params","domain","google","facebook","amazon","developer","logins","Logins","_setCredentialsFromSession","idToken","getIdToken","getJwtToken","guestIdentityId","generatedOrRetrievedIdentityId","primaryIdentityId","authenticated","_setGuestIdentityId","e_2","shear","hasRequiredCookie","cookieExports","opt","dec","eqIdx","endIdx","keyStartIdx","startIndex","keyEndIdx","endIndex","__hasOwnProperty","valStartIdx","valEndIdx","tryDecode","serialize","enc","cookieNameRegExp","cookieValueRegExp","maxAge","domainValueRegExp","pathValueRegExp","__toString","httpOnly","secure","partitioned","sameSite","requireCookie","readCookie","cleanupCookieValue","doNotParse","defaultSetOptions","changeListeners","HAS_DOCUMENT_COOKIE","previousCookies","_checkChanges","domCookies","parseCookies","testingValue","TEST_HAS_DOCUMENT_COOKIE","hasDocumentCookie","_emitChange","_startPolling","pollingInterval","setInterval","_stopPolling","clearInterval","doNotUpdate","getAll","stringValue","finalOptions","addChangeListener","cookieStore","removeChangeListener","UniversalStorage","store","req","getLocalItem","getUniversalItem","removeLocalItem","removeUniversalItem","setLocalItem","tokenType","setUniversalItem","AuthenticationDetails","_ref","ValidationData","Username","Password","AuthParameters","ClientMetadata","validationData","authParameters","clientMetadata","username","_proto","getUsername","getPassword","getValidationData","getAuthParameters","getClientMetadata","cryptoSecureRandomInt","randomBytes","WordArray","words","sigBytes","wordArray","hexChars","bite","hexStringify","BigInteger","nbi","dbits","inBrowser","appName","am","xl","DB","DM","DV","FV","F1","F2","rr","vv","BI_RM","BI_RC","int2char","intAt","nbv","fromInt","nbits","Montgomery","mp","invDigit","mpl","mph","um","mt2","convert","dlShiftTo","divRemTo","compareTo","ZERO","subTo","revert","copyTo","u0","clamp","drShiftTo","mulTo","multiplyTo","sqrTo","squareTo","lShiftTo","bs","cbs","bm","ds","rShiftTo","pm","pt","nsh","ys","y0","yt","d1","d2","ONE","addTo","negate","km","bitLength","multiply","divide","modPow","k1","g2","is1","r2","HEX_MSB_REGEX","AuthenticationHelper","PoolName","hexHash","padHex","smallAValue","generateRandomSmallA","getLargeAValue","infoBits","poolName","getSmallAValue","largeAValue","calculateA","hexRandom","generateRandomString","getRandomPassword","randomPassword","getSaltDevices","SaltToHashDevices","getVerifierDevices","verifierDevices","generateHashDevice","deviceGroupKey","combinedString","hashedString","verifierDevicesNotPadded","calculateU","UHexHash","awsCryptoHash","resultFromAWSCrypto","hashHex","hexStr","computehkdf","ikm","salt","infoBitsBuffer","resultFromAWSCryptoPrk","awsCryptoHashHmac","getPasswordAuthenticationKey","serverBValue","UValue","usernamePassword","usernamePasswordHash","xValue","calculateS","sValue","hkdf","gModPowXN","err2","getNewPasswordRequiredChallengeUserAttributePrefix","bigInt","isNegative","invertedNibbles","invertedNibble","CognitoJwtToken","jwtToken","decodePayload","getExpiration","exp","getIssuedAt","iat","_setPrototypeOf","CognitoAccessToken","_CognitoJwtToken","_temp","AccessToken","CognitoIdToken","IdToken","CognitoRefreshToken","RefreshToken","getToken","isReactNative","CognitoUserSession","ClockDrift","clockDrift","calculateClockDrift","getRefreshToken","getAccessToken","getClockDrift","adjusted","monthNames","weekNames","DateHelper","getNowString","weekDay","getUTCHours","getUTCSeconds","CognitoUserAttribute","Name","Value","getName","setName","CognitoUser","Pool","pool","Session","client","signInUserSession","authenticationFlowType","keyPrefix","getClientId","userDataKey","setSignInUserSession","clearCachedUserData","cacheTokens","getSignInUserSession","getAuthenticationFlowType","setAuthenticationFlowType","initiateAuth","authDetails","USERNAME","clientMetaData","jsonReq","AuthFlow","ClientId","getUserContextData","UserContextData","onFailure","challengeName","ChallengeName","challengeParameters","ChallengeParameters","customChallenge","getCognitoUserSession","AuthenticationResult","onSuccess","authenticateUser","authenticateUserPlainUsernamePassword","authenticateUserDefaultAuth","authenticationHelper","getUserPoolName","dateHelper","deviceKey","DEVICE_KEY","errOnAValue","aValue","SRP_A","CHALLENGE_NAME","USER_ID_FOR_SRP","SRP_B","SALT","getCachedDeviceKeyAndPassword","errOnHkdf","dateNow","concatBuffer","SECRET_BLOCK","signatureString","challengeResponses","PASSWORD_CLAIM_SECRET_BLOCK","TIMESTAMP","PASSWORD_CLAIM_SIGNATURE","_respondToAuthChallenge","challenge","challengeCallback","errChallenge","dataChallenge","clearCachedDeviceKeyAndPassword","jsonReqResp","ChallengeResponses","errAuthenticate","dataAuthenticate","authenticateUserInternal","PASSWORD","authResult","mfaRequired","selectMFAType","mfaSetup","totpRequired","userAttributes","rawRequiredAttributes","requiredAttributes","userAttributesPrefix","newPasswordRequired","getDeviceResponse","newDeviceMetadata","NewDeviceMetadata","DeviceGroupKey","DeviceKey","errGenHash","deviceSecretVerifierConfig","Salt","PasswordVerifier","DeviceSecretVerifierConfig","DeviceName","errConfirm","dataConfirm","cacheDeviceKeyAndPassword","UserConfirmationNecessary","completeNewPasswordChallenge","newPassword","requiredAttributeData","finalUserAttributes","NEW_PASSWORD","errAValue","errHkdf","confirmRegistration","confirmationCode","forceAliasCreation","ConfirmationCode","ForceAliasCreation","sendCustomChallengeAnswer","answerChallenge","_this7","ANSWER","sendMFACode","mfaType","_this8","SMS_MFA_CODE","mfaTypeSelection","SOFTWARE_TOKEN_MFA_CODE","changePassword","oldUserPassword","newUserPassword","PreviousPassword","ProposedPassword","enableMFA","mfaOptions","DeliveryMedium","AttributeName","MFAOptions","setUserMfaPreference","smsMfaSettings","softwareTokenMfaSettings","SMSMfaSettings","SoftwareTokenMfaSettings","disableMFA","deleteUser","_this9","clearCachedUser","updateAttributes","_this10","UserAttributes","getUserData","bypassCache","getUserAttributes","userData","attributeList","attribute","userAttribute","getMFAOptions","createGetUserRequest","promisifyRequest","refreshSessionIfPossible","_this11","refresh","_this12","getUserDataFromCache","isFetchUserDataAndTokenRequired","fetchUserData","_ref$bypassCache","_this13","cacheUserData","deleteAttributes","_this14","UserAttributeNames","resendConfirmationCode","getSession","idTokenKey","accessTokenKey","refreshTokenKey","clockDriftKey","cachedSession","_this15","wrappedCallback","wrapRefreshSessionCallback","REFRESH_TOKEN","lastUserKey","deviceKeyKey","requestWithRetry","authenticationResult","clearCachedTokens","randomPasswordKey","deviceGroupKeyKey","forgotPassword","inputVerificationCode","confirmPassword","getAttributeVerificationCode","verifyAttribute","Code","getDevice","forgetSpecificDevice","forgetDevice","_this16","setDeviceStatusRemembered","DeviceRememberedStatus","setDeviceStatusNotRemembered","listDevices","paginationToken","requestParams","Limit","PaginationToken","globalSignOut","_this17","signOut","revokeTokenCallback","_this18","_session","revokeTokens","cleanClientData","isSessionRevocable","revokeToken","origin_jti","_ref2","Token","sendMFASelectionAnswer","_this19","associateSoftwareToken","_this20","associateSecretCode","SecretCode","verifySoftwareToken","totpCode","friendlyDeviceName","_this21","UserCode","FriendlyDeviceName","errRespond","dataRespond","UserAgent","addFrameworkToCognitoUserAgent","uaCategoryAction","uaFramework","_inheritsLoose","_wrapNativeSuper","_isNativeFunction","Wrapper","_isNativeReflectConstruct","_construct","_getPrototypeOf","CognitoError","_Error","Client","fetchOptions","BASE_TIME_MS","JITTER_FACTOR","ex","retryIn","CognitoUserPool","UserPoolId","AdvancedSecurityDataCollectionFlag","clientId","advancedSecurityDataCollectionFlag","getUserPoolId","signUp","cognitoUser","returnData","userConfirmed","UserConfirmed","userSub","UserSub","codeDeliveryDetails","CodeDeliveryDetails","getCurrentUser","lastAuthUser","AmazonCognitoAdvancedSecurityData","amazonCognitoAdvancedSecurityDataConst","advancedSecurityData","getData","EncodedData","CookieStorage","numKeys","launchUri","windowProxy","INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER","USER_AGENT_HEADER","dispatchAuthEvent","OAuth","cognitoClientId","scopes","_urlOpener","urlOpener","_cognitoClientId","isValidScopes","_scopes","oauthSignIn","responseType","customState","Cognito","generatedState","_generateState","padStart","sessionStorage","oAuthStorage","private_key","pkce_key","_generateRandom","code_challenge","_generateChallenge","scopesString","queryString","redirect_uri","response_type","client_id","identity_provider","code_challenge_method","_handleCodeFlow","currentUrl","pairings","accum","currentUrlPathname","redirectSignInPathname","oAuthTokenEndpoint","clientID","redirectUri","code_verifier","ouath_pkce_key","oAuthTokenBody","grant_type","FederatedSignIn","access_token","refresh_token","_handleImplicitFlow","handleAuthResponse","urlParams","entry","error_description","_validateState","savedState","oauth_state","returnedState","oAuthLogoutEndpoint","signout_uri","redirectSignOut","returnTo","logout_uri","oAuth","_base64URL","CHARSET","_bufferToString","AuthErrorStrings","AuthError","authErrorMessages","NoUserPoolError","noConfig","DEFAULT_MSG","missingAuthConfig","emptyUsername","EMPTY_USERNAME","invalidUsername","INVALID_USERNAME","emptyPassword","EMPTY_PASSWORD","emptyCode","EMPTY_CODE","signUpError","SIGN_UP_ERROR","noMFA","NO_MFA","invalidMFA","INVALID_MFA","emptyChallengeResponse","EMPTY_CHALLENGE","noUserSession","NO_USER_SESSION","deviceConfig","DEVICE_CONFIG","networkError","NETWORK_ERROR","autoSignInError","AUTOSIGNIN_ERROR","USER_ADMIN_SCOPE","AuthClass","userPool","oAuthFlowInProgress","autoSignInInitiated","inflightSessionPromise","inflightSessionPromiseCounter","currentCredentials","conf","cookieStorage","_isValidAuthStorage","ssr","userPoolData","cognitoHostedUIConfig","awsCognito","cognitoAuthParams","_oAuthHandler","usedResponseUrls_1","urlListener","_handleAuthResponse","isTrueStorageValue","AutoSignInError","restOfAttrs","rejectNoUserPool","autoSignIn","enabled","autoSignInValidationData","autoSignInClientMetaData","phone_number","rejectAuthError","SignUpError","attrs_1","validationDataObject_1","handleAutoSignIn","EmptyPassword","EmptyUsername","signInAfterUserConfirmed","handleLinkAutoSignIn","handleCodeAutoSignIn","listenEvent","autoSignInPollingIntervalId","createCognitoUser","authCallbacks","error_1","confirmSignUp","EmptyCode","resendSignUp","signIn","usernameOrSignInOpts","pw","InvalidUsername","signInWithPassword","signInWithoutPassword","challengeParam","pendingSignIn","getPreferredMFA","isSessionInvalid","cleanUpInvalidSession","cleanUpError_1","_getMfaTypeFromUserData","preferredMFA","PreferredMfaSetting","mfaList","UserMFASettingList","_getUserData","cleanUpError_2","setPreferredMFA","mfaMethod","totpMfaSettings","PreferredMfa","Enabled","currentMFAType","InvalidMFA","NoMFA","cleanUpError_3","disableSMS","enableSMS","setupTOTP","secretCode","verifyTotpToken","challengeAnswer","isLoggedIn","confirmSignIn","e_3","e_4","completeNewPassword","e_5","EmptyChallengeResponse","deleteUserAttributes","attributeNames","userSession","e_6","isSignedInHostedUI","cleanUpError_4","cleanCachedItems","oAuthSignOutRedirect","updateUserAttributes","attr","details","attrs","createUpdateAttributesResultList","CodeDeliveryDetailsList","codeDeliveryDetailsList","isUpdated","verifiedContact","attributesToObject","unverified","verified","isErrorWithMessage","isTokenRevokedError","isRefreshTokenRevokedError","isUserDisabledError","isUserDoesNotExistError","isRefreshTokenExpiredError","isPasswordResetRequiredError","isOAuthInProgress","hostedUISignCallback","_userSession","cleanUpError_5","currentAuthenticatedUser","federatedUser","e_8","e_9","NoUserSession","cleanUpError_6","e_10","verifyUserAttribute","success","verifyUserAttributeSubmit","verifyCurrentUserAttribute","verifyCurrentUserAttributeSubmit","cognitoIdentitySignOut","e_11","cleanUpError_7","oAuthSignOutRedirectOrReject","oAuthSignOutAndResolve","e_13","oldPassword","forgotPasswordSubmit","currentUserInfo","userAttrs","e_14","err_2","federatedSignIn","providerOrOptions","hasCustomState","customProvider","loggedInUser","hasCodeOrError","hasTokenOrError","isCustomStateIncluded","history","replaceState","err_3","essentialCredentials","isTruthyString","noUserPoolErrorHandler","NoConfig","MissingAuthConfig","rememberDevice","currUser","error_2","DeviceConfig","NetworkError","error_3","fetchDevices","error_4","deviceList","Devices","device","deviceName","DeviceAttributes","_arrayLikeToArray","_iterableToArray","_unsupportedIterableToArray","toPropertyKey","toPrimitive","_arrayWithHoles","_nonIterableRest","_slicedToArray","ConfigContext","getPrefixCls","suffixCls","customizePrefixCls","ConfigConsumer","LayoutContext","siderHook","addSider","removeSider","BasicComponent","Adapter","prefixCls","Basic","className","others","classString","BasicLayout","_classNames","_React$useState2","siders","setSiders","hasSider","Tag","_defineProperty","contextValue","prev","currentId","Layout","Header","Footer","Content","ownKeys","getOwnPropertyDescriptors","bound01","isOnePointZero","isPercent","isPercentage","convertToPercentage","pad2","hue2rgb","convertHexToDecimal","parseIntFromHex","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","goldenrod","gold","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavenderblush","lavender","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","inputToRGB","rgb","named","matchers","rgba","hsl","hsla","hsv","hsva","hex8","hex6","hex4","hex3","stringInputToObject","isValidCSSUnit","rgbToRgb","hsvToRgb","hslToRgb","boundAlpha","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","hueStep","saturationStep","saturationStep2","brightnessStep1","brightnessStep2","lightColorCount","darkColorCount","darkColorMap","toHsv","rgbToHsv","allow3Char","hex","rgbToHex","getHue","light","hue","getSaturation","saturation","generate","pColor","colorString","_hsv","_colorString","theme","_ref3","rgb1","rgb2","amount","mix","backgroundColor","presetPrimaryColors","volcano","geekblue","presetPalettes","presetDarkPalettes","primary","warned","preWarningFns","warning","valid","note","warningOnce","noteOnce","preMessage","resetWarned","canUseDom","APPEND_ORDER","MARK_KEY","containerCache","getMark","mark","getContainer","option","attachTo","findStyles","container","injectCSS","css","csp","prepend","styleNode","getOrder","nonce","existStyle","getAttribute","findExistNode","updateCSS","cachedRealContainer","placeholderStyle","syncRealContainer","existNode","_option$csp","_option$csp2","_option$csp3","newNode","isIconDefinition","icon","normalizeAttrs","class","rootProps","_objectSpread","getSecondaryColor","primaryColor","generateColor","normalizeTwoToneColors","twoToneColor","_excluded","twoToneColorPalette","secondaryColor","calculated","IconBase","restProps","colors","styleStr","IconContext","useInsertStyles","getTwoToneColors","setTwoToneColors","setTwoToneColor","_normalizeTwoToneColo2","ReactIcon","Icon","spin","rotate","tabIndex","_React$useContext","Context","_React$useContext$pre","rootClassName","iconTabIndex","svgStyle","msTransform","transform","role","getTwoToneColor","BarsOutlined","AntdIcon","BarsOutlinedSvg","LeftOutlined","LeftOutlinedSvg","RightOutlined","RightOutlinedSvg","omit","fields","dimensionMaxMap","xs","sm","xxl","SiderContext","generateId","Sider","trigger","_a$defaultCollapsed","defaultCollapsed","_a$theme","_a$style","_a$collapsible","collapsible","_a$reverseArrow","reverseArrow","_a$width","_a$collapsedWidth","collapsedWidth","zeroWidthTriggerStyle","breakpoint","onCollapse","onBreakpoint","_useState2","collapsed","setCollapsed","_useState4","below","setBelow","handleSetCollapsed","responsiveHandlerRef","mql","responsiveHandler","matchMedia","addListener","removeListener","uniqueId","toggle","siderCollapsed","divProps","rawWidth","siderWidth","isNumeric","zeroWidthTrigger","defaultTrigger","expanded","triggerDom","divStyle","maxWidth","minWidth","siderCls","renderSider","InternalLayout","replacement","replaceElement","tuple","defaultIndicator","Spin","spinPrefixCls","_props$spinning","spinning","customSpinning","_props$size","tip","wrapperClassName","_React$useState","shouldDelay","setSpinning","updateSpinning","debounce","renderSpin","spinClassName","spinElement","indicator","dotClassName","renderIndicator","containerClassName","SpinFC","spinClassProps","setDefaultIndicator","COMPONENT_METADATA_KEY","CLogClient","sendMetric","metricName","AWSC","findAWSC","Clog","currentWindow","parent","PanoramaClient","metric","eventDetail","eventValue","panorama","findPanorama","formatMajorVersionForMetricDetail","formatVersionForMetricName","versionString","majorVersionMatch","getMajorVersion","oneTimeMetrics","setTheme","newTheme","Metrics","packageVersion","clog","initMetrics","sendPanoramaMetric","sendMetricObject","buildMetricName","detailObject","AWSUI_METRIC_ORIGIN","buildMetricDetail","sendMetricObjectOnce","metricHash","buildMetricHash","sendMetricOnce","logComponentLoaded","logComponentUsed","MetricsTestHelper","resetOneTimeMetricsCache","PACKAGE_SOURCE","PACKAGE_VERSION","THEME","getBaseProps","baseProps","awsuiVersions","isDevelopment","messageCache","warnOnce","useControllable","controlledValue","handler","changeHandler","controlledProp","isControlled","isControlledNow","initialMode","modeNow","valueState","valueHasBeenSet","setValueHasBeenSet","currentUncontrolledValue","setUncontrolledValue","newValue","defaultCallback","BREAKPOINT_MAPPING","mobileBreakpoint","BREAKPOINTS_DESCENDING","bp","getMatchingBreakpoint","breakpointFilter","breakpointWidth","createSingletonHandler","getIsMobile","innerWidth","useMobile","initialState","useSingleton","createSingletonState","CustomEventStub","createCustomEvent","fireNonCancelableEvent","fireCancelableEvent","sourceEvent","fireKeyboardEvent","reactEvent","isMouseEvent","isPlainLeftClick","hasModifierKeys","defaultContentTypeState","navigationOpen","minContentWidth","maxContentWidth","dashboard","cards","table","wizard","applyDefaults","contentType","stateFromProps","isRefresh","contentTypeDefaults","toolsOpen","sticky","disableContentPaddings","styles","topOffset","clsx","testUtilsClassName","labels","notifications","useForwardFocus","mainRef","controlRef","useMergeRefs","calculateOnce","findUpUntil","parentElement","HTMLElement","supportsStickyPosition","CSS","supports","supportsContainingBlockPositioning","getBoundingClientRect","getContainingBlock","startElement","computedStyle","getComputedStyle","perspective","isMotionDisabled","classList","useStableEventHandler","useMutationSingleton","MutationObserver","observe","subtree","disconnect","useMutationObserver","elementRef","onChange","useVisualRefresh","visualRefreshState","detectVisualRefresh","useReducedMotion","variant","alt","badge","__internalRootRef","iconRef","parentHeight","setParentHeight","contextualSize","iconSize","inlineStyles","newParentHeight","mergedRef","validIcon","icons","InternalSpinner","circle","getIconAlign","iconAlign","IconWrapper","iconName","iconUrl","iconAlt","iconSvg","InternalIcon","iconClass","LeftIcon","loading","RightIcon","allowedJavascriptUrls","checkSafeUrl","parsedUrl","ScreenreaderOnly","assertive","visible","TagName","sourceRef","targetRef","updateLiveRegion","sourceContent","extractInnerText","innerText","FunnelContext","funnelInteractionId","setFunnelInteractionId","funnelType","optionalStepNumbers","totalFunnelSteps","funnelSubmit","funnelCancel","FunnelStepContext","stepNameSelector","stepNumber","FunnelSubStepContext","subStepId","subStepSelector","subStepNameSelector","DATA_ATTR_FUNNEL","DATA_ATTR_FUNNEL_INTERACTION_ID","DATA_ATTR_FUNNEL_KEY","DATA_ATTR_FUNNEL_VALUE","DATA_ATTR_FUNNEL_STEP","DATA_ATTR_FUNNEL_SUBSTEP","DATA_ATTR_FIELD_LABEL","DATA_ATTR_FIELD_ERROR","DATA_ATTR_ANALYTICS_ALERT","FUNNEL_KEY_SUBSTEP_NAME","getFunnelNameSelector","getFunnelValueSelector","getSubStepAllSelector","getSubStepSelector","getFieldSlotSeletor","FunnelMetrics","funnelStart","funnelError","funnelComplete","funnelSuccessful","funnelCancelled","funnelStepStart","funnelStepComplete","funnelStepNavigation","funnelSubStepStart","funnelSubStepComplete","funnelSubStepError","helpPanelInteracted","externalLinkInteracted","useFunnelSubStep","subStepRef","funnelSubStepProps","onFocus","subStepAllSelector","onBlur","useFunnelStep","funnelStepProps","useFunnel","funnelProps","InternalButton","__iconClass","onFollow","loadingText","wrapText","formAction","ariaLabel","ariaDescribedby","ariaExpanded","fullWidth","__nativeAttributes","__activated","isAnchor","isNotInteractive","shouldHaveContent","buttonRef","buttonClass","buttonProps","iconProps","buttonContent","content","LiveRegion","togglesConfig","navigation","getLabels","mainLabel","openLabel","navigationToggle","closeLabel","navigationClose","tools","toolsToggle","toolsClose","AppLayoutButton","CloseButton","MobileToggle","ariaLabels","MobileToolbar","toggleRefs","navigationHide","toolsHide","anyPanelOpen","unfocusable","onNavigationOpen","onToolsOpen","drawers","mobileBarRef","sharedStyles","testutilStyles","breadcrumbs","triggerButton","activeDrawerId","useFocusControl","isOpen","restoreFocus","close","previousFocusedElement","shouldFocus","doFocus","loseFocus","setFocus","force","ResizeObserverBoxOptions","resizeObservers","freeze","ResizeObserverSize","inlineSize","blockSize","DOMRectReadOnly","bottom","fromRect","rectangle","isSVG","SVGElement","isHidden","getBBox","offsetWidth","offsetHeight","getClientRects","cache","scrollRegexp","verticalRegexp","IE","parseDimension","pixel","switchSizes","zeroBoxes","devicePixelContentBoxSize","borderBoxSize","contentBoxSize","contentRect","calculateBoxSizes","forceRecalculation","cs","ownerSVGElement","removePadding","boxSizing","writingMode","canScrollVertically","overflowY","canScrollHorizontally","overflowX","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTop","borderTopWidth","borderRight","borderRightWidth","borderBottom","borderBottomWidth","horizontalPadding","verticalPadding","horizontalBorderArea","borderLeftWidth","verticalBorderArea","horizontalScrollbarThickness","clientHeight","verticalScrollbarThickness","clientWidth","widthReduction","heightReduction","contentWidth","contentHeight","borderBoxWidth","borderBoxHeight","boxes","devicePixelRatio","calculateBoxSize","observedBox","DEVICE_PIXEL_CONTENT_BOX","BORDER_BOX","ResizeObserverEntry","calculateDepthForNode","broadcastActiveObservations","shallowestDepth","callbacks","ro","activeTargets","ot","targetDepth","lastReportedSize","callbacks_1","gatherActiveObservationsAtDepth","skippedTargets","observationTargets","isActive","ErrorEvent","createEvent","initEvent","dispatchEvent","deliverResizeLoopError","queueMicroTask","toggle_1","el_1","characterData","watching","observerConfig","childList","events","scheduled","scheduler","Scheduler","stopped","schedule","run","elementsHaveResized","stop","updateCount","ResizeObservation","CONTENT_BOX","isReplacedElement","ResizeObserverDetail","resizeObserver","observerMap","getObservationIndex","ResizeObserverController","connect","firstObservation","box","unobserve","lastObservation","ResizeObserver","useResizeObserver","onObserve","stableOnObserve","convertResizeObserverEntry","connected","contentBoxWidth","contentBoxHeight","useObservedElement","selector","getElement","setHeight","AppLayoutContext","stickyOffsetTop","stickyOffsetBottom","mobileBarHeight","useAppLayoutContext","useContainerQuery","mapFn","prevState","applyDisplayName","SplitPanelContext","SplitPanelContextProvider","getSplitPanelDefaultSize","useTelemetry","packageSource","metrics","innerHeight","useComponentMetrics","KeyCode","setIsKeyboard","active","handleMousedown","handleKeydown","control","isModifierKey","componentsCount","useFocusVisible","useBaseComponent","useComponentMetadata","ContentWrapper","toolsPadding","disablePaddings","navigationPadding","isMobile","contentWidthStyles","Drawer","contentClassName","toggleClassName","closeClassName","bottomOffset","drawersAriaLabels","onToggle","onLoseFocus","resizeHandle","openButtonWrapperRef","drawerContentWidth","drawerMainLabel","drawerCloseLabel","drawerOpenLabel","closeButton","getDrawersLabels","regularOpenButton","DrawerTriggersBar","useKeyboardEvents","setSidePanelWidth","setBottomPanelHeight","splitPanelRef","setSizeFunction","currentSize","maxSize","splitPanelHeight","splitPanelWidth","safeParseFloat","getCurrentSize","primaryGrowKey","primaryShrinkKey","down","altGrowKey","altShrinkKey","isEventHandled","pageUp","pageDown","home","focusable","xmlns","viewBox","x1","y1","x2","y2","ResizableDrawer","onResize","getMaxWidth","activeDrawer","MIN_WIDTH","defaultSize","relativeSize","setRelativeSize","handle","drawerRefObject","sizeControlProps","handleRef","slider","onSliderPointerDown","onDocumentPointerMove","mouseClientX","handleOffset","mouseClientY","onDocumentPointerUp","usePointerEvents","onKeyDown","splitPanelStyles","onPointerDown","ResizeHandler","resizable","SideSplitPanelDrawer","displayed","DynamicOverlapContext","forceReflow","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","updateStatus","prevProps","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","nodeRef","ReactDOM","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","onExited","nextState","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","_this$props","childProps","_objectWithoutPropertiesLoose","TransitionGroupContext","noop","isIn","onStatusChange","transitionChangeDelay","transitionRootElement","transitionState","setTransitionState","motionDisabled","addTransitionEndListener","ReactTransitionGroupTransition","isAppearing","entering","activeDrawerWidth","breadcrumbsGap","contentGapLeft","contentGapRight","containerFirstGap","containerFirstOverlapExtension","defaultMaxContentWidth","defaultMinContentWidth","footerHeight","headerGap","headerHeight","layoutWidth","mainGap","mainOffsetLeft","mainTemplateRows","notificationsGap","notificationsHeight","offsetTop","offsetTopWithNotifications","overlapHeight","navigationWidth","splitPanelReportedHeaderSize","splitPanelReportedSize","splitPanelMinWidth","splitPanelMaxWidth","toolsMaxWidth","toolsWidth","toolsAnimationStartingOpacity","contentScrollMargin","flashbarStackDepth","flashbarStackIndex","flashbarStickyBottomMargin","stackedNotificationsBottomMargin","stackedNotificationsDefaultBottomMargin","SplitPanel","handleSplitPanelClick","handleSplitPanelPreferencesChange","handleSplitPanelResize","isSplitPanelForcedPosition","isSplitPanelOpen","setSplitPanelReportedSize","setSplitPanelReportedHeaderHeight","setSplitPanelToggle","splitPanelPosition","splitPanelRefs","splitPanelSize","useAppLayoutInternals","getMaxHeight","availableHeight","isForcedPosition","leftOffset","onPreferencesChange","reportSize","reportHeaderHeight","rightOffset","Bottom","disableBodyScroll","hasOpenDrawer","isNavigationOpen","splitPanel","splitPanelReportedHeaderHeight","transitionEventsRef","animating","customCssProps","Side","useSplitPanelFocusControl","preferences","lastInteraction","setLastInteraction","interaction","AppLayoutInternalsContext","ctx","AppLayoutInternalsProvider","controlledToolsOpen","controlledNavigationOpen","headerSelector","footerSelector","dynamicOverlapHeight","setDynamicOverlapHeight","hasStickyBackground","setHasStickyBackground","halfGeckoMaxCssLength","geckoMaxCssLength","setIsNavigationOpen","onNavigationChange","navigationRefs","focusNavButtons","handleNavigationClick","hasDefaultToolsWidth","isToolsOpen","setIsToolsOpen","onToolsChange","toolsRefs","focusToolsButtons","loseToolsFocus","handleToolsClick","skipFocusControl","closeNavigationIfNecessary","openTools","focusToolsClose","setSplitPanelMaxWidth","setIsSplitPanelOpen","splitPanelOpen","onSplitPanelToggle","splitPanelPreferences","setSplitPanelPreferences","onSplitPanelPreferencesChange","setSplitPanelLastInteraction","setSplitPanelForcedPosition","getSplitPanelPosition","splitPanelToggle","splitPanelDisplayed","setSplitPanelSize","onSplitPanelResize","setActiveDrawerId","drawersRefs","focusDrawersButtons","handleDrawersClick","newActiveDrawerId","drawersTriggerCount","hasDrawerViewportOverlay","layoutContainerQuery","layoutElement","rect","mainElement","setMainOffsetLeft","offsetLeft","notificationsContainerQuery","notificationsElement","setNotificationsHeight","hasNotificationsContent","setHasNotificationsContent","offsetBottom","Background","contentHeader","stickyNotifications","background","Breadcrumbs","Drawers","isUnfocusable","ActiveDrawer","DesktopTriggers","computedAriaLabels","drawer","hasMultipleTriggers","hasSplitPanel","previousActiveDrawerId","TriggerButton","MobileTriggers","disableContentHeaderOverlap","contentFirstChild","getContentFirstChild","hasContentGapLeft","hasContentGapRight","isOverlapDisabled","layout","Main","DrawersMobileTriggers","Navigation","onNavigationClick","Tools","getSplitPanelStatus","hasToolsForm","getToolsFormStatus","hasToolsFormPersistence","getToolsFormPersistence","AppLayoutWithRef","InternalI18nContext","_namespace","_component","provided","useInternalI18n","customHandler","AppLayout","i18n","_g","_h","RefreshedAppLayout","OldAppLayout","controlledSplitPanelSize","controlledSplitPanelOpen","controlledSplitPanelPreferences","hasDrawers","rootRef","setNavigationOpen","setToolsOpen","toolsItem","selectedDrawer","getAllDrawerItems","drawerItem","drawerRefs","loseDrawersFocus","setDrawerLastInteraction","useDrawerFocusControl","onNavigationToggle","onToolsToggle","navigationVisible","toolsVisible","contentHeightStyle","headerFooterHeight","setHeaderFooterHeight","useContentHeight","isSplitpanelForcedPosition","setIsSplitpanelForcedPosition","isResizeInvalid","setIsResizeInvalid","notificationsRef","hasRenderedNotifications","stickyNotificationsHeight","setSplitPanelOpen","drawerItems","getDrawerItemSizes","sizes","drawerSizes","setDrawerSizes","drawerSize","splitPanelReportedToggle","setSplitPanelReportedToggle","closedDrawerWidth","effectiveNavigationWidth","effectiveToolsWidth","defaultSplitPanelSize","mainContentRef","legacyScrollRootRef","onSplitPanelPreferencesSet","onSplitPanelSizeSet","onSplitPanelToggleHandler","getSplitPanelMaxWidth","contentPadding","spaceAvailable","spaceTaken","finalSplitPanePosition","getDrawerMaxWidth","getSplitPanelMaxHeight","splitPanelOpenOnTheSide","windowWidth","setWidth","useWindowWidth","offsets","setOffsets","updatePosition","bodyWidth","useAppLayoutOffsets","contentWidthWithSplitPanel","navigationClosedWidth","toolsClosedWidth","contentMaxWidthStyle","splitPanelContext","splitPanelWrapped","contentWrapperProps","splitPanelBottomOffset","changeDetail","marginBottom","replaceClassName","origClass","classToRemove","removeClass","baseVal","removeOneClass","CSSTransition","appliedClasses","_this$resolveArgument","resolveArguments","removeClasses","addClass","_this$resolveArgument2","_this$resolveArgument3","getClassNames","isStringClassNames","baseClassName","activeClassName","doneClassName","phase","hasClass","addOneClass","_addClass","_this$appliedClasses$","useId","useIdFallback","idRef","useUniqueId","getOverflowParents","parents","scrollElementIntoView","block","inline","scrollIntoView","StickyHeaderContext","isStuck","useStickyHeader","headerRef","__stickyHeader","__stickyOffset","__mobileStickyOffset","__disableMobile","disableSticky","isSticky","isVisualRefresh","hasInnerOverflowParents","setHasInnerOverflowParents","setIsStuck","overflowParents","elem","computedOffset","classicOffset","visualRefreshOffset","computeOffset","stickyStyles","checkIfStuck","rootTop","headerTop","useDynamicOverlap","overlapElementRef","InternalContainer","footer","disableHeaderPaddings","fitHeight","__disableFooterDivider","__disableFooterPaddings","__hiddenContent","__headerRef","__headerId","__darkHeader","__disableStickyMobile","hasDynamicHeight","overlapElement","headerMergedRef","headerIdProp","shouldUpdateStickyBackground","shouldHaveStickyStyles","ExpandableSectionContainer","InfoLinkLabelContext","InternalHeader","headingTagOverride","actions","description","__disableActionsWrapping","HeadingTag","headingId","variantOverride","main","title","heading","ExpandableDefaultHeader","ariaControls","onKeyUp","ExpandableNavigationHeader","ariaLabelledBy","ExpandableHeaderTextWrapper","headerDescription","headerCounter","headerInfo","headerActions","screenreaderContentId","isContainer","hasInteractiveElements","wrapperListeners","headerButtonListeners","headerButton","ExpandableSectionHeader","_ref4","headerText","defaultHeaderProps","wrapper","InternalExpandableSection","controlledExpanded","defaultExpanded","headerAriaLabel","controlId","triggerControlId","setExpanded","onExpandChange","triggerProps","space","InternalBox","tagOverride","margin","padding","textAlign","float","fontSize","marginsClassNamesSuffices","getClassNamesSuffixes","paddingsClassNamesSuffices","getTag","side","hasActiveLink","activeHref","generateExpandableItemsMapping","mapping","expandableParents","nextLevelParents","fireFollow","logo","Divider","isPresentational","NavigationItemsList","fireChange","lists","currentListIndex","listVariant","itemid","dividerIndex","Link","Section","SectionGroup","LinkGroup","ExpandableLinkGroup","lastListIndex","divider","external","externalIconAriaLabel","_ref5","onExpandedChange","section","_ref6","_ref7","_ref8","containsActiveLink","userExpanded","setUserExpanded","onHeaderFollow","SideNavigation","parentMap","hrefs","checkDuplicateHrefs","onChangeHandler","onFollowHandler","baseComponentProps","spliceOne","toParts","fromParts","isToAbs","isFromAbs","isProduction","invariant","condition","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","goBack","goForward","unblock","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","pushHashPath","nextPaths","lowerBound","upperBound","MAX_SIGNED_31_BIT_INT","commonjsGlobal","calculateChangedBits","contextProp","getUniqueId","emitter","handlers","on","off","changedBits","createEventEmitter","nextProps","oldValue","_Provider$childContex","_React$Component2","onUpdate","_Consumer$contextType","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options","_options$exact","_options$strict","_options$sensitive","cacheKey","pathCache","compilePath$1","_compilePath","Route","context$1","computedMatch","isEmptyChildren","createURL","staticHandler","methodName","Switch","useHistory","_jsx","cognitoGroups","setActiveHref","typeToIcon","StatusIndicator","iconAriaLabel","colorOverride","__animate","__size","HelpPanel","containerProps","InternalStatusIndicator","_jsxs","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","_onClick","isModifiedEvent","_ref2$component","__RouterContext","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","ariaCurrent","_ref$ariaCurrent","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","throttle","pendingFunc","invokeTime","startTimer","throttled","typesToColors","progress","getItemType","getItemColor","defaultColor","getColorFromType","getFlashTypeCount","counterTypes","labelName","eventContext","sendRenderMetric","countByType","eventType","sendToggleMetric","itemsCount","ICON_TYPES","focusFlashById","itemId","Flash","dismissible","dismissLabel","statusIconAriaLabel","buttonText","onButtonClick","onDismiss","ariaRole","actionButton","iconType","effectiveType","analyticsAttributes","flash","entered","exiting","exited","dismissButton","itemType","_assertThisInitialized","getChildMapping","mapper","getProp","getInitialChildMapping","getNextChildMapping","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","TransitionGroup","handleExited","firstRender","mounted","currentChildMapping","childFactory","contextMatch","getVisualContextClassname","contextName","VisualContext","useContainerBreakpoints","triggers","useFlashbar","onItemsAdded","onItemsChanged","onItemsRemoved","allItemsHaveId","breakpointRef","isReducedMotion","previousItems","setPreviousItems","nextFocusId","setNextFocusId","newItems","removedItems","newFocusItems","maxNonCollapsibleItems","resizeListenerThrottleDelay","CollapsibleFlashbar","enteringItems","setEnteringItems","exitingItems","setExitingItems","isFlashbarStackExpanded","setIsFlashbarStackExpanded","getElementsToAnimate","flashElements","expandedItemRefs","collapsedItemRefs","notificationBar","notificationBarRef","prepareAnimations","rects","elements","getDOMRects","setInitialAnimationState","initialAnimationState","listElementRef","transitioning","setTransitioning","flashbarElementId","itemCountElementId","animateFlash","mostRecentItem","updateBottomSpacing","listElement","flashbar","floating","windowHeight","outerElement","i18nStrings","notificationBarText","notificationBarAriaLabel","iconAriaLabels","errorIconAriaLabel","inProgressIconAriaLabel","infoIconAriaLabel","successIconAriaLabel","warningIconAriaLabel","oldState","onTransitionsEnd","newElementInitialState","oldRect","newRect","noOpTransform","scale","calculatedInverseTransform","inverseTransform","transitionProperty","ongoingAnimations","onTransitionStart","animate","isCollapsible","stackDepth","itemsToShow","expandedIndex","desiredLength","itemsOnTop","itemsToPromote","addedColors","allPossibleColors","finalLength","isColorRepeated","reversedInitialSelection","slotsReservedForPromotions","selectedItems","reverse","getVisibleCollapsedItems","collapsedIndex","getItemId","hasLeft","hasEnteredOrLeft","hasEntered","showInnerContent","shouldUseStandardAnimation","getAnimationElementId","renderList","NotificationTypeCount","TIMEOUT_FOR_ENTERING_ANIMATION","NonCollapsibleFlashbar","renderItem","renderFlatItemsWithTransitions","renderFlatItemsWithoutTransitions","Flashbar","stackItems","InternalAlert","dismissAriaLabel","hasAction","hidden","alert","dismiss","InternalContentLayout","disableOverlap","InternalForm","errorText","errorIconAriaLabelOverride","secondaryActions","FormLayout","AnalyticsFunnel","funnelResultRef","funnelNameSelector","componentVersion","funnelVersion","funnelContextValue","AnalyticsFunnelStep","AnalyticsFunnelSubStep","getSubStepNameSelector","Form","FormFieldContext","useFormFieldContext","applyDefault","InternalGrid","__breakpoint","gridDefinition","disableGutters","__responsiveClassName","defaultBreakpoint","defaultRef","flattenedChildren","childCount","logging","grid","getColumnClassNames","colspan","pull","subset","qualifyingBreakpoints","breakpointValue","matchBreakpointMapping","makeSlotId","formFieldId","joinStrings","strings","FormFieldError","error__message","ConstraintText","hasError","constraint","InternalFormField","stretch","secondaryControl","constraintText","__hideLabel","__disableGutters","instanceUniqueId","generatedControlId","slotIds","getSlotIds","ariaDescribedBy","describedByAttributes","getAriaDescribedBy","secondaryControlPresent","getGridDefinition","ariaLabelledby","parentAriaLabelledby","parentAriaDescribedby","parentInvalid","contextValuesWithoutControlId","fieldErrorSelector","fieldLabelSelector","htmlFor","controls","hints","FormField","convertAutoComplete","propertyValue","DEBOUNCE_DEFAULT_DELAY","useDebounceCallback","callbackRef","inputMode","autoComplete","clearAriaLabel","clearAriaLabelOverride","placeholder","readOnly","disableBrowserAutocorrect","spellcheck","__noBorderRadius","__leftIcon","__leftIconVariant","__onLeftIconClick","ariaRequired","__rightIcon","__onRightIconClick","__onDelayedInput","__onBlurWithDetail","__inheritFormFieldProps","fireDelayedInput","handleChange","inputRef","searchProps","useSearchProps","handleIconClick","formFieldContext","spellCheck","onWheel","blur","autoCorrect","autoCapitalize","Input","select","InternalInput","getDropdownPosition","dropdown","preferCenter","stretchHeight","availableSpace","availableSpaceReserveVertical","availableSpaceReserveHorizontal","triggerBottom","triggerLeft","triggerRight","overflowParent","above","currentAbove","currentBelow","currentLeft","currentRight","MAX_VALUE","getAvailableSpace","triggerWidth","requiredWidth","idealWidth","dropLeft","spillOver","availableOutsideLeft","availableOutsideRight","dropUp","getInteriorDropdownPosition","getInteriorAvailableSpace","AVAILABLE_SPACE_RESERVE_VERTICAL","AVAILABLE_SPACE_RESERVE_HORIZONTAL","triggerTop","parentDropdownTop","parentDropdownHeight","el","calculatePosition","dropdownElement","triggerElement","verticalContainerElement","interior","expandToViewport","stretchWidth","maxHeight","excludeClosestParent","canExpandOutsideViewport","scrollHeight","documentDimensions","getOverflowParentDimensions","usePortalModeClasses","colorMode","darkModeParent","useCurrentMode","densityMode","compactModeParent","useDensityMode","contextParent","useVisualContext","visualRefresh","DropdownContext","DropdownContextProvider","TabTrap","focusNextCallback","tabbables","getFocusables","getFirstFocusable","getLastFocusable","focusables","DropdownContainer","renderWithPortal","TransitionContent","transitionRef","dropdownClasses","dropdownRef","verticalContainerRef","onMouseDown","contentRef","isInteriorPosition","onDropdownClose","dropdownId","stretchTriggerHeight","stretchToTriggerWidth","scrollable","loopFocus","contentKey","wrapperRef","triggerRef","dropdownContainerRef","fixedPosition","setPosition","isOutsideDropdown","onDropdownOpen","setDropdownPosition","triggerBox","verticalContainer","entireWidth","clickListener","updateDropdownPosition","triggerRect","InternalLink","isButton","hasSpecialStyle","anchorTarget","anchorRel","linkId","infoId","infoLinkLabelFromContext","fireFollowEvent","elementSelector","fireFunnelEvent","handleButtonClick","handleButtonKeyDown","linkRef","applyButtonStyles","sharedProps","getVariantStyle","getFontSizeStyle","getColorStyle","renderedExternalIconAriaLabel","usePrevious","useDropdownStatus","statusType","finishedText","filteringResultsText","recoveryText","isEmpty","isNoMatch","isFiltered","noMatch","onRecoveryClick","previousStatusType","statusResult","Filter","filteringType","filterProps","ButtonTrigger","pressed","hideCaret","inFilteringToken","ariaHasPopup","Highlight","HighlightMatch","highlightText","noMatches","splitOnFiltering","filteringPattern","highlighted","Label","triggerVariant","LabelTag","labelTag","Description","highlightedOption","selectedOption","Tags","tags","FilteringTags","filteringTags","searchElement","filteringTag","OptionIcon","validateStringValue","isGroupOption","isGenericGroup","__customIcon","genericGroupProps","__labelPrefix","Trigger","generatedId","triggerContentId","triggerContent","Option","searchableFields","matchesString","searchText","strictMatching","matchesSingleOption","dropdownOption","searchableTagFields","filterOptions","currentGroup","parentMatched","isInteractive","isGroupInteractive","isGroup","testIndexMap","prepareOptions","filteringText","flatOptions","parentDropdownOption","allOptionsDisabled","childDropdownOption","flattenOptions","filteredOptions","generateTestIndexes","filteredItems","getParentGroup","throughIndex","groupIndex","inGroupIndex","parentGroup","totalCount","matchesCount","useHighlightedOption","isHighlightable","highlightedIndex","setHighlightedIndexState","highlightType","setHighlightType","setHighlightedIndex","moveHighlightFrom","newIndex","highlightOption","setHighlightedIndexWithMouse","moveHighlightWithKeyboard","moveHighlight","highlightOptionWithKeyboard","resetHighlightWithKeyboard","goHomeWithKeyboard","goEndWithKeyboard","useOpenState","onOpen","onClose","setIsOpen","openDropdown","closeDropdown","toggleDropdown","getOptionId","menuId","findOptionIndex","__option","useSelect","selectedOptions","updateSelectedOption","externalRef","keepOpen","fireLoadItems","setFilteringValue","useInteractiveGroups","interactivityCheck","filterRef","menuRef","hasFilter","activeRef","__selectedOptions","connectOptionsByValue","__selectedValuesSet","selectedValuesSet","handleFocus","handleBlur","hasSelectedOption","highlightedOptionId","selectOption","optionToSelect","activeKeyDownHandler","goHome","goEnd","preventNativeSpace","useMenuKeyboard","triggerKeyDownHandler","useTriggerKeyboard","getGroupState","totalSelected","hasSelected","allSelected","indeterminate","prevOpen","preventScroll","highlightedGroupSelected","announceSelected","getTriggerProps","getDropdownProps","getMenuProps","menuProps","onMouseUp","itemIndex","onMouseMove","nativeAttributes","getFilterProps","getOptionProps","groupState","nextOption","isNextSelected","checkOptionValueField","isRepeatedChar","useNativeSearch","isEnabled","delayedResetValue","tab","nextHighlight","currentHighlight","matchingOptions","findMatchingOption","useLoadItems","onLoadItems","prevFilteringText","firstPage","samePage","handleLoadMore","handleRecoveryClick","useAnnouncement","getParent","selectedAriaLabel","renderHighlightedAriaLive","prevAnnouncedGroup","frameId","defaultOptionDescription","getItemIndex","containerRef","dataset","mouseTarget","OptionsList","onLoadMore","decreaseTopMargin","handleScroll","scrollContainer","bottomEdgePosition","onScroll","SelectableItem","ariaSelected","ariaChecked","hasBackground","isParent","isChild","virtualPosition","padBottom","screenReaderContent","ariaPosinset","ariaSetsize","screenReaderContentRef","a11yProperties","dimensionsByTheme","xy","dimensions","rx","ry","points","Item","filteringValue","hasCheckbox","wrappedOption","checkbox","CheckboxIcon","MultiSelectItem","getItemProps","checkboxes","optionProps","getTestOptionIndexes","renderOptions","hasDropdownStatus","virtualItems","virtualItem","globalIndex","isLastItem","ListItem","MutliselectItem","measureRef","PlainList","listBottom","rafId","observedNodes","changedStates","useIsomorphicLayoutEffect","useRect","initialRect","setElement","_React$useReducer","rectReducer","initialRectSet","_rect","wasEmpty","hasRectChanged","defaultEstimateSize","defaultKeyExtractor","defaultMeasureSize","horizontal","defaultRangeExtractor","overscan","useVirtual","_measurements","_ref$size","_ref$estimateSize","estimateSize","_ref$overscan","_ref$paddingStart","paddingStart","_ref$paddingEnd","paddingEnd","parentRef","scrollToFn","useObserver","onScrollElement","scrollOffsetFn","_ref$keyExtractor","keyExtractor","_ref$measureSize","measureSize","_ref$rangeExtractor","rangeExtractor","sizeKey","scrollKey","latestRef","scrollOffset","measurements","setScrollOffset","outerSize","defaultScrollToFn","resolvedScrollToFn","measuredCache","setMeasuredCache","measure","pendingMeasuredCacheIndexesRef","measuredSize","_start","_size","_end","totalSize","scrollOffsetFnRef","_calculateRange","getOffset","findNearestBinarySearch","calculateRange","indexes","measureSizeRef","_loop","_scrollOffset","old","_extends2","mountedRef","scrollToOffset","toOffset","_ref2$align","align","_latestRef$current","tryScrollToIndex","_temp2","_ref3$align","_latestRef$current2","measurement","scrollToIndex","low","high","getCurrentValue","middle","VirtualListOpen","menuMeasureRef","menuRefObject","VirtualListClosed","VirtualList","hasItems","DropdownStatus","checkControlled","handlerName","handlerValue","InternalSelect","filteringPlaceholder","filteringAriaLabel","filteringClearAriaLabel","virtualScroll","__inFilteringToken","selfControlId","handleNativeSearch","selectAriaLabelId","footerId","filteredText","dropdownStatus","announcement","ListComponent","onKeyPress","Dropdown","DropdownFooter","getExternalProps","Select","externalProps","Container","InternalSpaceBetween","SpaceBetween","Button","Textarea","disableBrowserSpellcheck","rows","textareaRef","generateConfig","getNow","moment","getFixedDate","getEndDate","getWeekDay","getYear","getHour","getMinute","getSecond","addYear","addMonth","addDate","setYear","setDate","setHour","setMinute","setSecond","date1","date2","isValidate","getWeekFirstDay","getWeekFirstDate","getWeek","getShortWeekDays","getShortMonths","_format","fallbackFormatList","formatText","matchFormat","matchText","_date","DisabledContext","SizeContext","keepEmpty","SpaceCompactItemContext","useCompactItemContext","compactItemContext","compactItemClassnames","compactDirection","isFirstItem","compactSize","_createSuper","shouldUpdate","cacheRef","fillRef","composeRef","refList","supportRef","nodeOrComponent","_type$prototype","_nodeOrComponent$prot","raf","caf","rafUUID","rafIds","wrapperRaf","callRef","leftTimes","realId","styleForPseudo","ids","myId","restFrames","internalCallback","offsetParent","pid","Wave","animationStart","destroyed","waveColor","insertExtraNode","extraNode","getAttributeName","isNotGrey","borderColor","nodeRoot","getRootNode","nodeBody","Document","childNodes","ele","Node","ELEMENT_NODE","getValidateContainer","resetEffect","bindAnimationEvent","getPropertyValue","clickWaveTimeoutId","animationStartId","renderWave","GroupSizeContext","sizeCls","LoadingOutlined","LoadingOutlinedSvg","isDOM","DomWrapper","useSafeState","destroyRef","ignoreDestroy","STATUS_NONE","STATUS_APPEAR","STATUS_ENTER","STATUS_LEAVE","STEP_NONE","STEP_PREPARE","STEP_START","STEP_ACTIVE","STEP_ACTIVATED","STEP_PREPARED","makePrefixMap","eventName","prefixes","vendorPrefixes","domSupport","win","getVendorPrefixes","_document$createEleme","prefixedEventNames","getVendorPrefixedEventName","prefixMap","stylePropList","internalAnimationEndName","internalTransitionEndName","supportTransition","animationEndName","transitionEndName","getTransitionName","transitionName","transitionType","cacheElementRef","onInternalMotionEnd","removeMotionEvents","FULL_STEP_QUEUE","SIMPLE_STEP_QUEUE","SkipStep","DoStep","prepareOnly","setStep","_useNextFrame","nextFrameRef","cancelNextFrame","nextFrame","nextFrameId","isCanceled","useNextFrame","_useNextFrame2","STEP_QUEUE","nextStep","doNext","transitionSupport","CSSMotion","_props$visible","_props$removeOnLeave","removeOnLeave","forceRender","motionName","leavedClassName","eventProps","supportMotion","contextMotion","isSupportTransition","motion","wrapperNodeRef","_useStatus","_ref$motionEnter","motionEnter","_ref$motionAppear","motionAppear","_ref$motionLeave","motionLeave","motionDeadline","motionLeaveImmediately","onAppearPrepare","onEnterPrepare","onLeavePrepare","onAppearStart","onEnterStart","onLeaveStart","onAppearActive","onEnterActive","onLeaveActive","onAppearEnd","onEnterEnd","onLeaveEnd","onVisibleChanged","asyncVisible","setAsyncVisible","setStatus","_useState6","setStyle","deadlineRef","getDomElement","updateMotionEndStatus","deadline","canEnd","currentActive","patchMotionEvents","useDomMotionEvents","getEventHandlers","targetStatus","eventHandlers","_useStepQueue2","useStepQueue","newStep","onPrepare","_eventHandlers$step","startStep","nextEventHandlers","firstMountChangeRef","mergedStyle","useStatus","_useStatus2","statusStep","statusStyle","mergedVisible","renderedRef","motionChildren","setNodeRef","mergedProps","statusSuffix","motionCls","STATUS_ADD","STATUS_KEEP","STATUS_REMOVE","STATUS_REMOVED","wrapKeyToObject","keyObj","parseKeys","_excluded2","MOTION_PROP_NAMES","OriginCSSMotion","CSSMotionList","keyEntities","removeKey","nextKeyEntities","entity","_onVisibleChanged","onAllRemoved","motionProps","changedVisible","parsedKeyObjects","mixedKeyEntities","prevKeys","currentKeys","currentIndex","currentLen","prevKeyObjects","currentKeyObjects","hit","currentKeyObj","duplicatedKeys","matchKey","diffKeys","prevEntity","getCollapsedWidth","getRealWidth","scrollWidth","existIcon","rxTwoCNChar","isTwoCNChar","isUnBorderedButtonType","insertSpace","needInserted","SPACE","_props$loading","_props$type","danger","_props$shape","customizeSize","customDisabled","_props$ghost","ghost","_props$block","_props$htmlType","htmlType","mergedDisabled","groupSize","innerLoading","setLoading","_React$useState4","hasTwoCNChar","setHasTwoCNChar","autoInsertSpaceInButton","isNeedInserted","loadingOrDelay","delayTimer","autoInsertSpace","_useCompactItemContex","sizeFullname","large","small","linkButtonRestProps","iconNode","LoadingIcon","kids","isPrevChildPure","isCurrentChildPure","spaceChildren","buttonNode","Group","__ANT_BUTTON","CloseOutlined","CloseOutlinedSvg","PresetStatusColorTypes","PresetColorTypes","cls","PresetColorRegex","PresetStatusColorRegex","InternalTag","closeIcon","_a$closable","closable","setVisible","isPresetColor","tagStyle","presetColor","tagClassName","handleCloseClick","isNeedWave","tagProps","tagNode","CheckableTag","CalendarOutlined","CalendarOutlinedSvg","ClockCircleOutlined","ClockCircleOutlinedSvg","CloseCircleFilled","CloseCircleFilledSvg","SwapRightOutlined","SwapRightOutlinedSvg","useEvent","fnRef","memoFn","_fnRef$current","useInternalLayoutEffect","firstMountRef","useLayoutUpdateEffect","firstMount","useMergedState","defaultStateValue","postState","innerValue","setInnerValue","mergedValue","postMergedValue","onChangeFn","prevValue","setPrevValue","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","PRINT_SCREEN","INSERT","DELETE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","QUESTION_MARK","META","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","WIN_IME","isTextModifyingKeyEvent","isCharacterKey","HIDDEN_STYLE","visibility","_ref$prevIcon","prevIcon","_ref$nextIcon","nextIcon","_ref$superPrevIcon","superPrevIcon","_ref$superNextIcon","superNextIcon","onSuperPrev","onSuperNext","onPrev","onNext","PanelContext","hideNextBtn","hidePrevBtn","viewDate","onPrevDecades","onNextDecades","hideHeader","headerPrefixCls","yearNumber","startYear","DECADE_DISTANCE_COUNT","endYear","nextTime","setDateTime","defaultDate","newDate","getLastDay","endDate","monthShow","PanelBody","disabledDate","onSelect","picker","rowNum","colNum","prefixColumn","rowClassName","baseDate","getCellClassName","getCellText","getCellNode","getCellDate","titleCell","headerCells","onDateMouseEnter","onDateMouseLeave","cellPrefixCls","rowStartDate","_objectSpread2","getCellDateDisabled","cellDate","onMouseEnter","onMouseLeave","DECADE_UNIT_DIFF_DES","DECADE_UNIT_DIFF","decadeYearNumber","startDecadeYear","endDecadeYear","baseDecadeYear","DECADE_COL_COUNT","startDecadeNumber","endDecadeNumber","_getBBox","_element$getBoundingC","_width","_height","scrollIds","scrollTo","perTick","createKeyDownHandler","onLeftRight","onCtrlLeftRight","onUpDown","onPageUpDown","getDefaultFormat","showTime","use12Hours","mergedFormat","getInputSize","globalClickFunc","clickCallbacks","PickerModeMap","elementsContains","onViewDateChange","operationRef","onPanelChange","panelPrefixCls","onDecadesChange","DecadeHeader","DecadeBody","isNullEqual","value1","value2","isSameYear","year1","year2","equal","getQuarter","isSameQuarter","quarter1","quarter2","isSameMonth","month1","month2","isSameDate","isSameWeek","isEqual","time1","time2","isSameTime","isInRange","startDate","getClosingViewDate","formatValue","parseValue","formatList","getDisabledFromRange","currentMode","startMonth","hideDisabledOptions","ulRef","liRefs","scrollRef","tryOrNextFrame","isVisible","waitElementReady","_scrollRef$current","_classNames2","leftPad","getDataOrAriaProps","retProps","updateValues","newValues","shouldUnitsUpdate","prevUnits","nextUnits","generateUnits","disabledUnits","integerStep","activeColumnIndex","showHour","showMinute","showSecond","_props$hourStep","hourStep","_props$minuteStep","minuteStep","_props$secondStep","secondStep","disabledHours","disabledMinutes","disabledSeconds","disabledTime","contentPrefixCls","columnPrefixCls","originHour","_React$useMemo2","disabledConfig","mergedDisabledHours","mergedDisabledMinutes","mergedDisabledSeconds","isNewPM","newHour","newMinute","newSecond","mergedHour","mergedMinute","mergedSecond","utilSetTime","rawHours","memorizedRawHours","_React$useMemo3","AMPMDisabled","hourValue","_React$useMemo4","AMDisabled","PMDisabled","hourMeta","hourLabel","addColumnNode","columnValue","onColumnSelect","valueIndex","findIndex","unitLen","nextUnit","TimeUnitColumn","PMIndex","_props$format","_props$use12Hours","bodyOperationRef","setActiveColumnIndex","columnsCount","TimeHeader","TimeBody","useCellClassName","rangedValue","hoverRangedValue","isInView","isSameCell","offsetCell","today","prevDate","nextDate","rangeStart","rangeEnd","hoverStart","hoverEnd","isRangeHovered","isRangeStart","isRangeEnd","isHoverStart","isHoverEnd","isHoverEdgeStart","isHoverEdgeEnd","rowCount","dateRender","RangeContext","weekFirstDay","monthStartDate","startDateWeekDay","alignStartDate","getWeekStartDate","weekDaysLocale","shortWeekDays","onNextMonth","onPrevMonth","onNextYear","onPrevYear","onYearClick","onMonthClick","monthsLocale","shortMonths","yearNode","yearFormat","monthNode","monthFormat","monthYearNodes","monthBeforeYear","_props$panelName","panelName","keyboardConfig","_onSelect","onYearChange","onMonthChange","DateHeader","DateBody","ACTIVE_PANEL","activePanel","setActivePanel","dateOperationRef","timeOperationRef","timeProps","nextActivePanel","activeIndex","getNextActive","onInternalSelect","selectedDate","disabledTimes","DatePanel","TimePanel","rowPrefixCls","monthCellRender","baseMonth","MonthHeader","MonthBody","baseQuarter","quarterFormat","QuarterHeader","QuarterBody","onPrevDecade","onNextDecade","onDecadeClick","YEAR_DECADE_COUNT","yearPrefixCls","baseYear","YEAR_COL_COUNT","currentYearNumber","sourceMode","onDecadeChange","YearHeader","YearBody","getExtraFooter","renderExtraFooter","getRanges","presetNode","okNode","_ref$rangeList","rangeList","_ref$components","components","needConfirmButton","onNow","onOk","okDisabled","showNow","rangeItem","CALENDAR_PANEL_MODE","_props$prefixCls","pickerValue","defaultPickerValue","_props$picker","_props$tabIndex","showToday","onPickerValueChange","_onOk","isHourStepValid","isMinuteStepValid","isSecondStepValid","panelContext","panelDivRef","panelRef","onContextSelect","hideRanges","defaultOpenValue","inRange","panelPosition","initRef","_useMergedState2","_useMergedState3","defaultDateObject","_useMergedState4","setInnerViewDate","setViewDate","getInternalNextMode","nextMode","getNextMode","_useMergedState6","mergedMode","setInnerMode","panelNode","setSourceMode","triggerSelect","onInternalKeyDown","selectable","operationFnc","isDateMode","isSelectable","extraFooter","rangesNode","todayNode","pickerProps","newMode","viewValue","DecadePanel","YearPanel","MonthPanel","QuarterPanel","WeekPanel","DatetimePanel","lowerBoundTime","lowerBoundHour","lowerBoundMinute","getLowerBoundTime","adjustedNow","todayCls","addEventListenerWrap","didUpdate","_containerRef$current","_containerRef$current2","isPointsEq","a1","a2","isAlignPoint","getMotion","Mask","mask","maskMotion","maskAnimation","maskTransitionName","vendorPrefix","jsCssMap","Webkit","Moz","getVendorPrefix","getTransformName","setTransitionProperty","setTransform","getComputedStyleX","matrix2d","matrix3d","forceRelayout","originalStyle","getScroll","getScrollLeft","getScrollTop","doc","docElem","clientLeft","clientTop","getClientPosition","isWindow","getDocument","_RE_NUM_NO_PX","RE_POS","CURRENT_STYLE","RUNTIME_STYLE","getOffsetDirection","useCssRight","useCssBottom","oppositeOffsetDirection","setLeftTop","presetH","presetV","horizontalProperty","verticalProperty","oppositeHorizontalProperty","oppositeVerticalProperty","originalTransition","originalOffset","preset","_dir","_off","setTransform$1","originalXY","matrix","getTransformXY","resultXY","match2d","setTransformXY","each","isBorderBoxFn","rsLeft","pixelLeft","BOX_MODELS","CONTENT_INDEX","PADDING_INDEX","BORDER_INDEX","getPBMWidth","cssProp","domUtils","getWH","viewportWidth","viewportHeight","docWidth","docHeight","borderBoxValue","isBorderBox","cssBoxValue","borderBoxValueOrIsBorderBox","refWin","documentElementProp","compatMode","cssShow","getWHIgnoreDisplay","includeMargin","utils","getWindow","ignoreShake","oriOffset","oLeft","oTop","tLeft","tTop","useCssTransform","setOffset","getWindowScrollLeft","getWindowScrollTop","merge","getOffsetParent","positionStyle","getParent$1","getVisibleRectForElement","alwaysByViewport","visibleRect","originalPosition","scrollX","scrollY","documentWidth","documentHeight","bodyStyle","isAncestorFixed","maxVisibleWidth","maxVisibleHeight","getRegion","outerWidth","outerHeight","getAlignOffset","getElFuturePos","elRegion","refNodeRegion","targetOffset","isFailX","elFuturePos","isFailY","flip","flipOffset","convertOffset","offsetLen","normalizeOffset","doAlign","tgtRegion","isTgtRegionVisible","newOverflowCfg","fail","newElRegion","adjustX","adjustY","newPoints","newOffset","newTargetOffset","isCompleteFailX","_newPoints","_newOffset","_newTargetOffset","isCompleteFailY","isStillFailX","isStillFailY","_newPoints2","resizeWidth","resizeHeight","adjustForViewport","alignElement","refNode","isTargetNotOutOfVisible","targetRegion","isOutOfVisibleRect","__getOffsetParent","__getVisibleRectForElement","obj1","obj2","shallow","refSet","deepEqual","circular","newLevel","MapShim","getIndex","class_1","__entries__","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","isReflowProperty","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","getContentRect","bbox","getSVGContentRect","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","rectInit","Constr","createReadOnlyRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","clearActive","observation","monitorResize","prevWidth","prevHeight","_target$getBoundingCl","fixedWidth","fixedHeight","getPoint","point","Align","onAlign","monitorWindowResize","_ref$monitorBufferTim","monitorBufferTime","childNode","forceAlignPropsRef","_useBuffer","calledRef","timeoutRef","cancelTrigger","useBuffer","_forceAlignPropsRef$c","latestDisabled","latestTarget","latestAlign","latestOnAlign","_element","_point","tgtPoint","pointInView","alignPoint","_useBuffer2","_forceAlign","cancelForceAlign","setPoint","forceAlign","RcAlign","_regeneratorRuntime","wrap","Generator","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","invoke","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isGeneratorFunction","awrap","async","rval","finish","delegateYield","asyncGeneratorStep","_asyncToGenerator","_next","_throw","StatusQueue","PopupInner","destroyPopupOnHide","getRootDomNode","getClassNameFromAlign","onTouchStart","alignRef","alignedClassName","setAlignedClassName","_useStretchStyle","targetSize","setTargetSize","sizeStyle","minHeight","tgtWidth","tgtHeight","useStretchStyle","_useStretchStyle2","stretchStyle","measureStretchStyle","_useVisibleStatus","doMeasure","setInternalStatus","rafRef","cancelRaf","_callee","useVisibleStatus","_useVisibleStatus2","goNextStatus","alignTimes","setAlignTimes","prepareResolveRef","_alignRef$current","onInternalAlign","popupDomNode","matchAlign","nextAlignedClassName","_prepareResolveRef$cu","onShowPrepare","originHandler","pointerEvents","alignDisabled","motionRef","motionClassName","motionStyle","mergedClassName","onMouseDownCapture","onTouchStartCapture","MobilePopupInner","_props$mobile","mobile","popupClassName","popupStyle","_props$mobile$popupMo","popupMotion","popupRender","Popup","innerVisible","serInnerVisible","inMobile","setInMobile","cloneProps","agent","vendor","opera","popupNode","returnEmptyString","returnDocument","ALL_HANDLERS","PortalComponent","_popupVisible","mouseEnterDelay","fireEvents","delaySetPopupVisible","mouseLeaveDelay","clearDelayTimer","_this$popupRef$curren","popupRef","isFocusToShow","focusTime","focusDelay","preClickTime","preTouchTime","isBlurToHide","blurDelay","setPopupVisible","isContextMenuToShow","preTime","isClickToShow","isClickToHide","nextVisible","popupVisible","_this$context","hasPopupMouseDown","mouseDownTimeout","onPopupMouseDown","maskClosable","getPopupDomNode","isContextMenuOnly","getTriggerDOMNode","domNode","popupPlacement","builtinPlacements","getPopupClassNameFromAlign","placements","placement","getAlignPopupClassName","_this$props2","onPopupAlign","popupAnimation","popupTransitionName","popup","onPopupClick","_this$state","getPopupAlign","mouseProps","isMouseEnterToShow","onPopupMouseEnter","isMouseLeaveToHide","onPopupMouseLeave","popupContainer","attachId","mountNode","_this$props3","getPopupContainer","attachParent","portalContainer","prevPopupVisible","afterPopupVisibleChange","defaultPopupVisible","currentDocument","clickOutsideHandler","onDocumentClick","touchOutsideHandler","contextMenuOutsideHandler1","onContextMenuClose","contextMenuOutsideHandler2","clearOutsideHandler","_this$popupRef$curren2","popupAlign","placementStr","getAlignFromPlacement","onPopupVisibleChange","delayS","childPros","_this$props4","showAction","_this$props5","_this$props6","hideAction","_this$props7","_this$props8","_this$props9","_this$props10","_this$popupRef$curren3","childCallback","_this$props11","autoDestroy","newChildProps","onContextMenu","createTwoChains","childrenClassName","portal","handlePortalUpdate","getComponent","TriggerContext","triggerContextValue","newState","BUILT_IN_PLACEMENTS","bottomLeft","bottomRight","topLeft","topRight","popupElement","dropdownClassName","dropdownAlign","dropdownPrefixCls","usePickerInput","isClickOutside","triggerOpen","forwardKeyDown","_onKeyDown","blurToCancel","onSubmit","onCancel","_onFocus","_onBlur","currentFocusedKey","_ref$key","typing","setTyping","focused","setFocused","delayBlurTimer","preventBlurRef","valueChangedRef","preventDefaultRef","inputProps","shadowRoot","_e$composedPath","composed","composedPath","getTargetFromEvent","clickedOutside","queueFunc","useTextValueMapping","valueTexts","onTextChange","setInnerText","valueTextsRef","resetText","valText","useValueTexts","firstValueText","fullValueTexts","formatStr","shallowEqual","useHoverValue","valueText","internalSetValue","immediately","firstText","onLeave","InnerPicker","inputReadOnly","allowClear","defaultOpen","suffixIcon","clearIcon","pickerRef","panelRender","onOpenChange","_props$autoComplete","inputRender","inputDivRef","selectedValue","setSelectedValue","postOpen","newOpen","mergedOpen","triggerInnerOpen","_useValueTexts2","_useTextValueMapping2","newText","inputDate","triggerTextChange","triggerChange","_usePickerInput","_usePickerInput2","_usePickerInput2$","_useHoverValue2","hoverValue","panelProps","PickerPanel","suffixNode","clearNode","panel","mergedInputProps","inputNode","PickerTrigger","Picker","getStartEndDistance","getDistance","compareFunc","decade1","decade2","isSameDecade","useRangeViewDates","defaultDates","defaultViewDates","setDefaultViewDates","viewDates","setInternalViewDates","getRangeViewDate","newViewDates","anotherIndex","reorderValues","canValueTrigger","allowEmpty","InnerRangePicker","_classNames3","_classNames4","_props$separator","_disabledTime","ranges","onCalendarChange","activePickerIndex","openRecordsRef","startInputDivRef","endInputDivRef","separatorRef","startInputRef","endInputRef","arrowRef","mergedActivePickerIndex","setMergedActivePickerIndex","_useRangeViewDates2","getViewDate","_useMergedState5","postValues","_useMergedState8","mergedModes","setInnerModes","triggerModesChange","modes","_useRangeDisabled","disabledStart","disabledEnd","weekFirstDate","monthNumber","quarterNumber","disabledStartDate","disabledEndDate","useRangeDisabled","_useRangeDisabled2","_useMergedState10","startOpen","endOpen","popupMinWidth","setPopupMinWidth","_triggerOpen","openRecords","triggerOpenAndFocus","sourceIndex","startValue","endValue","startStr","endStr","canStartValueTrigger","canEndValueTrigger","nextOpenIndex","sharedTextHooksProps","startValueTexts","firstStartValueText","_useValueTexts4","endValueTexts","firstEndValueText","_onTextChange","startText","triggerStartTextChange","resetStartText","_useTextValueMapping4","endText","triggerEndTextChange","resetEndText","rangeHoverValue","setRangeHoverValue","setHoverRangedValue","startHoverValue","onStartEnter","onStartLeave","_useHoverValue4","endHoverValue","onEndEnter","onEndLeave","getSharedInputHookProps","startInputProps","startFocused","startTyping","_usePickerInput3","_usePickerInput4","endInputProps","_usePickerInput4$","endFocused","endTyping","renderPanel","panelHoverRangedValue","panelShowTime","timeDefaultValues","panelDateRender","arrowLeft","panelLeft","arrowMarginLeft","arrowPositionStyle","rangePanel","panels","nextViewDate","showDoublePanel","leftPanel","newViewDate","rightPanel","mergedNodes","marginLeft","renderPanels","inputSharedProps","activeBarLeft","activeBarWidth","activeBarPositionStyle","RangePicker","HOOK_MARK","warningFunc","getFieldValue","getFieldsValue","getFieldError","getFieldWarning","getFieldsError","isFieldsTouched","isFieldTouched","isFieldValidating","isFieldsValidating","resetFields","setFields","setFieldValue","setFieldsValue","validateFields","submit","getInternalHooks","initEntityValue","registerField","useSubscribe","setInitialValues","destroyForm","setCallbacks","registerWatch","getFields","setValidateMessages","setPreserve","getInitialValue","formatRegExp","convertFieldsError","template","isEmptyValue","isNativeStringType","asyncSerialArray","original","AsyncValidationError","asyncMap","objArr","_pending","flattenArr","flattenObjArr","firstFields","objArrKeys","objArrLength","results","asyncParallelArray","complementError","rule","fieldValue","fullFields","fullField","deepMerge","urlReg","required$1","required","messages","pattern$2","types","integer","word","includeBoundaries","v6seg","v6","v46Exact","v4exact","v6exact","ip","ipv4","ipv6","getUrlRegex","ENUM$1","rules","whitespace","ruleType","enum","mismatch","validators","boolean","dateObject","newMessages","cloned","Schema","_messages","validate","source_","messages$1","series","validator","getValidationMethod","getType","errorFields","doIt","deep","defaultField","addFullField","schema","errorList","suppressWarning","filledErrors","fieldsSchema","paredFieldsSchema","fieldSchema","fieldSchemaList","errs","finalErrors","asyncValidator","suppressValidatorError","_errors","messageIndex","typeTemplate","defaultValidateMessages","internalSet","removeIfUndefined","_paths","_toArray","restPath","cloneDeep","cloneArrayDeep","cloneObjectDeep","getNamePath","namePath","cloneByNamePathList","namePathList","newStore","containsNamePath","matchNamePath","internalSetValues","recursive","setValues","restValues","changedNamePath","nameUnit","defaultGetValueFromEvent","valuePropName","move","moveIndex","AsyncValidator","RawAsyncValidator","replaceMessage","kv","CODE_LOGIC_ERROR","validateRule","_x","_x2","_x3","_x4","_x5","_validateRule","_callee2","messageVariables","cloneRule","originValidator","subRuleField","subResults","fillVariableResult","_context2","ruleIndex","validateMessages","t0","mergedMessage","all","subValue","validateRules","validateFirst","summaryPromise","filledRules","currentRule","originValidatorFunc","hasPromise","w1","warningOnly","i1","w2","i2","_x6","_x7","rulePromises","_x9","_finishOnFirstFailed","finishOnFirstFailed","_x8","_finishOnAllFailed","finishOnAllFailed","_callee3","_context3","errorsList","_callee4","_context4","ruleError","EMPTY_ERRORS","requireUpdate","nextValue","Field","resetCount","cancelRegisterFunc","touched","dirty","validatePromise","prevValidating","warnings","cancelRegister","preserve","isListField","_fieldContext$prefixN","fieldContext","prefixName","getRules","_this$props3$rules","triggerMetaEvent","onMetaChange","getMeta","onStoreChange","prevStore","_this$props4$dependen","onReset","curValue","namePathMatch","reRender","validating","dependency","relatedFields","rootPromise","_this$props5$validate","triggerName","filteredRules","validateTrigger","ruleErrors","_ruleErrors$forEach","nextErrors","nextWarnings","_ref3$errors","isFieldDirty","getErrors","getWarnings","isList","isPreserve","getOnlyChild","getControlled","toChildrenArray","getValueFromEvent","normalize","getValueProps","mergedValidateTrigger","mergedGetValueProps","originTriggerFunc","originTrigger","returnChildNode","_this$getOnlyChild","FieldContext","keyManager","parentPrefixName","listContext","getKey","pathName","ListContext","_ref3$value","getNewValue","operations","indexSet","keysIndex","_move","listValue","SPLIT","cell","NameMap","kvs","cells","_cell$match2","FormStore","forceRootUpdate","formHooked","subscribable","fieldEntities","initialValues","lastValidatePromise","getForm","prevWithoutPreserves","_this$prevWithoutPres","nextStore","updateStore","getFieldEntities","isMergedPreserve","initValue","watchList","notifyWatch","warningUnhooked","getFieldsMap","pure","getFieldEntitiesForNamePathList","nameList","INVALIDATE_NAME_PATH","filterFunc","filteredNameList","_entity$isListField","arg0","arg1","isAllFieldsTouched","shortNamePath","fieldNamePath","isNamePathListTouched","entities","namePathListEntities","testField","resetWithFieldInitialValue","records","requiredFieldEntities","_requiredFieldEntitie","originValue","skipExist","notifyObservers","fieldData","fieldPreserve","mergedPreserve","subNamePath","_prevStore","triggerDependenciesUpdate","updateValue","_namePath","mergedInfo","childrenFields","getDependencyChildrenFields","onValuesChange","triggerOnFieldsChange","rootNamePath","dependencies2fields","dependencyNamePath","fillChildren","filedErrors","onFieldsChange","fieldName","provideNameList","promiseList","mergedErrors","mergedWarnings","allPromiseFinish","resultNamePathList","returnPromise","outOfDate","onFinish","onFinishFailed","formRef","formStore","FormContext","triggerFormChange","triggerFormFinish","registerForm","unregisterForm","_ref$component","_ref$validateTrigger","_onFieldsChange","_onFinish","formContext","formInstance","useForm","_formInstance$getInte","changedFields","childrenNode","mountRef","childrenRenderProps","prevFieldsRef","sourceKeys","targetKeys","sourceValue","targetValue","isSimilar","formContextValue","wrapperNode","_restProps$onReset","useWatchWarning","_args$","valueStr","valueStrRef","isValidForm","namePathRef","nextValueStr","RefForm","FieldForm","FormProvider","onFormChange","onFormFinish","formsRef","forms","newForms","List","useWatch","FormItemInputContext","rangePlaceholder","yearPlaceholder","quarterPlaceholder","monthPlaceholder","weekPlaceholder","rangeYearPlaceholder","rangeQuarterPlaceholder","rangeMonthPlaceholder","rangeWeekPlaceholder","backToToday","timeSelect","dateSelect","weekSelect","monthSelect","yearSelect","decadeSelect","dayFormat","dateTimeFormat","previousMonth","nextMonth","previousYear","nextYear","previousDecade","nextDecade","previousCentury","nextCentury","timePickerLocale","TimePickerLocale","Pagination","items_per_page","jump_to","jump_to_confirm","prev_page","next_page","prev_5","next_5","prev_3","next_3","page_size","DatePicker","TimePicker","Calendar","Table","filterTitle","filterConfirm","filterReset","filterEmptyText","filterCheckall","filterSearchPlaceholder","emptyText","selectAll","selectInvert","selectNone","selectionAll","sortTitle","expand","collapse","triggerDesc","triggerAsc","cancelSort","Modal","okText","cancelText","justOkText","Popconfirm","Transfer","titles","searchPlaceholder","itemUnit","itemsUnit","selectCurrent","removeCurrent","removeAll","Upload","uploading","removeFile","uploadError","previewFile","downloadFile","Empty","Text","edit","copied","PageHeader","back","Image","preview","_props$componentName","defaultLocale","antLocale","LocaleContext","defaultLocaleData","localeFromContext","localeCode","exist","getStatusClassNames","hasFeedback","getMergedStatus","contextStatus","customStatus","getPlaceholder","customizePlaceholder","getRangePlaceholder","transPlacement2DropdownAlign","Components","getTimeProps","firstFormat","showTimeObj","_generateSinglePicker","getPicker","customizeGetPopupContainer","_props$bordered","bordered","_useContext","additionalProps","additionalOverrideProps","mergedPicker","rootPrefixCls","mergedSize","formItemContext","feedbackIcon","LocaleReceiver","enUS","contextLocale","RCPicker","WeekPicker","MonthPicker","YearPicker","QuarterPicker","generateSinglePicker","customGetPopupContainer","RCRangePicker","generateRangePicker","MergedDatePicker","generatePicker","momentGenerateConfig","SYMBOL_TO_STRING_TAG","getLocation","lineRegexp","line","printLocation","printSourceLocation","sourceLocation","firstLineColumnOffset","locationOffset","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","lines","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","padLen","enumerableOnly","sym","Class","_cache","Parent","sham","Proxy","GraphQLError","Derived","hasNativeReflectConstruct","Super","NewTarget","nodes","originalError","extensions","_nodeLocations","_nodeLocations2","_nodeLocations3","undefinedIfEmpty","nodeLocations","_i2","_this$nodes","loc","locations","originalExtensions","captureStackTrace","_i4","_error$nodes2","_i6","_error$locations2","printError","syntaxError","Kind","NAME","DOCUMENT","OPERATION_DEFINITION","VARIABLE_DEFINITION","SELECTION_SET","FIELD","ARGUMENT","FRAGMENT_SPREAD","INLINE_FRAGMENT","FRAGMENT_DEFINITION","VARIABLE","INT","FLOAT","STRING","BOOLEAN","NULL","ENUM","LIST","OBJECT","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","FIELD_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","defineInspect","classObject","nodejsCustomInspectSymbol","Location","startToken","endToken","kind","TokenKind","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","BLOCK_STRING","COMMENT","MAX_ARRAY_LENGTH","MAX_RECURSIVE_DEPTH","seenValues","previouslySeenValues","customInspectFn","getCustomFn","customValue","formatArray","getObjectTag","formatObject","formatObjectValue","devAssert","Source","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","SCHEMA","SCALAR","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","dedentBlockStringValue","rawString","commonIndent","_commonIndent","isFirstLine","isEmptyLine","indent","getBlockStringIndentation","startLine","isBlank","endLine","Lexer","startOfFileToken","lastToken","lineStart","advance","lookahead","_token$next","readToken","printCharCode","lexer","bodyLength","_line","_col","readComment","readBlockString","readString","readNumber","readName","unexpectedCharacterMessage","firstCode","isFloat","readDigits","isNameStart","chunkStart","char2hex","invalidSequence","Parser","parseDocument","sourceObj","isSource","_lexer","parseName","expectToken","definitions","many","parseDefinition","peek","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","variableDefinitions","directives","selectionSet","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","variable","parseVariable","parseTypeReference","expectOptionalToken","parseValueLiteral","selections","parseSelection","parseFragment","parseField","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","hasTypeCondition","expectOptionalKeyword","parseFragmentName","typeCondition","parseNamedType","_this$_options","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","parseObjectField","parseDirective","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","operationTypes","parseOperationTypeDefinition","interfaces","parseImplementsInterfaces","parseFieldsDefinition","_this$_options2","allowLegacySDLImplementsInterfaces","delimitedMany","_this$_options3","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","repeatable","parseDirectiveLocations","parseDirectiveLocation","_this$_options4","noLocation","getTokenKindDesc","getTokenDesc","atToken","openKind","parseFn","closeKind","delimiterKind","isPunctuatorTokenKind","QueryDocumentKeys","OperationDefinition","VariableDefinition","Variable","SelectionSet","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","BREAK","getVisitFn","visitor","kindVisitor","kindSpecificVisitor","leave","specificVisitor","specificKindVisitor","print","ast","visitorKeys","inArray","edits","ancestors","newRoot","isEdited","_Object$keys2","editOffset","editKey","editValue","_visitorKeys$node$kin","visitFn","visit","printDocASTReducer","varDefs","argsLine","_ref9","_ref10","indentation","preferMultipleLines","isSingleLine","hasLeadingSpace","hasTrailingQuote","printAsMultipleLines","printBlockString","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","_ref17","_ref18","_ref19","addDescription","_ref20","_ref21","_ref22","_ref23","_ref24","hasMultilineItems","_ref25","_ref26","_ref27","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","maybeArray","_maybeArray$filter$jo","maybeString","isMultiline","zenObservable","DateUtils","clockOffset","getDateWithClockOffset","getClockOffset","getHeaderStringFromDate","getDateFromHeaderString","isClockSkewed","serverDate","setClockOffset","getSignedHeaders","AMZ_DATE_QUERY_PARAM","TOKEN_QUERY_PARAM","HOST_HEADER","AMZ_DATE_HEADER","TOKEN_HEADER","KEY_TYPE_IDENTIFIER","SHA256_ALGORITHM_IDENTIFIER","getSigningValues","signingDate","signingRegion","signingService","uriEscapePath","longDate","shortDate","getFormattedDates","credentialScope","getCredentialScope","SHORT_TO_HEX","HEX_TO_SHORT","encodedByte","getHashedData","sha256","getHashedDataAsHex","getCanonicalHeaders","escapeUri","uri","hexEncode","getCanonicalUri","getHashedPayload","isSourceData","isArrayBuffer","getSignature","canonicalRequest","searchParams","keyA","valA","keyB","valB","getCanonicalRequest","stringToSign","hashedRequest","getStringToSign","signature","dateKey","regionKey","serviceKey","getSigningKey","AWS_ENDPOINT_REGEX","Signer","accessInfo","serviceInfo","requestToSign","signedRequest","signingValues","credentialEntry","signedHeadersEntry","signatureEntry","signRequest","getOptions","Authorization","authorization","signUrl","urlOrRequest","urlToSign","presignable","signedUrl","presignedUrl","append","presignUrl","session_token","sessionTokenRequiredInSigning","access_key","secret_key","parseServiceInfo","urlRegion","urlService","capacityInBytes","itemMaxSize","defaultTTL","defaultPriority","warningThreshold","getByteLength","getCurrTime","isInteger","_isInteger","CacheObject","StorageCache","cacheCurSizeKey","checkConfig","fillCacheItem","visitedTime","byteSize","BrowserStorageCacheClass","cacheConfig","_decreaseCurSizeInBytes","curSize","getCacheCurSize","_increaseCurSizeInBytes","_refreshItem","prefixedKey","_removeItem","itemSize","_setItem","setItemErr","_sizeToPop","spaceItemNeed","cacheThresholdSpace","_isCacheFull","_findValidKeys","keyInCache","_popOutItems","sizeToPop","remainedSize","cacheItemOptions","validKeys","keysToRemove","getAllKeys","createInstance","BrowserStorageCache","CONTROL_MSG","ConnectionState","AbstractPubSubProvider","getProviderName","getCategory","MESSAGE_TYPES","SUBSCRIPTION_STATUS","SOCKET_STATUS","NON_RETRYABLE_CODES","AWS_APPSYNC_REALTIME_HEADERS","accept","DEFAULT_KEEP_ALIVE_TIMEOUT","ReachabilityNavigator","networkMonitor","netInfo","online","globalObj","selfContext","WorkerGlobalScope","isWebWorker","onLine","notifyOnline","notifyOffline","_observers","_observerOverride","ReconnectEvent","ReachabilityMonitor","Reachability","CONNECTION_CHANGE","KEEP_ALIVE_MISSED","keepAliveState","KEEP_ALIVE","CONNECTION_ESTABLISHED","connectionState","CONNECTION_FAILED","intendedConnectionState","CLOSING_CONNECTION","OPENING_CONNECTION","CLOSED","ONLINE","networkState","OFFLINE","ConnectionStateMonitor","_networkMonitoringSubscription","_linkedConnectionState","_initialNetworkStateSubscription","record","_linkedConnectionStateObservable","connectionStateObserver","_linkedConnectionStateObserver","enableNetworkMonitoring","disableNetworkMonitoring","previous","connectionStatesTranslator","toInclude","statusUpdates","newSocketStatus","ConnectedPendingNetwork","ConnectedPendingDisconnect","ConnectionDisruptedPendingNetwork","ConnectionDisrupted","ConnectedPendingKeepAlive","Connecting","Disconnected","Connected","GraphQLAuthError","ReconnectionMonitor","reconnectObservers","reconnectObserver","START_RECONNECT","reconnectSetTimeoutId","reconnectIntervalId","_triggerReconnect","HALT_RECONNECT","dispatchApiEvent","standardDomainPattern","AWSAppSyncRealTimeProvider","socketStatus","keepAliveTimeout","subscriptionObserverMap","promiseArray","connectionStateMonitor","reconnectionMonitor","connectionStateMonitorSubscription","connectionStateObservable","getNewWebSocket","WebSocket","newClient","publish","_topics","_msg","isCustomDomain","appSyncGraphqlEndpoint","reconnectSubscription_1","subscriptionStartActive_1","subscriptionId_1","startSubscription_1","_startSubscriptionWithAWSAppSyncRealTime","subscriptionId","REALTIME_SUBSCRIPTION_INIT_ERROR","finally","_waitForSubscriptionToBeConnected","subscriptionState","CONNECTED","_sendUnsubscriptionMessage","_removeSubscriptionObserver","authenticationType","variables","apiKey","graphql_headers","additionalHeaders","PENDING","startAckTimeoutId","dataString","_awsRealTimeHeaderBasedAuth","canonicalUri","_j","headerObj","subscriptionMessage","GQL_START","stringToAWSRealTime","_initializeWebSocketConnection","_logStartSubscriptionError","subscriptionFailedCallback","subscriptionReadyCallback","_timeoutStartSubscriptionAck","awsRealTimeSocket","readyState","OPEN","READY","unsubscribeMessage","GQL_STOP","_closeSocketIfRequired","bufferedAmount","keepAliveTimeoutId","keepAliveAlertTimeoutId","tempSocket","onclose","_handleIncomingSubscriptionMessage","GQL_DATA","GQL_START_ACK","SUBSCRIPTION_ACK","GQL_CONNECTION_KEEP_ALIVE","_errorDisconnect","TIMEOUT_DISCONNECT","GQL_ERROR","FAILED","CONNECTING","authHeader","headerString","headerQs","discoverableEndpoint","isSSLEnabled","awsRealTimeUrl","authTokenSubprotocol","_initializeRetryableHandshake","subprotocol","_initializeHandshake","newSocket","onopen","ackOk_1","reason","connectionTimeoutMs","GQL_CONNECTION_ACK","CONNECTION_CLOSED","GQL_CONNECTION_ERROR","errorType","gqlInit","GQL_CONNECTION_INIT","err_4","headerHandler","API_KEY","_awsRealTimeApiKeyHeader","AWS_IAM","_awsRealTimeIAMHeader","OPENID_CONNECT","_awsRealTimeOPENIDHeader","AMAZON_COGNITO_USER_POOLS","_awsRealTimeCUPHeader","AWS_LAMBDA","_customAuthHeader","dtStr","endpointInfo","_ensureCredentials","creds","InternalPubSubClass","_awsAppSyncRealTimeProvider","removePluggable","providerName","getProviderByName","awsAppSyncRealTimeProvider","getProviders","topics","providers","pubSubUserAgentDetails","Subscribe","InternalPubSub","kindOf","thing","kindOfTest","typeOfTest","isPlainObject","isFile","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","allOwnKeys","findKey","_global","isContextDefined","isTypedArray","TypedArray","isHTMLForm","isRegExp","reduceDescriptors","reducer","descriptors","reducedDescriptors","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","_setImmediate","setImmediateSupported","setImmediate","postMessageSupported","asap","queueMicrotask","nextTick","isFormData","FormData","isArrayBufferView","isBoolean","isStream","pipe","caseless","assignValue","targetKey","stripBOM","inherits","superConstructor","toFlatObject","destObj","propFilter","merged","endsWith","searchString","forEachEntry","pair","matchAll","regExp","freezeMethods","toObjectSet","arrayOrString","toCamelCase","toFiniteNumber","generateString","alphabet","isSpecCompliantForm","toJSONObject","reducedValue","isThenable","AxiosError","fileName","lineNumber","columnNumber","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","dots","predicates","formData","metaTokens","defaultVisitor","useBlob","convertValue","isFlatArray","exposedHelpers","build","charMap","AxiosURLSearchParams","_pairs","toFormData","encoder","_encode","buildURL","serializeFn","serializedParams","hashmarkIndex","use","synchronous","runWhen","eject","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","URLSearchParams","protocols","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","importScripts","origin","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","transitional","transitionalDefaults","adapter","transformRequest","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","helpers","toURLEncodedForm","formSerializer","_FormData","env","parser","stringifySafely","transformResponse","JSONRequested","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","ignoreDuplicateOf","$internals","normalizeHeader","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parseHeaders","tokensRE","parseTokens","deleted","deleteHeader","normalized","formatHeader","targets","asStrings","computed","accessor","accessors","defineAccessor","accessorName","arg2","arg3","buildAccessors","mapped","headerValue","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","ERR_BAD_REQUEST","samplesCount","timestamps","firstSampleTS","head","chunkLength","startedAt","bytesCount","passed","freq","timer","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","speedometer","lengthComputable","progressBytes","rate","estimated","progressEventDecorator","asyncDecorator","msie","urlParsingNode","originURL","resolveURL","requestURL","toGMTString","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","newConfig","btoa","unescape","isURLSameOrigin","xsrfValue","resolveConfig","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","onloadend","onreadystatechange","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","upload","abort","parseProtocol","composeSignals","signals","AbortController","streamChunk","chunk","chunkSize","readStream","stream","reader","getReader","trackStream","onProgress","iterable","readBytes","ReadableStream","loadedBytes","highWaterMark","isFetchSupported","Request","Response","isReadableStreamSupported","encodeText","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","resolvers","ERR_NOT_SUPPORT","resolveBodyLength","getContentLength","_request","getBodyLength","composedSignal","toAbortSignal","requestContentLength","contentTypeHeader","isCredentialsSupported","isStreamResponse","responseContentLength","responseData","knownAdapters","http","xhr","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","deprecatedWarnings","formatMessage","ERR_DEPRECATED","assertOptions","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","configOrUrl","dummy","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","Cancel","promises","spread","isAxiosError","formToJSON","getAdapter","RestClient","_region","_service","_custom_header","_cancelTokenMap","ajax","urlOrApiInfo","parsed_url","custom_header","libraryHeaders","initParams","isAllResponse","custom_header_obj","signedParams","dateHeader","responseDate","requestDate","rawClientDate","_parseUrl","cancellableToken","signerServiceInfo","queryStringParameters","_sign","put","patch","del","hasCancelToken","getCancellableToken","updateRequestToBeCancellable","cancelTokenSource","apiName","cloud_logic_array","endpoints","signerServiceInfoParams","otherParams","endpoint_region","endpoint_service","signed_params","InternalGraphQLAPIClass","_api","otherOptions","_headerBasedAuth","defaultAuthenticationType","aws_appsync_authenticationType","aws_appsync_apiKey","NO_API_KEY","NO_CREDENTIALS","NO_FEDERATED_JWT","NO_CURRENT_USER","NO_AUTH_TOKEN","getGraphqlOperationType","graphql","paramQuery","authMode","authToken","def","operationType","createInstanceIfNotCreated","responsePromise","_graphql","_graphqlSubscribe","customGraphqlEndpoint","customEndpointRegion","_k","aws_appsync_region","aws_appsync_graphqlEndpoint","graphql_endpoint","graphql_endpoint_iam_region","InternalGraphQLAPI","RestAPIClass","custom","apiInfo","getEndpointInfo","apiConfig","RestAPI","InternalAPIClass","_restApi","_graphqlApi","restAPIConfig","graphQLAPIConfig","getInitWithCustomUserAgentDetails","Get","Post","Put","Patch","Head","apiUserAgentDetails","GraphQl","InternalAPI","APIClass","graphqlOperation","GraphQLAPI","GraphQLAPIClass","getRequests","listRequests","requestByEmailAndStatus","getSessions","getApprovers","listApprovers","getSettings","listEligibilities","getAccounts","getOUs","getOU","getPermissions","getMgmtPermissions","getIdCGroups","getUsers","getLogs","getUserPolicy","listGroups","createRequests","updateRequests","createSessions","deleteSessions","createApprovers","updateApprovers","deleteApprovers","createSettings","updateSettings","createEligibility","updateEligibility","deleteEligibility","fetchAccounts","accounts","fetchPermissions","permissions","fetchOUs","OU","getGroupMemberships","members","groupIds","fetchIdCGroups","fetchUsers","sessions","nextToken","fetchLogs","logs","fetchApprovers","approver","getSetting","createSetting","updateSetting","onUpdateRequests","onUpdateSessions","onPublishOUs","onPublishPermissions","setEmail","setDuration","durationError","setDurationError","justification","setJustification","justificationError","setJustificationError","setRole","roleError","setRoleError","account","setAccount","accountError","setAccountError","timeError","setTimeError","ticketNo","setTicketNo","ticketError","setTicketError","setAccounts","accountStatus","setAccountStatus","setPermissions","permissionStatus","setPermissionStatus","submitLoading","setSubmitLoading","mgmtPs","setMgmtPs","maxDuration","setMaxDuration","ticketRequired","setTicketRequired","approvalRequired","setApprovalRequired","accountId","permissionData","uniquePermissions","permission","concatenatePermissions","getPolicy","entitlement","fetchPolicy","userId","onPublishPolicy","policy","allAccounts","uniqueAccounts","concatenateAccounts","getMgmtPs","getMgmtAccountPs","sendRequest","requestTeam","accountName","roleId","addNotification","checkGroupMembership","groupsIds","groupId","approval","shouldSendRequest","approvalNotRequired","eligibility","acct","perm","checkApprovalNotRequired","account_approvers","approverGroupMembersRequired","ou","fetchOU","ou_approvers","checkApprovalAndApproverGroups","getDuration","activeContainer","setActiveContainer","newContainer","browserScrollbarSize","scrollDiv","initialBodyPaddingRightStyle","disableBodyScrolling","newBodyPaddingRight","setBodyScrollbarPadding","enableBodyScrolling","removeProperty","restoreBodyScrollbarPadding","focusFirst","returnFocusToRef","restoreFocusHandler","prevDisabled","setPrevDisabled","focusLast","InternalModal","modalRoot","InnerModal","headerId","lastMouseDownElementRef","breakpointsRef","closeAriaLabel","refObject","stickySentinelRef","isIntersecting","footerStuck","observerRef","setIsIntersecting","targetElement","IntersectionObserver","useIntersectionObserver","footerRef","overlay","lastClicked","scrollPaddingBottom","FocusLock","dialog","onCloseButtonClick","joinString","AbstractSwitch","controlClassName","outlineClassName","showOutline","nativeControl","styledControl","descriptionBottomPadding","labelId","descriptionId","ariaLabelledByIds","ariaDescriptions","InternalCheckbox","checkboxRef","nativeControlProps","isOdd","FlexibleColumnLayout","minColumnWidth","containerWidth","targetColumnCount","calculcateCssColumnCount","shouldDisableGutters","gridTemplateColumns","times","COLUMN_DEFS","xxs","GridColumnLayout","borders","isTextGridVariant","shouldHaveHorizontalBorders","shouldHaveVerticalBorders","COLUMN_TRIGGERS","ColumnLayout","radioButtonRef","mergedRefs","cx","cy","InternalRadioGroup","generatedName","radioButtonRefIndex","itemRef","predicate","useRadioGroupForwardFocus","RadioButton","copyPreferences","pageSize","wrapLines","stripedRows","contentDensity","visibleContent","contentDisplay","stickyColumns","ModalContentLayout","InternalColumnLayout","PageSizePreference","WrapLinesPreference","StripedRowsPreference","ContentDensityPreference","StickyPreference","firstOrLast","preference","StickyColumnsPreference","firstColumns","lastColumns","CustomPreference","customPreference","setCustomState","InternalToggle","visibleIds","VisibleContentPreference","idPrefix","flatOptionsIds","selectionOption","optionGroupIndex","optionIndex","firstId","secondId","editable","outerGroupLabelId","optionGroup","groupLabelId","elementString","_target$ownerDocument","_target$ownerDocument2","isDocument","isHTMLElement","getOwnerDocument","handlerRef","useLatestValue","valueRef","useLazyMemo","useNodeRef","createAdjustmentFn","adjustments","accumulator","adjustment","valueAdjustment","isKeyboardEvent","KeyboardEvent","getEventCoordinates","TouchEvent","isTouchEvent","hasViewportRelativeCoordinates","Translate","Scale","scaleX","scaleY","Transform","easing","SELECTOR","findFirstFocusableNode","hiddenStyles","HiddenText","visuallyHidden","border","clip","clipPath","whiteSpace","DndMonitorContext","defaultScreenReaderInstructions","draggable","defaultAnnouncements","onDragStart","onDragOver","over","onDragEnd","onDragCancel","Accessibility","announcements","hiddenTextDescribedById","screenReaderInstructions","announce","setAnnouncement","liveRegionId","setMounted","registerListener","useDndMonitor","onDragMove","markup","Action","useSensor","sensor","defaultCoordinates","distanceBetween","sqrt","getRelativeTransformOrigin","eventCoordinates","sortCollisionsAsc","sortCollisionsDesc","centerOfRectangle","closestCenter","collisionRect","droppableRects","droppableContainers","centerRect","collisions","droppableContainer","distBetween","getIntersectionRatio","targetArea","entryArea","intersectionArea","rectIntersection","intersectionRatio","getRectDelta","rect1","rect2","createRectAdjustmentFn","getAdjustedRect","parseTransform","transformArray","defaultOptions","ignoreTransform","getClientRect","transformOrigin","parsedTransform","translateX","translateY","getTransformAgnosticClientRect","getScrollableAncestors","scrollParents","findScrollableAncestors","scrollingElement","isSVGElement","overflowRegex","isScrollable","isFixed","getFirstScrollableAncestor","firstScrollableAncestor","getScrollableElement","getScrollXCoordinate","getScrollYCoordinate","getScrollCoordinates","Direction","isDocumentScrollingElement","getScrollPosition","scrollingContainer","minScroll","maxScroll","isTop","isLeft","isBottom","isRight","defaultThreshold","getScrollDirectionAndSpeed","scrollContainerRect","acceleration","thresholdPercentage","speed","Backward","Forward","getScrollElementRect","getScrollOffsets","scrollableAncestors","scrollIntoViewIfNeeded","Rect","scrollOffsets","axis","getScrollOffset","currentOffsets","scrollOffsetsDeltla","Listeners","_this$target","_this$target2","hasExceededDistance","dx","dy","EventName","KeyboardCode","defaultKeyboardCodes","Space","Enter","defaultKeyboardCoordinateGetter","currentCoordinates","KeyboardSensor","autoScrollEnabled","referenceCoordinates","windowListeners","handleKeyDown","handleCancel","attach","handleStart","Resize","VisibilityChange","Keydown","activeNode","onStart","keyboardCodes","coordinateGetter","scrollBehavior","handleEnd","newCoordinates","coordinatesDelta","scrollDelta","scrollElementRect","clampedCoordinates","canScrollX","canScrollY","newScrollCoordinates","canScrollToNewCoordinates","behavior","scrollBy","handleMove","coordinates","onMove","onEnd","detach","isDistanceConstraint","isDelayConstraint","activators","onActivation","activator","activatorNode","AbstractPointerSensor","listenerTarget","EventTarget","getEventListenerTarget","activated","initialCoordinates","documentListeners","_getEventCoordinates","removeTextSelection","activationConstraint","DragStart","ContextMenu","Click","SelectionChange","_getEventCoordinates2","tolerance","distance","_this$document$getSel","PointerSensor","super","events$1","MouseButton","RightClick","events$2","AutoScrollActivator","TraversalOrder","useAutoScroller","Pointer","canScroll","draggingRect","interval","TreeOrder","pointerCoordinates","scrollableAncestorRects","scrollIntent","previousDelta","previousIntent","defaultScrollIntent","useScrollIntent","setAutoScrollInterval","clearAutoScrollInterval","intervalRef","useInterval","scrollSpeed","scrollDirection","DraggableRect","scrollContainerRef","autoScroll","sortedScrollableAncestors","setup","MeasuringStrategy","MeasuringFrequency","useInitialValue","computeFn","previousValue","handleResize","defaultMeasure","fallbackRect","measureRect","currentRect","isConnected","mutationObserver","handleMutations","defaultValue$1","useScrollOffsetsDelta","initialScrollOffsets","hasScrollOffsets","useWindowRect","getWindowClientRect","defaultValue$2","getMeasurableNode","defaultSensors","defaultData","defaultMeasuringConfiguration","droppable","strategy","WhileDragging","frequency","Optimized","dragOverlay","DroppableContainersMap","_super$get","getEnabled","getNodeFor","_this$get$node$curren","_this$get","defaultPublicContext","activatorEvent","activeNodeRect","containerNodeRect","draggableNodes","setRef","measuringConfiguration","measureDroppableContainers","windowRect","measuringScheduled","defaultInternalContext","ariaDescribedById","InternalContext","PublicContext","getInitialState","translate","containers","DragMove","DragEnd","DragCancel","RegisterDroppable","SetDroppableDisabled","UnregisterDroppable","RestoreFocus","previousActivatorEvent","previousActiveId","draggableNode","focusableNode","applyModifiers","modifiers","ActiveDraggableContext","Status","DndContext","accessibility","sensors","collisionDetection","measuring","dispatchMonitorEvent","registerMonitorListener","_listener$type","useDndMonitorProvider","Uninitialized","isInitialized","Initialized","activeId","activeRects","initial","translated","_node$data","activeSensor","setActiveSensor","setActivatorEvent","latestProps","draggableDescribedById","enabledDroppableContainers","useMeasuringConfiguration","dragging","setQueue","containersRef","Always","BeforeDragging","disabledRef","useDroppableMeasuring","cachedNode","useCachedNode","activationCoordinates","autoScrollOptions","activeSensorDisablesAutoscroll","autoScrollGloballyDisabled","getAutoScrollerOptions","initialActiveNodeRect","useInitialRect","rectDelta","useLayoutShiftScrollCompensation","layoutShiftCompensation","sensorContext","draggingNode","draggingNodeRect","scrollAdjustedTranslate","overNode","_sensorContext$curren","setRect","handleNodeChange","useDragOverlayMeasuring","_dragOverlay$nodeRef$","_dragOverlay$rect","usesDragOverlay","nodeRectDelta","previousNode","useScrollableAncestors","firstElement","measureRects","useRects","modifiedTranslate","overlayNodeRect","scrollCoordinates","setScrollCoordinates","prevElements","previousElements","scrollableElement","useScrollOffsets","scrollAdjustment","activeNodeScrollDelta","overId","firstCollision","getFirstCollision","setOver","adjustScale","_over$rect","instantiateSensor","Sensor","sensorInstance","Initializing","createHandler","cancelDrop","bindActivatorToSensorInstantiator","activeDraggableNode","dndKit","activationContext","capturedBy","getSyntheticHandler","useCombineActivators","teardownFns","teardown","useSensorSetup","overContainer","publicContext","internalContext","NullContext","defaultRole","ID_PREFIX","useDraggable","roleDescription","isDragging","setActivatorNodeRef","useSyntheticListeners","dataRef","useDndContext","ID_PREFIX$1","defaultResizeObserverConfig","AnimationManager","clonedChildren","setClonedChildren","previousChildren","defaultTransform","NullifiedContextProvider","baseStyles","touchAction","defaultTransition","PositionedOverlay","scaleAdjustedTransform","defaultDropAnimationSideEffects","originalStyles","defaultDropAnimationConfiguration","keyframes","final","sideEffects","useDropAnimation","activeDraggable","measurableNode","finalTransform","animationKeyframes","firstKeyframe","lastKeyframe","onfinish","createDefaultDropAnimation","DragOverlay","dropAnimation","dropAnimationConfig","wrapperElement","useKey","modifiedTransform","arrayMove","newArray","getSortedRects","isValidIndex","rectSortingStrategy","overIndex","newRects","defaultScale$1","verticalListSortingStrategy","fallbackActiveRect","_rects$activeIndex","overIndexRect","itemGap","clientRects","previousRect","nextRect","getItemGap$1","containerId","disableTransforms","useDragOverlay","sortedRects","SortableContext","userDefinedItems","disabledProp","previousItemsRef","itemsHaveChanged","itemsEqual","normalizeDisabled","defaultNewIndexGetter","defaultAnimateLayoutChanges","isSorting","wasDragging","previousContainerId","disabledTransition","defaultAttributes","useSortable","animateLayoutChanges","userDefinedAttributes","localDisabled","customData","getNewIndex","localStrategy","resizeObserverConfig","globalDisabled","globalStrategy","_localDisabled$dragga","_localDisabled$droppa","normalizeLocalDisabled","sortable","itemsAfterCurrentSortable","isOver","setDroppableNodeRef","resizeObserverConnected","callbackId","resizeObserverDisabled","updateMeasurementsFor","resizeObserverTimeout","newElement","previousElement","useDroppable","setDraggableNodeRef","useCombinedRefs","displaceItem","shouldDisplaceDragSource","dragSourceDisplacement","shouldAnimateLayoutChanges","derivedTransform","setDerivedtransform","previousIndex","useDerivedTransform","getTransition","hasSortableData","Handle","DragHandle","hideFocus","handleStyles","componentPrefix","getClassName","ContentDisplayOption","dragHandleAriaLabel","dragHandleAttributes","alwaysVisible","DraggableOption","combinedListeners","sorting","Blur","scrolled","getCoordinatesDelta","applyScroll","useDragAndDropReorder","sortedOptions","isKeyboard","positionDelta","activeItemId","setActiveItemId","getClosestId","closestId","activeDroppable","newDroppable","isAfterActive","rectCoordinates","useSensors","activeItem","collidingContainer","getCollidingContainer","currentTargetIndex","isEscape","setActiveItem","ContentDisplayPreference","liveAnnouncementDndStarted","liveAnnouncementDndItemReordered","liveAnnouncementDndItemCommitted","liveAnnouncementDndDiscarded","dragHandleAriaDescription","titleId","optionsById","getSortedOptions","activeOption","isFirstAnnouncement","initialIndex","currentIdex","finalIndex","useLiveAnnouncements","initialPosition","currentPosition","isInitialPosition","finalPosition","renderedDragHandleAriaDescription","oldIndex","CollectionPreferences","confirmLabel","cancelLabel","onConfirm","visibleContentPreference","contentDisplayPreference","pageSizePreference","wrapLinesPreference","stripedRowsPreference","contentDensityPreference","stickyColumnsPreference","modalVisible","setModalVisible","temporaryPreferences","setTemporaryPreferences","dialogPreviouslyOpen","onCancelListener","hasContentOnTheLeft","hasContentOnTheRight","changedPreferences","mergePreferences","newPref","oldPref","newObj","prefNames","prefName","onConfirmListener","visibleItems","Box","ToolsHeader","pagination","isSmall","hasTools","SelectionControl","selectionType","onShiftToggle","onFocusUp","onFocusDown","focusedComponent","onFocusedComponentChange","isMultiSelection","setShiftState","nativeInput","stud","applyTrackBy","trackBy","getItemKey","getTrackableValue","getColumnKey","toContainerVariant","getVisibleColumnDefinitions","columnDisplay","visibleColumns","columnDefinitions","columnDefinitionsById","getVisibleColumnDefinitionsFromColumnDisplay","getVisibleColumnDefinitionsFromVisibleColumns","getStickyClassNames","padLeft","lastLeft","lastRight","SELECTION_ITEM","findSelectionControlByIndex","rootContainer","selectionStyles","useFocusMove","totalItems","moveFocus","sourceElement","selectionRoot","moveFocusDown","moveFocusUp","itemNode","selectionItem","ItemSet","focusMarkers","useSelection","isItemDisabled","onSelectionChange","shiftPressed","setShiftPressed","lastClickedItem","setLastClickedItem","selectionName","finalSelectedItems","selectedSet","itemIndexesMap","isItemSelected","getItemState","allDisabled","allEnabledSelected","handleToggleAll","requestedItems","newSelectedItems","deselectItems","selectItems","selectedItem","newItem","handleToggleItem","lastClickedItemIndex","currentItemIndex","getRequestedItems","getSelectAllProps","selectionGroupLabel","allItemsSelectionLabel","getItemSelectionProps","itemSelectionLabel","updateShiftToggle","stateToIcon","ascending","descending","stateToAriaSort","getSortingIconName","sortingState","DEFAULT_WIDTH","checkProperty","WidthsContext","totalWidth","columnWidths","updateColumn","ColumnWidthsProvider","tableRef","visibleColumnDefinitions","resizableColumns","hasSelection","setColumnWidths","lastVisible","headerEl","colIndex","headerCellStyles","readWidths","newWidth","oldWidths","updateWidths","AUTO_GROW_START_TIME","AUTO_GROW_INTERVAL","AUTO_GROW_INCREMENT","Resizer","showFocusRing","setIsDragging","headerCell","setHeaderCell","autoGrowTimeout","onFinishStable","onDragStable","resizerHasFocus","setResizerHasFocus","headerCellWidth","setHeaderCellWidth","rootElement","tableStyles","tableElement","tracker","scrollParent","leftEdge","rightEdge","updateTrackerPosition","scrollParentLeft","updateColumnWidth","resizeColumn","cellLeft","onAutoGrow","resizer","ResizeTracker","AsyncStore","storedListener","selectionColumnId","useStickyColumns","stickyColumnsFirst","stickyColumnsLast","StickyColumnsStore","cellsRef","hasStickyColumns","updateStickyStyles","updateCellStyles","wrapperState","updateWrapperStyles","s1","s2","scrollPaddingLeft","scrollPaddingRight","setWrapper","setTable","setCell","columnId","useStickyCellStyles","cellRef","refCallback","cellState","isCellStatesEqual","cellElement","cellStyles","cellOffsets","stickyWidthLeft","stickyWidthRight","isStuckToTheLeft","isStuckToTheRight","generateCellStyles","lastLeftStickyColumnIndex","lastRightStickyColumnIndex","stickySide","isFirstColumn","stickyColumnOffsetLeft","stickyColumnOffsetRight","updateCellOffsets","firstColumnsWidths","cellWidth","lastColumnsWidths","columnIndex","wrapperWidth","hadStickyColumns","updateScroll","wrapperScrollLeft","wrapperScrollWidth","wrapperClientWidth","tablePaddingLeft","tablePaddingRight","TableHeaderCell","activeSortingColumn","sortingDescending","sortingDisabled","onResizeFinish","isEditable","stickyState","sortingComparator","sortingField","sorted","isSorted","sortingColumn","sortingStatus","getSortingStatus","isDescending","editConfig","editIconAriaLabel","Thead","outerRef","onFocusMove","onSortingChange","singleSelectionHeaderAriaLabel","stuck","headerCellClass","selectionCellClass","widthOverride","useEffectOnUpdate","isFirstRender","TableTdElement","isRowHeader","isFirstRow","isLastRow","isSelected","isPrevSelected","isEvenRow","hasFooter","InlineEditor","onEditEnd","submitEdit","__onRender","currentEditLoading","setCurrentEditLoading","currentEditValue","setCurrentEditValue","focusLockRef","cellContext","finishEdit","clickAwayRef","awayRef","onClickStable","useClickAway","validation","editingCell","activateEditLabel","evt","cancelEditLabel","submitEditLabel","submittingEditText","submitHandlerFallback","TableCellEditable","isEditing","onEditStart","successfulEdit","editActivateRef","tdNativeAttributes","hasHover","setHasHover","hasFocus","setHasFocus","showIcon","successfulEditLabel","TableBodyCell","calculateScrollingOffset","stickyRect","containerRect","scrollUpBy","pageYOffset","theadRef","secondaryTheadRef","secondaryTableRef","tableWrapperRef","syncColumnHeaderWidths","fromCells","toCells","syncSizes","marginTop","scrollToItem","stickyRef","scrollToTop","scrollingOffset","scrollToRow","scrollDist","theadProps","secondaryWrapperRef","tableHasHeader","setFocusedComponent","tableEl","wrapperEl","scrollbarEl","scrollbarContentEl","hasContainingBlock","consideredFooterHeight","tableWidth","scrollbarHeight","wrapperElRect","tableElRect","scrollbarRef","scrollbarContentRef","setHasContainingBlock","hasOverflowParent","setHasOverflowParent","resizeHandler","useStickyScrollbar","useEventListenersSingleton","setTarget","handleMouseDown","tableRoot","numRows","focusableColumns","cols","maxColumnIndex","minColumnIndex","focusCell","rowIndex","cellIndex","iterateTableCells","rIndex","cIndex","editButton","shiftFocus","vertical","focusedCell","newRowIndex","newColumnIndex","handleArrowKeyEvents","closest","InternalTable","stickyHeader","stickyHeaderVerticalOffset","onRowClick","onRowContextMenu","onEditCancel","onColumnWidthsChange","totalItemsCount","firstIndex","renderAriaLive","wrapperMeasureRef","wrapperRefObject","tableMeasureRef","tableRefObject","stickyHeaderRef","currentEditCell","setCurrentEditCell","lastSuccessfulEditCell","setLastSuccessfulEditCell","cancelEdit","useScrollSync","onRowClickHandler","onRowContextMenuHandler","tableCell","useRowEvents","checkColumnWidths","checkSortingState","computedVariant","hasHeader","visibleColumnsWithSelection","columnIds","it","widthsDetail","widthsChanged","widths","wrapperProps","tableLabel","getMouseDownTarget","mouseDownTargetRef","useMouseDownTarget","wrapWithInlineLoadingState","useTableFocusNavigation","toolsHeaderWrapper","toolsHeaderHeight","StickyHeader","colSpan","firstVisible","isEven","editCancelled","StickyScrollbar","isItemGroup","isLinkItem","getItemTarget","indexIncludes","indexEquals","arrow","PRIORITY_MAPPING","RECTANGLE_CALCULATIONS","canRectFit","intersectRectangles","rectangles","boundingOffset","INITIAL_STYLES","PopoverContainer","trackRef","trackKey","bodyRef","popoverRef","popoverStyle","setPopoverStyle","internalPosition","setInternalPosition","positionHandlerRef","updatePositionHandler","popover","descendant","upperNode","nodeContains","prevTop","prevLeft","viewportRect","getViewportRect","trackRect","arrowRect","containingBlock","containingBlockRect","bodyBorderWidth","borderWidth","contentBoundingBox","newInternalPosition","preferred","viewport","bestPositionOutsideViewport","largestArea","fitsInContainer","fitsInViewport","boundingRectangles","availableArea","defaultOffset","optimisedOffset","fitIntoContainer","getDocumentRect","popoverOffset","toRelativePosition","trackRelativeOffset","newTrackOffset","refreshPosition","PopoverBody","showDismissButton","overflowVisible","labelledById","dismissButtonFocused","dismissButtonRef","shouldTrapFocus","dialogProps","DEFAULT_OPEN_TIMEOUT_IN_MS","Tooltip","openDelayed","useTooltipOpen","portalClasses","Arrow","useHiddenDescription","targetProps","descriptionEl","getMenuItemProps","MenuItem","menuItemRef","isDisabledWithReason","disabledReason","menuItemProps","menuItem","MenuItemContent","tooltipPosition","hasIcon","hasExternal","MenuItemIcon","ExternalIcon","onItemActivate","highlightItem","hasCategoryHeader","isKeyboardHighlighted","isLink","onHover","onGroupToggle","targetItem","isHighlighted","isKeyboardHighlight","isExpanded","ItemsList","expandable","categoryDisabled","MobileExpandableGroup","hasExpandableGroups","MobileExpandableCategoryElement","ExpandableCategoryElement","CategoryElement","ItemElement","createItemsTree","itemToIndex","indexToItem","flatIndices","traverseItems","indexKey","stringifyIndex","parseIndex","getSequentialIndex","nextIndexKey","getParentIndex","act","parentIndex","getNext","isInRestrictedView","tryMove","isSameLevel","useButtonDropdown","onItemClick","onItemFollow","onReturnFocus","expandGroup","collapseGroup","setIsUsingMouse","targetIndex","setTargetIndex","setExpandedIndex","isUsingMouse","nextIndex","moveHighlightOneStep","firstChildIndex","useHighlightedMenu","openStateProps","moveHighlightOnOpen","doVerticalNavigation","actOnParentDropdown","openAndSelectFirst","activate","isEnter","InternalButtonDropdown","expandableGroups","customTriggerBuilder","handleMouseEvent","clickHandler","canBeOpened","ButtonDropdown","SearchResults","InternalTextFilter","countText","onDelayedChange","searchResultsId","showResults","TextFilter","defaultAriaLabels","nextPageLabel","paginationLabel","previousPageLabel","pageLabel","pageNumber","PageButton","pageIndex","isCurrent","PageNumber","InternalPagination","openEnd","currentPageIndex","pagesCount","onNextPageClick","onPreviousPageClick","leftDots","leftIndex","rightIndex","rightDots","totalPagesCount","isOpenEnd","leftDelta","numberOfControls","rightDelta","upperLimit","getPaginationState","pageNumberLabelFn","handlePageClick","requestedPageIndex","requestedPageAvailable","defaultFilteringFunction","filteringFields","lowFilteringText","parseIsoDate","isoDate","compareDates","dateToCompare","startOfDay","compareTimestamps","setHours","filterUsingOperator","itemValue","tokenValue","operator","comparisonResult","filterByToken","filteringPropertiesMap","propertyKey","operators","fixupFalsyValues","freeTextFilter","propertyFilter","filteringFunction","filteringProperties","defaultOperator","operatorMap","tokens_1","DEFAULT_PAGE_SIZE","processItems","actualPageIndex","filteredItemsCount","propertyFilteringQuery","filtering","propertyFiltering","comparator","row1","row2","localeCompare","allPageResult","getPagesCount","normalizePageIndex","currentPage","paginate","allPageItems","processSelectedItems","itemsAreEqual","items1","items2","set1","collectionReducer","createActions","collectionRef","setFiltering","setSorting","setCurrentPage","setSelectedItems","setPropertyFiltering","useCollection","allItems","selection","defaultSelectedItems","defaultState","defaultPage","defaultFilteringText","defaultQuery","useCollectionState","keepSelection","filteringOptions","collectionProps","propertyFilterProps","paginationProps","createSyncProps","status_type","COLUMN_DEFINITIONS","MyCollectionPreferences","setPreferences","EmptyState","subtitle","ValueWithLabel","setAllItems","confirmLoading","setConfirmLoading","refreshLoading","setRefreshLoading","tableLoading","setTableLoading","setAction","comment","setComment","commentError","setCommentError","modalHeader","setmodalHeader","commentRequired","setCommentRequired","views","and","approvers","createdAt","getRequest","comments","handleSelect","_Fragment","TextContent","TokenLimitToggle","allHidden","numberOfHiddenOptions","numberOfHiddenOptionLabel","limitShowFewer","limitShowMore","tokenSelector","toggleButtonSelector","TokenList","alignment","after","removedItemIndex","tokenListRef","tokenElements","toggleButton","activeItemIndices","closestPrevIndex","NEGATIVE_INFINITY","closestNextIndex","POSITIVE_INFINITY","nextElement","prevElement","useTokenFocusController","hasHiddenItems","hasVisibleItems","errorId","DismissButton","InternalTokenGroup","setRemovedItemIndex","InternalMultiselect","deselectAriaLabel","tokenLimit","hideTokens","filtered","isAllChildrenSelected","optionsArray","union","visibleOptions","unselect","newSelectedOptions","intersection","multiSelectAriaLabelId","option__label","showTokens","tokenGroupI18nStrings","tokenLimitShowFewer","tokenLimitShowMore","optionToDeselect","Multiselect","Spinner","ExpandableSection","Checkbox","Hierarchy","resource","handleToggle","setResource","defaultType","setSelectedOption","selectTypeOptions","defaultOption","optionSet","prepareSelectOptions","SEARCHABLE_COLUMNS","selectedType","matchesType","filteringTextLowerCase","handleAdd","deleteVisible","setDeleteVisible","editVisible","setEditVisible","Type","setType","typeError","setTypeError","approverError","setApproverError","resourceError","setResourceError","ous","setOUs","ouStatus","setOUStatus","approverList","setApproverList","approverStatus","setApproverStatus","setApprover","getAllApprovers","handleDismiss","onTypeChange","addApprovers","Ous","DisplayName","GroupId","delApprover","editApprover","ContentLayout","Toggle","_props$orientation","orientation","orientationMargin","dashed","plain","orientationPrefix","hasChildren","hasCustomMarginLeft","hasCustomMarginRight","innerStyle","marginRight","expiry","setExpiry","expiryError","setExpiryError","setComments","setApproval","sesNotificationsEnabled","setSesNotificationsEnabled","snsNotificationsEnabled","setSnsNotificationsEnabled","slackNotificationsEnabled","setSlackNotificationsEnabled","slackToken","setSlackToken","slackTokenError","setSlackTokenError","sesSourceEmail","setSesSourceEmail","sesSourceEmailError","setSesSourceEmailError","sesSourceArn","setSesSourceArn","sesSourceArnError","setSesSourceArnError","setGroups","groupStatus","setGroupStatus","teamAdminGroup","setTeamAdminGroup","teamAuditorGroup","setTeamAuditorGroup","slackAppInstallUrl","display_information","background_color","features","bot_user","display_name","always_online","oauth_config","bot","settings","org_deploy_enabled","socket_mode_enabled","token_rotation_enabled","_data$duration","_data$expiry","_data$comments","_data$ticketNo","_data$approval","_data$sesNotification","_data$snsNotification","_data$slackNotificati","_data$sesSourceEmail","_data$sesSourceArn","_data$slackToken","_data$teamAdminGroup","_data$teamAuditorGrou","_item$duration","_item$expiry","_item$comments","_item$ticketNo","_item$approval","_item$sesNotification","_item$snsNotification","_item$slackNotificati","_item$sesSourceEmail","_item$sesSourceArn","_item$slackToken","_item$teamAdminGroup","_item$teamAuditorGrou","shapeCls","otherProps","DotChartOutlined","DotChartOutlinedSvg","getWidth","_props$rows","rowList","getComponentProps","Skeleton","_props$avatar","avatar","_props$title","_props$paragraph","paragraph","avatarNode","contentNode","hasAvatar","hasTitle","hasParagraph","avatarProps","getAvatarBasicProps","$title","paragraphNode","titleProps","getTitleBasicProps","Title","paragraphProps","basicProps","getParagraphBasicProps","Paragraph","SkeletonButton","Avatar","SkeletonAvatar","SkeletonInput","SkeletonImage","SkeletonNode","valueNode","formatter","precision","decimalSeparator","_props$groupSeparator","groupSeparator","negative","int","decimal","padEnd","WrapperStatistic","cons","configProps","basicPrefixCls","withConfigConsumer","valueStyle","_props$value","valueRender","_props$decimalSeparat","StatisticNumber","timeUnits","formatCountdown","_config$format","leftDuration","escapeRegex","keepList","templateText","replacedText","formatTimeStr","Countdown","countdown","syncTimer","Statistic","createTime","ends","awsDateTime","toLocaleString","Timer","convertAwsDateTime","defaultStatus","selectStatusOptions","selectedStatus","matchesStatus","cancelVisible","setCancelVisible","setExpand","requests","getUserRequests","updatedAt","updateItems","Details","csvLink","click","getSessionList","eventID","eventSource","AddSessionLogs","endTime","getSessionLogs","approver_ids","expireAt","getQueryId","deleteSessionLogs","queryId","addMeta","viewLogs","setViewLogs","or","revoker","revokeComment","Logs","Grid","team","Alert","RESPONSIVENESS_BUFFER","useTopNavigation","identity","utilities","virtualRef","hasSearch","hasTitleWithLogo","responsiveStates","canHideSearch","canHideTitle","states","utility","hideUtilityText","hideSearch","hiddenUtilties","disableUtilityCollapse","hideUtilities","hideTitle","generateResponsiveStateKeys","responsiveState","setResponsiveState","recalculateFit","availableWidth","getContentBoxWidth","sizeConfiguration","fullIdentityWidth","titleWidth","searchSlotWidth","searchUtilityWidth","utilitiesLeftPadding","utilityWithLabelWidths","utilityWithoutLabelWidths","menuTriggerUtilityWidth","possibleStates","searchWidth","utilitiesWidth","sum","menuTriggerWidth","determineBestResponsiveState","containerQueryRef","onVirtualMount","isSearchMinimized","setSearchMinimized","isSearchExpanded","onSearchUtilityClick","offsetRight","buttonDropdownStyles","MenuDropdown","dropdownTrigger","Utility","hideText","shouldHideText","disableTextCollapse","shouldShowTitle","checkSafeUrlRecursively","itemOrGroup","ViewContext","useNavigate","FOCUS_GROUP","FOCUS_DISABLED","facade","useCallbackRef","assignRef","hiddenGuard","InFocusGuard","ItoI","innerCreateMedium","assigned","medium","useMedium","assignSyncMedium","assignMedium","pendingQueue","executeQueue","cycle","createMedium","mediumFocus","mediumBlur","mediumEffect","mediumSidecar","createSidecarMedium","emptyArray","realObserved","setObserved","observed","originalFocusedElement","noFocusGuards","persistentFocus","crossFrame","allowTextSelection","whiteList","hasPositiveIndices","_props$shards","shards","_props$as","_props$lockProps","lockProps","SideCar","sideCar","shouldReturnFocus","returnFocus","focusOptions","onActivationCallback","onDeactivationCallback","onDeactivation","allowDefer","returnFocusTo","howToReturnFocus","returnFocusOptions","setObserveNode","newObserved","constants","hasLeadingGuards","hasTailingGuards","reducePropsToState","handleStateChangeOnClient","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","getDisplayName","asArray","getActiveElement","getTopParent","getAllAffectedNodes","currentNode","contained","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","filterNested","focusInsideIframe","topNode","focusInside","focusGuard","isVisibleUncached","checkParent","DOCUMENT_NODE","isElementHidden","DOCUMENT_FRAGMENT_NODE","isVisibleCached","visibilityCache","getDataset","isHTMLInputElement","isRadioElement","isGuard","isNotAGuard","isDefined","correctNode","findSelectedRadio","pickFirstFocus","pickFocusable","NEW_FOCUS","newFocus","innerNodes","outerNodes","lastNode","cnt","firstFocus","lastFocus","isOnGuard","lastNodeInside","indexDiff","firstNodeIndex","lastNodeIndex","correctedNodes","resultSet","correctNodes","correctedIndexDiff","returnFirstNode","returnLastNode","tabSort","tabDiff","orderByTabIndex","filterNegative","keepGuards","queryTabbables","queryGuardTabbables","withGuards","filterFocusable","isHTMLButtonElement","ariaDisabled","notHiddenInput","getTabbableNodes","topNodes","getAllTabbableNodes","parentAutofocusables","parentFocus","getParentAutofocusables","getParents","getCommonParent","nodeA","nodeB","parentsA","parentsB","currentParent","getTopCommonParent","baseActiveElement","leftEntry","rightEntries","activeElements","leftEntries","topCommon","subEntry","getFocusMerge","commonParent","anyFocusable","innerElements","autoFocusables","orderedInnerElements","srcNodes","dstNodes","remap","reorderNodes","newId","autoFocusable","allParentAutofocusables","autofocus","guardCount","lockDisabled","deferAction","isFreeFocus","focusIsHidden","lastActiveTrap","lastActiveFocus","lastPortaledElement","focusWasOutsideWindow","defaultWhitelist","autoGuard","allNodes","lastGuard","guard","focusAutoGuard","lockItem","extractRef","checkInHost","check","boundary","activateTrap","_lastActiveTrap","workingNode","portaledElement","workingArea","focusWhitelisted","withinHost","moveFocusInside","newActiveElement","getFocusabledIn","focusedIndex","onTrap","observerNode","onWindowBlur","withSideEffect","propsList","traps","trap","lastTrap","sameTrap","FocusLockCombination","FocusLockUI","FocusTrap","secondaryText","backIconAriaLabel","dismissIconAriaLabel","onBack","startIcon","endIcon","LinkItem","testId","ButtonItem","NavigationItem","headerSecondaryText","utilityIndex","ExpandableItem","dropdownComponentFactory","UtilityMenuItem","utilityComponentFactory","SubmenuItem","focusIndex","renderedDismissIconAriaLabel","renderedBackIconAriaLabel","UtilitiesView","SubmenuView","InternalTopNavigation","overflowMenuOpen","setOverflowMenuOpen","overflowMenuTriggerRef","isNarrowViewport","isMediumViewport","isLargeViewport","onIdentityClick","toggleOverflowMenu","menuTriggerVisible","isVirtual","showIdentity","showTitle","showSearchSlot","showSearchUtility","showUtilities","showMenuTrigger","virtual","inputs","searchDismissIconAriaLabel","searchIconAriaLabel","_utility","overflowMenuTriggerText","OverflowMenu","overflowMenuTitleText","overflowMenuDismissIconAriaLabel","overflowMenuBackIconAriaLabel","TopNavigation","Notification","setOU","ouError","setOuError","setPermission","permissionError","setPermissionError","users","setUsers","userStatus","setUserStatus","getAllEligibility","onResourceChange","addPolicy","UserName","UserId","Arn","delPolicy","editPolicy","revokeVisible","setrevokeVisible","revokeLoading","setRevokeLoading","awsExports","setNotifications","setCognitoGroups","User","setUser","setGroup","fetchUser","ToolsDrawer","Landing","Approvals","Review","View","Audit","Active","Approvers","Eligible","Settings","AuditApprovals","AuditSessions","Home","awsconfig","setcognitoGroups","setUserId","setGroupIds","setData","getUser","Nav","App","getElementById"],"sourceRoot":""}